Un linter est un instrument d'analyse statique de code source. Il sert à détecter des erreurs dans le code (très utile sur des langages interprétés comme JavaScript qui n'ont pas de phase de compilation) et des problèmes de syntaxe et de non-respect de style (tabulation vs espaces, indentation, etc.). Il existe des linters de code source pour la plupart des langages de programmation et d’autres compilateurs intègrent parfois le linting dans le processus de compilation. Aujourd'hui l'usage d'un linter dans les projets ne fait plus débat, c'est devenu presque une obligatoire.
ESLint est un utilitaire de linting JavaScript open source et un projet At-Large de la Fondation OpenJS. Il constitue une synthèse de plusieurs linters et est le standard de facto. Il regroupe toutes les fonctionnalités et tous les avantages de ses prédécesseurs. Voici un aperçu de qui a changé dans la version 7.0.0 de l’utilitaire :
Suppression du support de Node.js 8
Node.js 8 a atteint EOL (End of Life) en décembre 2019. En effet, le cycle de maintenance LTS de Node.js 8.x a expiré le 31 décembre 2019, ce qui signifie que Node 8 ne recevra plus de mises à jour, de corrections de bogues ou encore de correctifs de sécurité. Il y a aussi eu une modification des règles fondamentales de Node.js. Les dix règles Node.js/CommonJS du noyau ont été dépréciées et déplacées vers le plugin eslint-plugin-node. Plusieurs règles ont été mises à jour pour reconnaître les littéraux bigint et avertir sur plus de cas par défaut.
En outre, eslint:recommended a aussi été mis à jour avec quelques nouvelles règles : no-dupe-else-if, no-import-assign, et no-setter-return. ESLint prend désormais en charge les versions suivantes de Node.js : Node.js 10 ( 10.12.0 et supérieur) et Node.js 12 (et supérieur). Assurez-vous de mettre à niveau vers au moins Node.js 10.12.0 lorsque vous utilisez ESLint v7.0.0. Il est important de vérifier la version de Node.js prise en charge par votre éditeur lorsque vous utilisez ESLint via des intégrations d'éditeurs. Si vous ne pouvez pas le mettre à jour, l’équipe vous recommande alors de continuer à utiliser ESLint 6 jusqu'à ce que vous puissiez mettre à jour Node.js. Cela vous évitera les ennuis.
Amélioration de l'expérience développeur
- les modèles d'ignorance par défaut ont été mis à jour. À partir de cette version, ESLint n'ignore plus par défaut les fichiers .eslintrc.js et bower_components/*. En outre, il ignorera désormais par défaut les répertoires node_modules imbriqués ;
- ESLint va désormais lister les fichiers ayant une extension autre que .js s'ils sont explicitement définis dans les fichiers overrides[].files, pas besoin d'utiliser le drapeau --ext ! ;
- ESLint supporte maintenant les descriptions dans les commentaires de directive ;
- une validation supplémentaire a été ajoutée à la classe RuleTester pour améliorer le test des règles personnalisées dans les plugins ;
- ESLint va maintenant résoudre les plugins relatifs au fichier de configuration d'entrée. Cela signifie que les fichiers de configuration partagés qui sont situés en dehors du projet peuvent maintenant être colocalisés avec les plugins dont ils ont besoin ;
- à partir d'ESLint v7.0.0, les fichiers de configuration et les fichiers d'ignorance qui sont passés à ESLint en utilisant les drapeaux --config path/to/a-config et --ignore-path path/to/a-ignore CLI, respectivement, seront résolus à partir du répertoire de travail actuel plutôt que de l'emplacement du fichier. Cela permet aux utilisateurs d'utiliser des plugins partagés sans avoir à les installer directement dans leur projet.
Une nouvelle classe ESLint
La classe CLIEngine fournit une API synchrone qui bloque la mise en œuvre de fonctionnalités telles que le peluchage parallèle, la prise en charge des modules ES dans des configurations, des parseurs, des plugins et des formats partageables, et l'ajout de la possibilité d'afficher visuellement la progression des cycles de peluchage. La nouvelle classe ESLint fournit une API asynchrone que le noyau d'ESLint utilisera désormais à l'avenir. CLIEngine restera dans le noyau dans un avenir prévisible, mais pourrait être supprimé dans une future version majeure.
Plusieurs règles ont été mises à jour pour couvrir davantage de cas
Dans ESLint v7.0.0, plusieurs règles ont été améliorées et signalent désormais des erreurs supplémentaires, dont :
- la règle des paires d'accesseurs reconnaît désormais les membres de la classe par défaut ;
- la règle array-callback-return reconnaît maintenant la méthode flatMap ;
- la règle computed-property-spacing reconnaît maintenant les membres de la classe par défaut ;
- la règle func-names reconnaît maintenant les déclarations de fonctions dans les exportations par défaut ;
- la règle no-extra-parens reconnaît maintenant les parenthèses dans les cibles d'affectation ;
- la règle "no-dupe-class-members" reconnaît désormais les clés ;
- etc.
Corrections de bogues
- suppression de la catégorie Node.js et CommonJS du processus de construction ;
- correction de la chaîne de gauche de yoda pour exceptRange ;
- suppression du .js par défaut de l'option --ext CLI ;
- etc.
Source : ESLint v7.0.0
Et vous ?
Que pensez-vous de cette version de ESLint ?
Quel autre linter pour JavaScript utilisez-vous ? Quelles sont les raisons de votre choix ?
Voir aussi
Suivi des linters JavaScript, outils d'analyse statique de code source, ESLint en 4.19.0 et standardJS en 11.0.0
Node.js : eslint-scope, un paquet npm, a été infecté par un hacker pour lui permettre de voler des identifiants npm
npm : l'authentification à deux facteurs rendue obligatoire en bêta pour les mainteneurs sur les paquets indiqués comme protégés