Installer rapidement eslint 9 sur un projet node


May 31, 2024 Node


Je vous partage ici mon retour d'expérience sur l'ajout de la version 9 d'eslint sur un projet node


Nous allons dans ce post voir comment mettre en place rapidement le linter eslint version 9 sur un projet javascript nodejs.

Le projet est écrit en nodejs (module commonJs) sans typescript

  1. Installation des packages  nécessaires

Si vous utilisez yarn adapter les commandes ci-dessous en utilisant yarn add -D <nom_package>

npm install --dev eslint
npm install --dev eslint-config-standard

npm install --dev eslint-plugin-import

npm install --dev eslint-plugin-n

npm install --dev eslint-plugin-promise

npm install --dev globals

  1. Configuration

Lancer la commande ci-dessous pour générer le fichier de config eslint.config.js

npm init @eslint/config@latest -- --config eslint-config-standard

Remplacer le fichier de config par le contenu ci-dessous qui permet de mettre en place la configuration standard et de désactiver quelques règles selon votre convenance

import js from "@eslint/js";
import globals from
"globals";
import nodePlugin from
"eslint-plugin-n";
import path from
'node:path'
import url from
'node:url'
import { FlatCompat } from
'@eslint/eslintrc'

export default [
 ...(new FlatCompat({baseDirectory: path.dirname(url.fileURLToPath(import.meta.url))}).extends(
'eslint-config-standard')),
 js.configs.recommended,
 ...nodePlugin.configs[
"flat/mixed-esm-and-cjs"],
 {
   rules: {
       semi: [
"warn", "always"],
       quotes: [
"warn", "single"],
       
"n/no-missing-require": ["off"],
       eqeqeq:
"off",
       
"quote-props": "warn",
       
"no-multiple-empty-lines": "warn",
       
"camelcase": "warn"
   }
 },
 {
   languageOptions: {
     sourceType:
"common",
     globals: {
       ...globals.node
     }
   },
   files: [
"src/**/*.js"],
   ignores: [
     
"node_modules",
     
"**/node_modules",
     
"**/*.config.mjs",
     
"!**/eslint.config.mjs"
   ]
 }
];

  1. Ajouter la commande dans le fichier package.json

Ci-dessous nous ajoutons la commande lint permettant de lancer le linter dans le répertoire src de notre projet

"scripts": {
     
"lint": " ./node_modules/.bin/eslint src"
},

Pour lancer le linter, faites :

npm run lint
ou
yarn lint

Ci-dessous une version avec plus de plugin installé

import js from '@eslint/js';
import globals from
'globals';
import nodePlugin from
'eslint-plugin-n';
import pluginPromise from
'eslint-plugin-promise';
import path from
'node:path';
import url from
'node:url';
import {FlatCompat} from
'@eslint/eslintrc';
import sonarjs from
'eslint-plugin-sonarjs';

export default [
  ...new FlatCompat({
      baseDirectory: path.dirname(url.fileURLToPath(import.meta.url))
  }).extends(
'eslint-config-standard'),
  js.configs.recommended,
  ...nodePlugin.configs[
'flat/mixed-esm-and-cjs'],
  pluginPromise.configs[
'flat/recommended'],
  sonarjs.configs.recommended,
  {
      rules: {
          semi:
'off',
          quotes:
'off',
         
         
"key-spacing": "off",
                 }
  },
  {
      languageOptions: {
          sourceType:
'commonjs',
          globals: {
              ...globals.node
          }
      },
      files: [
'src/**/*.js'],
      ignores: [
         
'node_modules',
         
'**/node_modules',
         
'**/*.config.mjs',
         
'!**/eslint.config.mjs'
      ]
  }
];


node