ESLint 10
Ce skill couvre ESLint 10.14.0 tel que documenté sur https://eslint.org/docs/latest/. Il contient ce qui diffère des habitudes : pièges de la flat config, valeurs par défaut surprenantes, API supprimées et les motifs recommandés par la documentation. Chaque affirmation dans les fichiers de référence se termine par la page dont elle est issue.
Comment naviguer
- Lisez les règles rapides ci-dessous. Elles couvrent les erreurs les plus fréquentes.
- Ouvrez le fichier de référence correspondant à la tâche, dans le tableau à la fin.
- Lorsque le code utilise
.eslintrc,env,context.getScope()ouFlatESLint, lisez d'abordreferences/migration.md.
Démarrage rapide
npm init @eslint/config@latest
// eslint.config.js
import js from "@eslint/js";
import globals from "globals";
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["dist/"]),
{
files: ["**/*.js", "**/*.mjs", "**/*.cjs"],
plugins: { js },
extends: ["js/recommended"],
languageOptions: { globals: { ...globals.browser } },
rules: { "no-unused-vars": "warn" },
},
]);
https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/configuration-files
- Node.js
^20.19.0,^22.13.0ou>=24. Les types TypeScript nécessitent TypeScript 5.3+. https://eslint.org/docs/latest/use/getting-started - Installez
eslintet@eslint/jslocalement comme dépendances de développement. Une installation globale n'est pas recommandée et les plugins doivent toujours être locaux.globalsest un package séparé. https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/migration-guide eslint.config.tsnécessite la dépendance de développementjiti>= 2.2.0 sur Node. https://eslint.org/docs/latest/use/configure/configuration-files
Règles rapides
Fichiers de configuration
- ESLint ne linte rien d'utile tant que vous n'étendez pas une configuration ou n'activez pas de règles. https://eslint.org/docs/latest/use/getting-started
- La recherche de configuration commence dans le répertoire de chaque fichier linté et remonte.
--configforce 1 fichier. https://eslint.org/docs/latest/use/configure/configuration-files , https://eslint.org/docs/latest/use/migrate-to-10.0.0 - Un objet sans
filess'applique à chaque fichier qu'un autre objet correspond. Une fois que vous lintez.ts,.mdou.json, limitez les règles JS avecfiles, et placez toujoursfilesà côté deextends. https://eslint.org/docs/latest/use/configure/configuration-files ignoresseul dans un objet (ignores globaux) peut correspondre à des répertoires. A côté d'autres clés, il ne correspond qu'aux fichiers :"dir/**", pas"dir/". PréférezglobalIgnores(). https://eslint.org/docs/latest/use/configure/configuration-files- Les fichiers dot sont lintés sauf s'ils sont ignorés. Seuls
**/node_modules/et.git/sont ignorés par défaut. https://eslint.org/docs/latest/use/configure/ignore , https://eslint.org/docs/latest/use/configure/configuration-files - Importez
.gitignoreavecincludeIgnoreFile(path, { gitignoreResolution: true })depuiseslint/config. https://eslint.org/docs/latest/use/configure/ignore - Pas d'environnements : déclarez les globales avec le package
globalsdanslanguageOptions.globals. https://eslint.org/docs/latest/use/configure/language-options - Les plugins, parseurs et processeurs sont des objets importés. Les processeurs ne sont jamais appliqués automatiquement. https://eslint.org/docs/latest/use/configure/migration-guide
- Inspectez ce qui correspond à un fichier avec
npx eslint --inspect-configou--print-config fichier.js. https://eslint.org/docs/latest/use/configure/debug
Règles et commentaires
- Une redéfinition de sévérité uniquement conserve les options précédentes, dans la configuration et dans les commentaires
/* eslint */. https://eslint.org/docs/latest/use/configure/rules , https://eslint.org/docs/latest/use/migrate-to-9.0.0 - Un commentaire en ligne ne peut pas charger un plugin. Un
/* eslint-enable */nu réactive chaque règle. https://eslint.org/docs/latest/use/configure/rules - Placez la raison après
--:// eslint-disable-next-line no-console -- raison. https://eslint.org/docs/latest/use/configure/rules /* eslint-env */est une erreur dans ESLint 10. Utilisez/* global nom */ou les globales de configuration. https://eslint.org/docs/latest/use/migrate-to-10.0.0no-unused-varssignale lescatch (e)inutilisés par défaut : écrivezcatch {. https://eslint.org/docs/latest/rules/no-unused-vars- N'activez pas
no-return-await. Utilisez un formateur ou ESLint Stylistic plutôt que les règles de mise en page principales. https://eslint.org/docs/latest/rules/no-return-await , https://eslint.org/docs/latest/use/core-concepts/glossary
CLI et CI
- Le code de sortie 1 signifie des erreurs (ou trop d'avertissements), 2 signifie une erreur de configuration ou interne. https://eslint.org/docs/latest/use/command-line-interface
--quietn'exécute pas les règles"warn", sauf si--max-warningsest également défini : alors elles s'exécutent mais ne sont pas rapportées. https://eslint.org/docs/latest/use/command-line-interface- Utilisez des guillemets pour les globs.
--fixgénère une erreur sur stdin : utilisez--fix-dry-run --format json. https://eslint.org/docs/latest/use/command-line-interface --cacheignore les dépendances entre fichiers : les règles typées et d'import peuvent être obsolètes. https://eslint.org/docs/latest/use/command-line-interface- Adoptez une règle stricte sur l'ancien code avec
eslint --fix --suppress-allet validezeslint-suppressions.json. https://eslint.org/docs/latest/use/suppressions
Règles personnalisées et intégrations
- Une règle est
{ meta, create }.meta.fixableetmeta.hasSuggestionssont requis pour corriger ou suggérer,meta.schemapour accepter des options. https://eslint.org/docs/latest/extend/custom-rules - Utilisez
context.sourceCode,context.filenameetsourceCode.getScope(node). Les méthodescontext.getX()ont disparu. https://eslint.org/docs/latest/use/migrate-to-10.0.0 , https://eslint.org/docs/latest/use/migrate-to-9.0.0 new ESLint({ fix: true })n'écrit rien tant queESLint.outputFixes(results)n'est pas appelé. https://eslint.org/docs/latest/integrate/nodejs-api- Donnez à un plugin
meta.name,meta.versionetmeta.namespacepour un débogage plus facile et un cache plus efficace. Le namespace permet àdefineConfig()de trouver le plugin sous un autre nom. https://eslint.org/docs/latest/extend/plugins
Anciens motifs
| Ancien | Actuel |
|---|---|
.eslintrc.*, eslintConfig dans package.json | eslint.config.js avec defineConfig() |
"extends": "eslint:recommended" | extends: ["js/recommended"] avec plugins: { js } |
env, /* eslint-env */ | languageOptions.globals, /* global */ |
.eslintignore, --ignore-path | globalIgnores(), includeIgnoreFile() |
overrides | Plus d'objets de configuration avec files |
--rulesdir, linter.defineRule() | Plugin en ligne plugins: { local: { rules } } |
--no-eslintrc | --no-config-lookup |
context.getScope(), context.getSourceCode() | sourceCode.getScope(node), context.sourceCode |
| Règles de style fonction | { meta, create } |
FlatESLint, LegacyESLint, FlatRuleTester | ESLint, RuleTester |
require-jsdoc, valid-jsdoc | eslint-plugin-jsdoc |
Détails et listes complètes : references/migration.md.
Fichiers de référence
| Fichier | Lisez-le pour |
|---|---|
| references/configuration.md | Noms et recherche de fichiers de configuration, configurations TypeScript, clés d'objet de configuration, correspondance files, extends, options de langage, globales, parseurs, processeurs, langages, débogage |
| references/ignoring-files.md | ignores global et non global, ignorer par défaut, fichiers dot, recettes pour ne pas ignorer, import .gitignore |
| references/rules-and-inline-config.md | Sévérités, fusion d'options, commentaires de configuration en ligne, directives de désactivation, linterOptions, corrections par rapport aux suggestions, corrections circulaires |
| references/cli.md | Globs, --fix, codes de sortie, --quiet, formateurs, cache, suppressions en masse, indicateurs de fonctionnalité, concurrence, serveur MCP |
| references/migration.md | Changements cassants d'ESLint 9 et 10, codemods, migration d'eslintrc à flat config, options de règles modifiées, plugins cassés |
| references/custom-rules.md | meta de règle, règles locales, context.report, corrections, suggestions, meta.schema, meta.defaultOptions, dépréciation, méthodes context supprimées |
| references/ast-scope-code-paths.md | Sélecteurs, méthodes SourceCode, portées, objets du gestionnaire de portée, événements de chemin de code, profilage |
| references/testing-rules.md | Valeurs par défaut de RuleTester, cas valides et invalides, assertions de correction et de suggestion, vérifications strictes, hooks de framework |
| references/plugins-and-shareable-configs.md | Objet plugin et meta, configurations de plugin, publication, configurations partageables, parseurs personnalisés, processeurs, langages, formateurs |
| references/nodejs-api.md | Options et méthodes d'ESLint, lintText, outputFixes, loadFormatter, LintResult, Linter, SourceCode |
| references/core-rules-problems.md | Règles que TypeScript couvre, variables inutilisées et non déclarées, ombres, conditions, erreurs asynchrones, pièges regex |
| references/core-rules-restrictions.md | Recettes no-restricted-imports, -globals, -properties, -exports, no-restricted-syntax, autres interdictions, limites de taille et de complexité |
| references/core-rules-style.md | Valeurs par défaut des règles de suggestion, valeurs par défaut des règles de mise en page, règles supprimées, options dépréciées |
Pages parcourues : SOURCES.md.