ESLint 10
Dieses Skill behandelt ESLint 10.14.0, wie auf https://eslint.org/docs/latest/ dokumentiert. Es enthält, was sich von der Gewohnheit unterscheidet: Flat-Config-Fallstricke, überraschende Standardwerte, entfernte APIs und die von den Docs empfohlenen Muster. Jede Behauptung in den Referenzdateien endet mit der Seite, von der sie stammt.
Navigation
- Lesen Sie die folgenden Schnellregeln. Sie fangen die häufigsten Fehler ab.
- Öffnen Sie die eine Referenzdatei, die zur Aufgabe passt, aus der Tabelle am Ende.
- Wenn der Code
.eslintrc,env,context.getScope()oderFlatESLintverwendet, lesen Sie zuerstreferences/migration.md.
Schnellstart
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.0oder>=24. TypeScript-Typen benötigen TypeScript 5.3+. https://eslint.org/docs/latest/use/getting-started - Installieren Sie
eslintund@eslint/jslokal als Dev-Abhängigkeiten. Eine globale Installation wird nicht empfohlen, und Plugins müssen weiterhin lokal sein.globalsist ein separates Paket. https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/migration-guide eslint.config.tsbenötigt die Dev-Abhängigkeitjiti>= 2.2.0 auf Node. https://eslint.org/docs/latest/use/configure/configuration-files
Schnellregeln
Konfigurationsdateien
- ESLint lintet nichts Nützliches, bis Sie eine Konfiguration erweitern oder Regeln aktivieren. https://eslint.org/docs/latest/use/getting-started
- Die Konfigurationssuche beginnt im Verzeichnis jeder gelinteten Datei und geht nach oben.
--configerzwingt eine Datei. https://eslint.org/docs/latest/use/configure/configuration-files , https://eslint.org/docs/latest/use/migrate-to-10.0.0 - Ein Objekt ohne
filesgilt für jede Datei, die ein anderes Objekt matcht. Sobald Sie.ts,.mdoder.jsonlinten, begrenzen Sie JS-Regeln mitfilesund setzen Siefilesimmer nebenextends. https://eslint.org/docs/latest/use/configure/configuration-files ignoresallein in einem Objekt (globale Ignores) kann Verzeichnisse matchen. Neben anderen Schlüsseln matcht es nur Dateien:"dir/**", nicht"dir/". Bevorzugen SieglobalIgnores(). https://eslint.org/docs/latest/use/configure/configuration-files- Dotfiles werden gelintet, sofern nicht ignoriert. Standardmäßig werden nur
**/node_modules/und.git/ignoriert. https://eslint.org/docs/latest/use/configure/ignore , https://eslint.org/docs/latest/use/configure/configuration-files - Importieren Sie
.gitignoremitincludeIgnoreFile(path, { gitignoreResolution: true })auseslint/config. https://eslint.org/docs/latest/use/configure/ignore - Keine Umgebungen: Deklarieren Sie Globals mit dem Paket
globalsinlanguageOptions.globals. https://eslint.org/docs/latest/use/configure/language-options - Plugins, Parser und Prozessoren sind importierte Objekte. Prozessoren werden niemals automatisch angewendet. https://eslint.org/docs/latest/use/configure/migration-guide
- Überprüfen Sie, was auf eine Datei zutrifft, mit
npx eslint --inspect-configoder--print-config file.js. https://eslint.org/docs/latest/use/configure/debug
Regeln und Kommentare
- Eine Nur-Schweregrad-Überschreibung behält die vorherigen Optionen, sowohl in der Konfiguration als auch in
/* eslint */-Kommentaren. https://eslint.org/docs/latest/use/configure/rules , https://eslint.org/docs/latest/use/migrate-to-9.0.0 - Ein Inline-Kommentar kann kein Plugin laden. Ein bloßes
/* eslint-enable */aktiviert jede Regel wieder. https://eslint.org/docs/latest/use/configure/rules - Setzen Sie den Grund nach
--:// eslint-disable-next-line no-console -- grund. https://eslint.org/docs/latest/use/configure/rules /* eslint-env */ist ein Fehler in ESLint 10. Verwenden Sie/* global name */oder Konfigurations-Globals. https://eslint.org/docs/latest/use/migrate-to-10.0.0no-unused-varsmeldet standardmäßig ungenutztecatch (e): Schreiben Siecatch {. https://eslint.org/docs/latest/rules/no-unused-vars- Aktivieren Sie
no-return-awaitnicht. Verwenden Sie einen Formatter oder ESLint Stylistic anstelle von Core-Layout-Regeln. https://eslint.org/docs/latest/rules/no-return-await , https://eslint.org/docs/latest/use/core-concepts/glossary
CLI und CI
- Exit-Code 1 bedeutet Fehler (oder zu viele Warnungen), 2 bedeutet einen Konfigurations- oder internen Fehler. https://eslint.org/docs/latest/use/command-line-interface
--quietführt"warn"-Regeln nicht aus, es sei denn, es ist auch--max-warningsgesetzt: Dann werden sie ausgeführt, aber nicht gemeldet. https://eslint.org/docs/latest/use/command-line-interface- Setzen Sie Globs in Anführungszeichen.
--fixwirft einen Fehler bei stdin: Verwenden Sie--fix-dry-run --format json. https://eslint.org/docs/latest/use/command-line-interface --cacheignoriert dateiübergreifende Abhängigkeiten: Typbewusste und Import-Regeln können veraltet sein. https://eslint.org/docs/latest/use/command-line-interface- Übernehmen Sie eine strenge Regel für alten Code mit
eslint --fix --suppress-allund committen Sieeslint-suppressions.json. https://eslint.org/docs/latest/use/suppressions
Benutzerdefinierte Regeln und Integrationen
- Eine Regel ist
{ meta, create }.meta.fixableundmeta.hasSuggestionssind erforderlich, um zu fixen oder Vorschläge zu machen,meta.schemaum Optionen zu akzeptieren. https://eslint.org/docs/latest/extend/custom-rules - Verwenden Sie
context.sourceCode,context.filenameundsourceCode.getScope(node). Diecontext.getX()-Methoden sind entfernt. 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 })schreibt nichts, bisESLint.outputFixes(results)aufgerufen wird. https://eslint.org/docs/latest/integrate/nodejs-api- Geben Sie einem Plugin
meta.name,meta.versionundmeta.namespacefür einfacheres Debugging und effektiveres Caching. Der Namespace ermöglichtdefineConfig(), das Plugin unter einem anderen Namen zu finden. https://eslint.org/docs/latest/extend/plugins
Alte Muster
| Alt | Aktuell |
|---|---|
.eslintrc.*, eslintConfig in package.json | eslint.config.js mit defineConfig() |
"extends": "eslint:recommended" | extends: ["js/recommended"] mit plugins: { js } |
env, /* eslint-env */ | languageOptions.globals, /* global */ |
.eslintignore, --ignore-path | globalIgnores(), includeIgnoreFile() |
overrides | Mehr Konfigurationsobjekte mit files |
--rulesdir, linter.defineRule() | Inline-Plugin plugins: { local: { rules } } |
--no-eslintrc | --no-config-lookup |
context.getScope(), context.getSourceCode() | sourceCode.getScope(node), context.sourceCode |
| Funktionsartige Regeln | { meta, create } |
FlatESLint, LegacyESLint, FlatRuleTester | ESLint, RuleTester |
require-jsdoc, valid-jsdoc | eslint-plugin-jsdoc |
Details und die vollständigen Listen: references/migration.md.
Referenzdateien
| Datei | Lesen Sie sie für |
|---|---|
| references/configuration.md | Konfigurationsdateinamen und -suche, TypeScript-Konfigurationen, Konfigurationsobjektschlüssel, files-Matching, extends, Sprachoptionen, Globals, Parser, Prozessoren, Sprachen, Debugging |
| references/ignoring-files.md | Globale und nicht-globale ignores, Standard-Ignores, Dotfiles, Unignore-Rezepte, .gitignore-Import |
| references/rules-and-inline-config.md | Schweregrade, Optionen-Zusammenführung, Inline-Konfigurationskommentare, Deaktivierungs-Direktiven, linterOptions, Fixes vs. Vorschläge, zirkuläre Fixes |
| references/cli.md | Globs, --fix, Exit-Codes, --quiet, Formatter, Cache, Bulk Suppressions, Feature Flags, Parallelität, MCP Server |
| references/migration.md | Breaking Changes in ESLint 9 und 10, Codemods, eslintrc zu Flat Config, geänderte Regeloptionen, defekte Plugins |
| references/custom-rules.md | Regel-meta, lokale Regeln, context.report, Fixes, Vorschläge, meta.schema, meta.defaultOptions, Veraltung, entfernte context-Methoden |
| references/ast-scope-code-paths.md | Selektoren, SourceCode-Methoden, Scopes, Scope-Manager-Objekte, Codepfad-Ereignisse, Profiling |
| references/testing-rules.md | RuleTester-Standardwerte, gültige und ungültige Fälle, Fix- und Vorschlags-Assertions, strenge Prüfungen, Framework-Hooks |
| references/plugins-and-shareable-configs.md | Plugin-Objekt und meta, Plugin-Konfigurationen, Veröffentlichung, gemeinsam nutzbare Konfigurationen, benutzerdefinierte Parser, Prozessoren, Sprachen, Formatter |
| references/nodejs-api.md | ESLint-Optionen und -Methoden, lintText, outputFixes, loadFormatter, LintResult, Linter, SourceCode |
| references/core-rules-problems.md | Regeln, die TypeScript abdeckt, ungenutzte und nicht deklarierte Variablen, Shadowing, Bedingungen, asynchrone Fehler, Regex-Fallen |
| references/core-rules-restrictions.md | no-restricted-imports, -globals, -properties, -exports, no-restricted-syntax-Rezepte, andere Verbote, Größen- und Komplexitätsgrenzen |
| references/core-rules-style.md | Standardwerte für Vorschlagsregeln, Standardwerte für Layoutregeln, entfernte Regeln, veraltete Optionen |
Gecrawlte Seiten: SOURCES.md.