Появление flat config в ESLint изменило подход к настройке линтера в
редакторах кода. Вместо многоуровневой системы конфигурационных файлов
(.eslintrc, .eslintrc.json,
.eslintrc.js, package.json) используется
единый файл eslint.config.js,
eslint.config.mjs или eslint.config.cjs,
содержащий всю конфигурацию проекта.
Для редакторов это означает более предсказуемый процесс загрузки настроек. ESLint больше не выполняет поиск конфигурации по дереву каталогов, а использует единую точку входа.
Пример минимального flat config:
export default [
{
rules: {
semi: "error",
quotes: ["error", "single"]
}
}
];
После появления такого файла редактор автоматически использует его при запуске ESLint.
Современные редакторы работают с ESLint через официальные расширения или встроенные механизмы интеграции. Поддержка flat config появилась позже классической конфигурации, поэтому важно использовать актуальные версии инструментов.
Основные требования:
eslint.config.js;Структура проекта:
project/
├── src/
│ ├── index.js
│ └── utils.js
├── eslint.config.js
├── package.json
└── node_modules/
Редактор обнаруживает ESLint в каталоге проекта и использует найденную конфигурацию.
Наиболее популярной средой разработки для JavaScript является Visual Studio Code.
Для работы ESLint необходимо установить официальное расширение ESLint от Microsoft.
После установки расширения рекомендуется убедиться, что оно использует локальную версию ESLint из проекта, а не глобально установленную.
Файл настроек VS Code:
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "always"
}
}
Такая настройка запускает автоматическое исправление ошибок ESLint при сохранении файла.
Если используется flat config, дополнительных параметров обычно не требуется. Расширение автоматически обнаруживает файл:
eslint.config.js
или
eslint.config.mjs
и начинает использовать его.
Многие проекты используют ESLint не только для проверки кода, но и для автоматического исправления нарушений стиля.
Пример правила:
export default [
{
rules: {
indent: ["error", 4],
semi: ["error", "always"],
quotes: ["error", "single"]
}
}
];
Код до сохранения:
const message = "Hello"
После сохранения:
const message = 'Hello';
Редактор получает исправления от ESLint и автоматически применяет их к открытому файлу.
Расширение ESLint способно выполнять анализ кода в реальном времени.
При обнаружении ошибки редактор:
Пример правила:
export default [
{
rules: {
no-unused-vars: "error"
}
}
];
Код:
const unusedValue = 10;
console.log('test');
Редактор покажет ошибку:
'unusedValue' is assigned a value but never used.
Проверка выполняется сразу после изменения файла.
При работе с TypeScript редактор должен понимать дополнительные правила и синтаксис языка.
Установка зависимостей:
npm install -D eslint typescript typescript-eslint
Конфигурация:
import tseslint from 'typescript-eslint';
export default [
...tseslint.configs.recommended
];
После открытия файлов .ts и .tsx редактор
автоматически применяет TypeScript-правила.
Пример ошибки:
let value: string = 123;
Сообщение:
Type 'number' is not assignable to type 'string'
Таким образом редактор объединяет возможности TypeScript и ESLint в единую систему диагностики.
В крупных проектах настройки редактора обычно сохраняются внутри репозитория.
Каталог:
.vscode/
└── settings.json
Пример:
{
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "always"
}
}
Такой подход обеспечивает одинаковое поведение ESLint у всех участников команды.
Локальные настройки пользователя не влияют на конфигурацию проекта.
Монорепозитории содержат несколько приложений или пакетов внутри одного репозитория.
Структура:
repo/
├── packages/
│ ├── frontend/
│ └── backend/
├── eslint.config.js
└── package.json
Flat config хорошо подходит для подобных проектов, поскольку весь набор правил можно централизовать.
Пример:
export default [
{
files: ['packages/frontend/**/*.js'],
rules: {
browser: 'error'
}
},
{
files: ['packages/backend/**/*.js'],
rules: {
'no-process-exit': 'error'
}
}
];
Редактор будет применять разные правила в зависимости от расположения файла.
Flat config представляет собой массив объектов.
Каждый объект может отвечать за отдельную часть проекта.
Пример:
export default [
{
files: ['src/**/*.js'],
rules: {
semi: 'error'
}
},
{
files: ['tests/**/*.js'],
rules: {
'no-console': 'off'
}
}
];
Файл:
src/app.js
получит правило semi.
Файл:
tests/app.test.js
дополнительно получит отключение no-console.
Редактор автоматически определяет подходящую конфигурацию для каждого файла.
Иногда редактор не обнаруживает flat config.
Наиболее распространённые причины:
Неправильно:
eslint.js
Правильно:
eslint.config.js
Следует проверить наличие пакета:
npm ls eslint
Некорректный импорт:
import unknownConfig from './unknown.js';
Если импортируемый файл отсутствует, ESLint не сможет загрузить конфигурацию.
Неверно:
export default [
{
rules: {
semi: "error",
,
}
];
Редактор обычно отображает сообщение о невозможности загрузить конфигурационный файл.
При возникновении проблем полезно анализировать журнал работы расширения.
В Visual Studio Code журнал доступен через:
View → Output
Затем выбирается канал:
ESLint
В журнале отображаются:
Типичное сообщение:
ESLint server running.
или
Failed to load config file.
Эта информация значительно упрощает поиск ошибок конфигурации.
Наиболее распространённый сценарий использования ESLint в редакторе — автоматическое исправление кода.
Настройка:
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "always"
}
}
Пример исходного кода:
const user = "Admin"
После сохранения:
const user = 'Admin';
Если правило поддерживает автоматическое исправление, редактор применяет его без участия разработчика.
Во многих проектах ESLint отвечает за качество кода, а Prettier — за форматирование.
Пример конфигурации:
import eslintConfigPrettier from 'eslint-config-prettier';
export default [
eslintConfigPrettier
];
Редактор может запускать:
Flat config позволяет централизованно управлять взаимодействием этих инструментов.
Для понимания того, какую конфигурацию видит редактор через ESLint, используется команда:
npx eslint --print-config src/index.js
Результатом станет полный набор правил и параметров, применяемых к указанному файлу.
Это особенно полезно при наличии:
Сравнение фактической конфигурации с ожидаемой позволяет быстро обнаружить ошибки настройки и понять, почему редактор показывает те или иные предупреждения.