ESLint 10
Esta skill cubre ESLint 10.14.0 según está documentado en https://eslint.org/docs/latest/. Contiene lo que difiere de la costumbre: problemas de la flat config, valores predeterminados sorprendentes, API eliminadas y los patrones que recomiendan los documentos. Cada afirmación en los archivos de referencia termina con la página de donde proviene.
Cómo navegar
- Lee las reglas rápidas a continuación. Capturan los errores más frecuentes.
- Abre el archivo de referencia que coincida con la tarea, desde la tabla al final.
- Cuando el código use
.eslintrc,env,context.getScope()oFlatESLint, lee primeroreferences/migration.md.
Inicio rápido
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.0o>=24. Los tipos de TypeScript necesitan TypeScript 5.3+. https://eslint.org/docs/latest/use/getting-started - Instala
eslinty@eslint/jslocalmente como dependencias de desarrollo. No se recomienda una instalación global y los plugins deben seguir siendo locales.globalses un paquete separado. https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/migration-guide eslint.config.tsnecesita la dependencia de desarrollojiti>= 2.2.0 en Node. https://eslint.org/docs/latest/use/configure/configuration-files
Reglas rápidas
Archivos de configuración
- ESLint no linteará nada útil hasta que extiendas una configuración o habilites reglas. https://eslint.org/docs/latest/use/getting-started
- La búsqueda de configuración comienza en el directorio de cada archivo linteado y sube hacia arriba.
--configfuerza 1 archivo. https://eslint.org/docs/latest/use/configure/configuration-files , https://eslint.org/docs/latest/use/migrate-to-10.0.0 - Un objeto sin
filesse aplica a cada archivo que otro objeto coincida. Una vez que lintées.ts,.mdo.json, delimita las reglas JS confiles, y siempre ponfilesjunto aextends. https://eslint.org/docs/latest/use/configure/configuration-files ignoressolo en un objeto (ignorados globales) puede coincidir con directorios. Junto a otras claves solo coincide con archivos:"dir/**", no"dir/". PrefiereglobalIgnores(). https://eslint.org/docs/latest/use/configure/configuration-files- Los archivos con punto (dotfiles) se lintean a menos que se ignoren. Solo
**/node_modules/y.git/se ignoran por defecto. https://eslint.org/docs/latest/use/configure/ignore , https://eslint.org/docs/latest/use/configure/configuration-files - Importa
.gitignoreconincludeIgnoreFile(path, { gitignoreResolution: true })desdeeslint/config. https://eslint.org/docs/latest/use/configure/ignore - Sin entornos: declara globales con el paquete
globalsenlanguageOptions.globals. https://eslint.org/docs/latest/use/configure/language-options - Los plugins, parsers y procesadores son objetos importados. Los procesadores nunca se aplican automáticamente. https://eslint.org/docs/latest/use/configure/migration-guide
- Inspecciona qué coincide con un archivo con
npx eslint --inspect-configo--print-config file.js. https://eslint.org/docs/latest/use/configure/debug
Reglas y comentarios
- Una sobreescritura solo de severidad mantiene las opciones anteriores, tanto en la configuración como en los comentarios
/* eslint */. https://eslint.org/docs/latest/use/configure/rules , https://eslint.org/docs/latest/use/migrate-to-9.0.0 - Un comentario en línea no puede cargar un plugin. Un
/* eslint-enable */desnudo vuelve a habilitar todas las reglas. https://eslint.org/docs/latest/use/configure/rules - Pon la razón después de
--:// eslint-disable-next-line no-console -- razón. https://eslint.org/docs/latest/use/configure/rules /* eslint-env */es un error en ESLint 10. Usa/* global nombre */o las globales de configuración. https://eslint.org/docs/latest/use/migrate-to-10.0.0no-unused-varsreportacatch (e)no utilizado por defecto: escribecatch {. https://eslint.org/docs/latest/rules/no-unused-vars- No habilites
no-return-await. Usa un formateador o ESLint Stylistic en lugar de las reglas de diseño del núcleo. https://eslint.org/docs/latest/rules/no-return-await , https://eslint.org/docs/latest/use/core-concepts/glossary
CLI y CI
- El código de salida 1 significa errores (o demasiadas advertencias), 2 significa un error de configuración o interno. https://eslint.org/docs/latest/use/command-line-interface
--quietno ejecuta las reglas"warn", a menos que también se establezca--max-warnings: entonces se ejecutan pero no se reportan. https://eslint.org/docs/latest/use/command-line-interface- Pon entre comillas los globs.
--fixlanza un error en stdin: usa--fix-dry-run --format json. https://eslint.org/docs/latest/use/command-line-interface --cacheignora las dependencias entre archivos: las reglas que conocen tipos y las de importaciones pueden quedar obsoletas. https://eslint.org/docs/latest/use/command-line-interface- Adopta una regla estricta en código antiguo con
eslint --fix --suppress-ally confirmaeslint-suppressions.json. https://eslint.org/docs/latest/use/suppressions
Reglas personalizadas e integraciones
- Una regla es
{ meta, create }.meta.fixableymeta.hasSuggestionsson necesarios para corregir o sugerir,meta.schemapara aceptar opciones. https://eslint.org/docs/latest/extend/custom-rules - Usa
context.sourceCode,context.filenameysourceCode.getScope(node). Los métodoscontext.getX()han desaparecido. 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 })no escribe nada hasta que se llama aESLint.outputFixes(results). https://eslint.org/docs/latest/integrate/nodejs-api- Dale a un plugin
meta.name,meta.versionymeta.namespacepara facilitar la depuración y un almacenamiento en caché más efectivo. El espacio de nombres permite quedefineConfig()encuentre el plugin bajo otro nombre. https://eslint.org/docs/latest/extend/plugins
Patrones antiguos
| Antiguo | Actual |
|---|---|
.eslintrc.*, eslintConfig en package.json | eslint.config.js con defineConfig() |
"extends": "eslint:recommended" | extends: ["js/recommended"] con plugins: { js } |
env, /* eslint-env */ | languageOptions.globals, /* global */ |
.eslintignore, --ignore-path | globalIgnores(), includeIgnoreFile() |
overrides | Más objetos de configuración con files |
--rulesdir, linter.defineRule() | Plugin en línea plugins: { local: { rules } } |
--no-eslintrc | --no-config-lookup |
context.getScope(), context.getSourceCode() | sourceCode.getScope(node), context.sourceCode |
| Reglas con estilo de función | { meta, create } |
FlatESLint, LegacyESLint, FlatRuleTester | ESLint, RuleTester |
require-jsdoc, valid-jsdoc | eslint-plugin-jsdoc |
Detalles y listas completas: references/migration.md.
Archivos de referencia
| Archivo | Léelo para |
|---|---|
| references/configuration.md | Nombres y búsqueda de archivos de configuración, configuraciones TypeScript, claves de objetos de configuración, coincidencia de files, extends, opciones de lenguaje, globales, parsers, procesadores, lenguajes, depuración |
| references/ignoring-files.md | ignores globales y no globales, ignorados por defecto, archivos con punto, recetas para des-ignorar, importación de .gitignore |
| references/rules-and-inline-config.md | Severidades, fusión de opciones, comentarios de configuración en línea, directivas de desactivación, linterOptions, correcciones frente a sugerencias, correcciones circulares |
| references/cli.md | Globs, --fix, códigos de salida, --quiet, formateadores, caché, supresiones masivas, flags de características, concurrencia, servidor MCP |
| references/migration.md | Cambios importantes de ESLint 9 y 10, codemods, de eslintrc a flat config, opciones de reglas cambiadas, plugins rotos |
| references/custom-rules.md | meta de reglas, reglas locales, context.report, correcciones, sugerencias, meta.schema, meta.defaultOptions, desaprobación, métodos context eliminados |
| references/ast-scope-code-paths.md | Selectores, métodos de SourceCode, ámbitos, objetos del gestor de ámbitos, eventos de rutas de código, perfilado |
| references/testing-rules.md | Valores predeterminados de RuleTester, casos válidos e inválidos, afirmaciones de correcciones y sugerencias, comprobaciones estrictas, enlaces de framework |
| references/plugins-and-shareable-configs.md | Objeto plugin y meta, configuraciones de plugin, publicación, configuraciones compartibles, parsers personalizados, procesadores, lenguajes, formateadores |
| references/nodejs-api.md | Opciones y métodos de ESLint, lintText, outputFixes, loadFormatter, LintResult, Linter, SourceCode |
| references/core-rules-problems.md | Reglas que cubre TypeScript, variables no utilizadas y no declaradas, sombreado, condiciones, errores asíncronos, trampas de regex |
| references/core-rules-restrictions.md | no-restricted-imports, -globals, -properties, -exports, recetas de no-restricted-syntax, otras prohibiciones, límites de tamaño y complejidad |
| references/core-rules-style.md | Valores predeterminados de reglas de sugerencia, valores predeterminados de reglas de diseño, reglas eliminadas, opciones desaprobadas |
Páginas rastreadas: SOURCES.md.