Именованные конфигурации в ESLint представляют собой механизм
структурирования и повторного использования правил линтинга через
присвоение конфигурационным блокам или пакетам устойчивых
идентификаторов. Такой подход используется как в классической системе
.eslintrc, так и в современной Flat Config архитектуре,
позволяя упорядочивать сложные наборы правил, отслеживать их
происхождение и управлять наследованием.
ESLint опирается на композиционную модель конфигурации, где итоговый набор правил формируется из нескольких источников:
Именование конфигураций обеспечивает:
Одним из основных механизмов именованных конфигураций являются shareable configs — npm-пакеты, содержащие набор правил ESLint.
Стандарт именования:
eslint-config-*Примеры:
eslint-config-airbnbeslint-config-standardeslint-config-nextИспользование через extends:
{
"extends": ["airbnb"]
}
При этом ESLint автоматически разрешает имя пакета, добавляя префикс
eslint-config-.
extends и цепочки наследованияКлюч extends формирует цепочку наследования
конфигураций. Каждая именованная конфигурация может расширять другую,
создавая многоуровневую структуру.
Пример:
{
"extends": ["eslint:recommended", "standard"]
}
Поведение:
eslint:recommended — встроенная именованная
конфигурация ESLintstandard — внешняя shareable-конфигурацияПорядок имеет значение: более поздние конфигурации переопределяют предыдущие.
ESLint предоставляет несколько системных именованных конфигураций:
eslint:recommended — базовый набор безопасных
правилeslint:all — максимальный набор всех доступных
правилИспользование:
{
"extends": ["eslint:recommended"]
}
Особенности:
Современная архитектура Flat Config (eslint.config.js) вводит более
явное именование конфигурационных блоков через поле
name.
Пример:
export default [
{
name: "base/javascript",
files: ["**/*.js"],
rules: {
semi: ["error", "always"]
}
}
];
Назначение поля name:
Именование часто строится по иерархическому принципу:
base/*node/*react/*typescript/*Пример:
{
name: "react/hooks",
files: ["**/*.jsx"],
rules: {
"react-hooks/rules-of-hooks": "error"
}
}
Такая структура позволяет:
В экосистеме ESLint именованные конфигурации часто реализуются через npm-экосистему.
Типовая структура:
eslint-config-company
├── base.js
├── react.js
├── node.js
Подключение:
{
"extends": ["company/base", "company/react"]
}
Механизм разрешения:
company/base →
eslint-config-company/basecompany/react →
eslint-config-company/reactИменованные конфигурации часто включают слои переопределений через
overrides.
Пример:
{
"extends": ["eslint:recommended"],
"overrides": [
{
"files": ["*.test.js"],
"rules": {
"no-unused-expressions": "off"
}
}
]
}
В Flat Config аналог:
export default [
{
name: "core/recommended",
rules: {
"no-console": "warn"
}
},
{
name: "tests/overrides",
files: ["**/*.test.js"],
rules: {
"no-console": "off"
}
}
];
При объединении конфигураций действует строгая система приоритетов:
eslint:recommended)/* eslint-disable */Именование не влияет напрямую на приоритет, но улучшает трассировку происхождения правил.
При пересечении правил из разных конфигураций возникает конфликт разрешения значений.
Типовые сценарии:
warn vs
error)Пример конфликта:
{
"extends": ["eslint:recommended", "airbnb"],
"rules": {
"quotes": "off"
}
}
Итоговое значение определяется последним применением правила.
В современных версиях ESLint используется механизм инспекции конфигурации:
nameCLI-режим анализа:
eslint --print-config file.js
В Flat Config поле name отображается в структуре
результата, упрощая диагностику цепочки.
Устойчивые схемы именования:
base/* — базовые правила языкаstyle/* — форматирование и кодстайлruntime/* — окружение (node, browser)framework/* — React, Vue, Angularsecurity/* — безопасные практикиПример композиции:
export default [
{
name: "base/javascript",
files: ["**/*.js"]
},
{
name: "framework/react",
files: ["**/*.jsx"],
rules: {
"react/react-in-jsx-scope": "off"
}
},
{
name: "security/node",
files: ["**/*.js"],
rules: {
"no-eval": "error"
}
}
];
Развитие подхода можно разделить на этапы:
.eslintrc — неявные конфигурации без имен внутри
структурыnameТекущая модель делает конфигурацию:
В крупных кодовых базах именованные конфигурации обеспечивают: