Skip to content
This repository has been archived by the owner on Sep 18, 2024. It is now read-only.
/ eslint Public archive

Configuration ESLint stricte de l'agence Alsacréations

License

Notifications You must be signed in to change notification settings

alsacreations/eslint

Repository files navigation

Ce repo contient le paquet npm correspondant à la configuration ESLint de l'agence Alsacréations.

Ce qui est inclus

🤝 Configurations communes à plusieurs technologies

  • Règles communes à JavaScript et Vue/Nuxt

⚙️ Configuration JavaScript

  • Utilisation des règles ESLint de base (sans plugin)

💪 Configuration TypeScript

  • Utilisation du plugin @typescript-eslint.
  • Utilisation du parser @typescript-eslint/parser.

😎 Configuration Vue 3

  • Utilisation du plugin eslint-plugin-vue
  • Utilisation du parser vue-eslint-parser (ne rentre pas en conflit avec TypeScript)

💚 Configuration Nuxt

  • Utilisation du plugin @nuxtjs/eslint-plugin

🚀 Configuration Prettier avec option pour Astro

  • Utilisation du plugin prettier-plugin-astro

Installation automatique

# npm, yarn, pnpm
# Si besoin au préalable pnpm init (pour disposer d'un fichier package.json)
npx eslint-config-alsacreations@latest init

Installation manuelle

JavaScript et TypeScript (sans framework)

Base

# npm, yarn, pnpm
npm i --save-dev eslint-config-alsacreations @rushstack/eslint-patch eslint

Avec TS (optionnel)

# npm, yarn, pnpm
npm i --save-dev typescript

Avec Prettier (optionnel)

# npm, yarn, pnpm
npm i --save-dev prettier eslint-config-prettier
Vue (sans Nuxt)

Base

# npm, yarn, pnpm
npm i --save-dev eslint-config-alsacreations @rushstack/eslint-patch eslint-plugin-vue eslint

Avec TS (optionnel)

# npm, yarn, pnpm
npm i --save-dev @vue/eslint-config-typescript typescript

Avec Prettier (optionnel)

# npm, yarn, pnpm
npm i --save-dev prettier @vue/eslint-config-prettier
Nuxt

Base

# npm, yarn, pnpm
npm i --save-dev eslint-config-alsacreations @rushstack/eslint-patch @nuxtjs/eslint-config eslint

Avec TS (optionnel)

# npm, yarn, pnpm
npm i --save-dev @nuxtjs/eslint-config-typescript && npm uninstall @nuxtjs/eslint-config

Avec Prettier (optionnel)

# npm, yarn, pnpm
npm i --save-dev prettier @vue/eslint-config-prettier

Configuration

Puis ajouter un fichier de configuration à la racine .eslintrc.js ou équivalent.

require('@rushstack/eslint-patch/modern-module-resolution')

/* eslint-env node */
module.exports = {
  root: true,
  extends: [
    'eslint:recommended',

    'alsacreations/javascript',

    // /!\ Ne choisir que l'un ou l'autre
    'alsacreations/nuxt', // Nuxt tout seul
    'alsacreations/vue', // Vue tout seul

    // /!\ Ne choisir que l'un ou l'autre
    'alsacreations/solid', // Solid tout seul
    'alsacreations/solid-typescript', // Solid + TS

    // /!\ Ne choisir que l'un ou l'autre
    // /!\ Ne pas choisir 'alsacreations/nuxt' ni 'alsacreations/vue'
    'alsacreations/nuxt-typescript', // Nuxt + TS
    'alsacreations/vue-typescript', // Vue + TS

    // /!\ Ne pas choisir si 'alsacreations/nuxt-typescript' ou 'alsacreations/vue-typescript' sont utilisés
    'alsacreations/typescript', // TS tout seul

    // /!\ Ne choisir que l'un ou l'autre
    'alsacreations/prettier', // Prettier tout seul
    'alsacreations/prettier-vue', // Vue + Prettier
  ],
  parserOptions: {
    ecmaVersion: 'latest',
  },
}

Développement

  1. Forker le projet depuis ce repo.
  2. Installer pnpm si vous ne l'avez pas déjà.
  3. Installer les dépendances dans le projet pnpm install.

Créer une nouvelle configuration

  1. Créer un sous-dossier src/le-nom-configuration.
  2. Reprendre l'exemple des autres configurations.
  3. Ajouter votre nouvelle configuration dans le fichier src/index.ts.
  4. Créer une pull request vers la branche main de ce repo.

Conventions git

Utilisation de conventional commits. Depuis ces commits, le changelog de chaque release est automatisé.

Déployer une nouvelle version

  1. Se connecter à Github via la ligne de commande gh auth login.
  2. Lancer la commande pnpm run release à la racine du projet.