ESLint 10
Esta skill cobre o ESLint 10.14.0 conforme documentado em https://eslint.org/docs/latest/. Ela contém o que difere do hábito: armadilhas do flat config, padrões surpreendentes, APIs removidas e os padrões que a documentação recomenda. Cada afirmação nos arquivos de referência termina com a página de origem.
Como navegar
- Leia as regras rápidas abaixo. Elas capturam os erros mais frequentes.
- Abra o arquivo de referência que corresponde à tarefa, da tabela no final.
- Quando o código usar
.eslintrc,env,context.getScope()ouFlatESLint, leiareferences/migration.mdprimeiro.
Início 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.0ou>=24. Tipos TypeScript precisam de TypeScript 5.3+. https://eslint.org/docs/latest/use/getting-started - Instale
eslinte@eslint/jslocalmente como dependências de desenvolvimento. Uma instalação global não é recomendada e os plugins ainda devem ser locais.globalsé um pacote separado. https://eslint.org/docs/latest/use/getting-started , https://eslint.org/docs/latest/use/configure/migration-guide eslint.config.tsprecisa da dependência de desenvolvimentojiti>= 2.2.0 no Node. https://eslint.org/docs/latest/use/configure/configuration-files
Regras rápidas
Arquivos de configuração
- O ESLint não verifica nada útil até que você estenda uma configuração ou habilite regras. https://eslint.org/docs/latest/use/getting-started
- A busca de configuração começa no diretório de cada arquivo verificado e sobe.
--configforça 1 arquivo. https://eslint.org/docs/latest/use/configure/configuration-files , https://eslint.org/docs/latest/use/migrate-to-10.0.0 - Um objeto sem
filesse aplica a todo arquivo que outro objeto corresponde. Assim que você verificar.ts,.mdou.json, escope as regras JS comfiles, e sempre coloquefilespróximo aextends. https://eslint.org/docs/latest/use/configure/configuration-files ignoressozinho em um objeto (ignores globais) pode corresponder a diretórios. Ao lado de outras chaves, corresponde apenas a arquivos:"dir/**", não"dir/". PrefiraglobalIgnores(). https://eslint.org/docs/latest/use/configure/configuration-files- Arquivos ocultos (dotfiles) são verificados a menos que ignorados. Apenas
**/node_modules/e.git/são ignorados por padrão. https://eslint.org/docs/latest/use/configure/ignore , https://eslint.org/docs/latest/use/configure/configuration-files - Importe
.gitignorecomincludeIgnoreFile(path, { gitignoreResolution: true })deeslint/config. https://eslint.org/docs/latest/use/configure/ignore - Sem environments: declare globals com o pacote
globalsemlanguageOptions.globals. https://eslint.org/docs/latest/use/configure/language-options - Plugins, parsers e processadores são objetos importados. Processadores nunca são aplicados automaticamente. https://eslint.org/docs/latest/use/configure/migration-guide
- Inspecione o que corresponde a um arquivo com
npx eslint --inspect-configou--print-config file.js. https://eslint.org/docs/latest/use/configure/debug
Regras e comentários
- Uma substituição apenas de severidade mantém as opções anteriores, tanto na configuração quanto em comentários
/* eslint */. https://eslint.org/docs/latest/use/configure/rules , https://eslint.org/docs/latest/use/migrate-to-9.0.0 - Um comentário inline não pode carregar um plugin. Um
/* eslint-enable */simples reativa todas as regras. https://eslint.org/docs/latest/use/configure/rules - Coloque a razão após
--:// eslint-disable-next-line no-console -- motivo. https://eslint.org/docs/latest/use/configure/rules /* eslint-env */é um erro no ESLint 10. Use/* global nome */ou globals na configuração. https://eslint.org/docs/latest/use/migrate-to-10.0.0no-unused-varsreportacatch (e)não utilizado por padrão: escrevacatch {. https://eslint.org/docs/latest/rules/no-unused-vars- Não habilite
no-return-await. Use um formatador ou ESLint Stylistic em vez de regras de layout principais. https://eslint.org/docs/latest/rules/no-return-await , https://eslint.org/docs/latest/use/core-concepts/glossary
CLI e CI
- Código de saída 1 significa erros (ou muitos avisos), 2 significa um erro de configuração ou interno. https://eslint.org/docs/latest/use/command-line-interface
--quietnão executa regras"warn", a menos que--max-warningstambém esteja definido: nesse caso, elas são executadas mas não reportadas. https://eslint.org/docs/latest/use/command-line-interface- Cite globs.
--fixlança erro no stdin: use--fix-dry-run --format json. https://eslint.org/docs/latest/use/command-line-interface --cacheignora dependências entre arquivos: regras que dependem de tipos e de importação podem ficar desatualizadas. https://eslint.org/docs/latest/use/command-line-interface- Adote uma regra rigorosa em código antigo com
eslint --fix --suppress-alle faça commit deeslint-suppressions.json. https://eslint.org/docs/latest/use/suppressions
Regras personalizadas e integrações
- Uma regra é
{ meta, create }.meta.fixableemeta.hasSuggestionssão necessários para corrigir ou sugerir,meta.schemapara aceitar opções. https://eslint.org/docs/latest/extend/custom-rules - Use
context.sourceCode,context.filenameesourceCode.getScope(node). Os métodoscontext.getX()desapareceram. 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ão escreve nada atéESLint.outputFixes(results). https://eslint.org/docs/latest/integrate/nodejs-api- Dê a um plugin
meta.name,meta.versionemeta.namespacepara facilitar a depuração e um cache mais eficaz. O namespace permite quedefineConfig()encontre o plugin sob outro nome. https://eslint.org/docs/latest/extend/plugins
Padrões antigos
| Antigo | Atual |
|---|---|
.eslintrc.*, eslintConfig em package.json | eslint.config.js com defineConfig() |
"extends": "eslint:recommended" | extends: ["js/recommended"] com plugins: { js } |
env, /* eslint-env */ | languageOptions.globals, /* global */ |
.eslintignore, --ignore-path | globalIgnores(), includeIgnoreFile() |
overrides | Mais objetos de configuração com files |
--rulesdir, linter.defineRule() | Plugin inline plugins: { local: { rules } } |
--no-eslintrc | --no-config-lookup |
context.getScope(), context.getSourceCode() | sourceCode.getScope(node), context.sourceCode |
| Regras no estilo de função | { meta, create } |
FlatESLint, LegacyESLint, FlatRuleTester | ESLint, RuleTester |
require-jsdoc, valid-jsdoc | eslint-plugin-jsdoc |
Detalhes e listas completas: references/migration.md.
Arquivos de referência
| Arquivo | Leia para |
|---|---|
| references/configuration.md | Nomes e busca de arquivos de configuração, configs TypeScript, chaves de objeto de configuração, correspondência de files, extends, opções de linguagem, globals, parsers, processadores, linguagens, depuração |
| references/ignoring-files.md | ignores globais e não globais, ignores padrão, dotfiles, receitas para designorar, importação de .gitignore |
| references/rules-and-inline-config.md | Severidades, mesclagem de opções, comentários de configuração inline, diretivas de desabilitação, linterOptions, correções versus sugestões, correções circulares |
| references/cli.md | Globs, --fix, códigos de saída, --quiet, formatadores, cache, supressões em massa, feature flags, concorrência, servidor MCP |
| references/migration.md | Mudanças que quebram no ESLint 9 e 10, codemods, eslintrc para flat config, opções de regras alteradas, plugins quebrados |
| references/custom-rules.md | meta da regra, regras locais, context.report, correções, sugestões, meta.schema, meta.defaultOptions, depreciação, métodos context removidos |
| references/ast-scope-code-paths.md | Seletores, métodos de SourceCode, escopos, objetos do gerenciador de escopo, eventos de caminho de código, profiling |
| references/testing-rules.md | Padrões do RuleTester, casos válidos e inválidos, asserções de correção e sugestão, verificações rigorosas, hooks de framework |
| references/plugins-and-shareable-configs.md | Objeto plugin e meta, configurações de plugin, publicação, configurações compartilháveis, parsers, processadores, linguagens e formatadores personalizados |
| references/nodejs-api.md | Opções e métodos do ESLint, lintText, outputFixes, loadFormatter, LintResult, Linter, SourceCode |
| references/core-rules-problems.md | Regras que o TypeScript cobre, variáveis não utilizadas e não declaradas, sombreamento, condições, erros assíncronos, armadilhas de regex |
| references/core-rules-restrictions.md | no-restricted-imports, -globals, -properties, -exports, receitas de no-restricted-syntax, outras proibições, limites de tamanho e complexidade |
| references/core-rules-style.md | Padrões de regras de sugestão, padrões de regras de layout, regras removidas, opções depreciadas |
Páginas rastreadas: SOURCES.md.