Конфигурация ESLint представляет собой JavaScript-объект (или набор
объектов), определяющий правила анализа кода, подключаемые плагины,
среду выполнения и поведение линтера. В зависимости от используемого
формата — классического .eslintrc или нового Flat Config —
структура и набор полей различаются, однако концептуальная модель
остаётся общей: декларативное описание правил проверки исходного
кода.
Конфигурационный объект ESLint в классическом формате строится вокруг нескольких ключевых групп полей:
Каждое поле влияет на отдельный этап анализа исходного кода: от разбора AST до применения правил и формирования отчёта.
envenv определяет предустановленные глобальные переменные и
режимы выполнения.
Пример структуры:
env: {
browser: true,
node: true,
es2021: true
}
window,
process, document)globals, а дополняет ихglobalsglobals задаёт пользовательские глобальные
переменные.
globals: {
MyGlobal: "readonly",
DEBUG: "writable"
}
"readonly" — запрещена модификация"writable" — разрешена запись"off" — отключение проверки переменнойparserparser определяет парсер JavaScript/TypeScript кода.
parser: "@babel/eslint-parser"
espree (по умолчанию ESLint)@babel/eslint-parser@typescript-eslint/parserparserOptionsparserOptions задаёт параметры анализа кода.
parserOptions: {
ecmaVersion: 2022,
sourceType: "module",
ecmaFeatures: {
jsx: true
}
}
ecmaVersionОпределяет версию ECMAScript.
"latest"sourceType"script" — классические скрипты"module" — ES-модулиecmaFeaturesФлаги дополнительных возможностей:
jsx — поддержка JSXglobalReturn — разрешение return на
верхнем уровнеpluginsplugins подключает внешние расширения ESLint.
plugins: ["react", "@typescript-eslint"]
Правила подключаются через:
rules: {
"react/jsx-uses-react": "error"
}
rulesrules — центральная часть конфигурации, определяющая
поведение линтера.
rules: {
semi: "error",
quotes: ["error", "single"],
"no-console": "warn"
}
"off" — отключено"warn" — предупреждение"error" — ошибка"eqeqeq": ["error", "always"]
или
"max-len": ["warn", { "code": 100 }]
parserOptions и envextendsextends позволяет наследовать готовые конфигурации.
extends: ["eslint:recommended", "plugin:react/recommended"]
overridesoverrides позволяет применять разные настройки для
отдельных файлов.
overrides: [
{
files: ["*.test.js"],
rules: {
"no-unused-expressions": "off"
}
}
]
overridesfilesexcludedFilesrulesenvparserparserOptionssettingssettings используется для передачи данных в плагины.
settings: {
react: {
version: "detect"
}
}
rootroot: true
ignorePatternsignorePatterns: ["dist/", "node_modules/"]
.eslintignore.eslintignoreFlat Config использует массив объектов вместо одного конфигурационного объекта.
export default [
{
files: ["**/*.js"],
rules: {
semi: "error"
}
}
]
filesfiles: ["**/*.js"]
overrides.files в новом форматеignoresignores: ["dist/**"]
ignorePatternslanguageOptionslanguageOptions: {
ecmaVersion: 2023,
sourceType: "module",
globals: {
window: "readonly"
}
}
Объединяет:
parserOptionsglobalsecmaVersionsourceTypeglobalsparserlinterOptionslinterOptions: {
reportUnusedDisableDirectives: true
}
reportUnusedDisableDirectivesnoInlineConfigplugins (Flat
Config)В новом формате плагины подключаются как объекты:
import react from "eslint-plugin-react";
export default [
{
plugins: {
react
}
}
]
rules (Flat
Config)rules: {
"react/jsx-uses-react": "error"
}
extendsПри конфликте конфигураций применяется следующая логика:
overrides / files (или соответствующие
блоки Flat Config)rulesextendsparser и parserOptions определяют
структуру ASTenv и globals влияют на семантический
анализplugins расширяют набор доступных правилrules формируют конечную политику анализаoverrides и files сегментируют
конфигурациюparser и
parserOptions.ecmaVersionenv и globals без учёта
приоритетовfiles и
ignorePatternsextends