На главную
Контейнеры и CI/CD
Конфигуратор ESLint
Собирает eslint.config.js в плоском формате девятой версии под ваш стек и объясняет, от какой именно ошибки бережёт каждое правило.
Стек
Через запятую
Наборы правил
eslint.config.js
import js from '@eslint/js';
import globals from 'globals';
export default [
{ ignores: ['dist/**', 'node_modules/**', 'coverage/**'] },
js.configs.recommended,
{
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
ecmaVersion: 2023,
sourceType: 'module',
globals: { ...globals.browser },
},
rules: {
'no-undef': 'error',
'no-unused-vars': ['error', { args: 'after-used', argsIgnorePattern: '^_' }],
'no-cond-assign': ['error', 'except-parens'],
'no-constant-binary-expression': 'error',
'no-self-compare': 'error',
'no-unreachable-loop': 'error',
'eqeqeq': ['error', 'smart'],
'no-var': 'error',
'prefer-const': 'error',
'radix': 'error',
'no-console': ['warn', { allow: ['warn', 'error'] }],
'no-debugger': 'error',
'no-alert': 'warn',
},
},
];
Установка
npm install -D eslint @eslint/js globals
Что делает каждое правило
| Правило | Зачем |
|---|---|
| no-undef | Обращение к необъявленной переменной — почти всегда опечатка в имени. |
| no-unused-vars | Неиспользуемая переменная — след недоделанной правки. |
| no-cond-assign | Ловит «=» там, где имелось в виду «===». |
| no-constant-binary-expression | Выражение, результат которого известен заранее: сравнение массива с числом, «??» после «||». |
| no-self-compare | x === x проверяет не то, что задумано (для NaN есть Number.isNaN). |
| no-unreachable-loop | Тело цикла с безусловным return или break выполняется один раз. |
| eqeqeq | «==» приводит типы: "" == 0 истинно, null == undefined тоже. |
| no-var | var всплывает на всю функцию и переопределяется молча. |
| prefer-const | Переменная, которой не присваивают заново, честнее объявляется const. |
| radix | parseInt без основания на строке с ведущим нулём даёт неожиданный результат. |
| no-console | console.log забывают в коде и он уезжает на прод. |
| no-debugger | debugger останавливает браузер у пользователя. |
| no-alert | alert блокирует поток и не переводится. |
Плоский конфиг вместо .eslintrc
С девятой версии ESLint читает eslint.config.js — обычный JS-модуль, экспортирующий массив. Плагины подключаются импортом, а не строкой имени, поэтому опечатка в названии превращается в честную ошибку модуля. Порядок элементов важен: последний выигрывает, и свои правила всегда ставят после готовых наборов.