Назначение флага --inspect-config заключается в
отображении итоговой конфигурации ESLint для конкретного файла или
набора файлов после применения всех механизмов объединения:
наследования, переопределений, подключённых плагинов и внутренних правил
разрешения конфигурации. Этот режим используется как инструмент
диагностики, позволяющий точно определить, какая конфигурация фактически
применяется к анализируемому коду.
Флаг особенно важен в средах, где конфигурация ESLint формируется из
нескольких источников: базовых конфигов, расширений
(extends), локальных переопределений
(overrides), плагинов и нового flat config-подхода.
При запуске ESLint с --inspect-config происходит полное
построение финальной конфигурации для указанного контекста. В отличие от
обычного запуска линтера, где результатом являются ошибки и
предупреждения, данный режим фокусируется исключительно на
конфигурации.
Ключевая задача режима:
Типовой формат использования:
eslint --inspect-config path/to/file.js
В некоторых версиях ESLint также допускаются дополнительные параметры:
eslint --inspect-config path/to/file.js --format json
или вывод в файл:
eslint --inspect-config path/to/file.js > config.json
Перед формированием вывода ESLint проходит несколько этапов:
Система определяет:
eslint.config.js) или legacy
(.eslintrc).Собираются все доступные источники:
.eslintrc.*;overrides;extends;plugins);Все источники приводятся к единому формату:
rules);Если используются overrides, они применяются строго по
совпадению glob-паттернов, что может полностью изменить итоговый набор
правил для конкретного файла.
Результатом выполнения является JSON-структура, содержащая полностью развернутую конфигурацию.
Содержит финальный набор правил ESLint:
"rules": {
"no-unused-vars": "error",
"eqeqeq": ["error", "always"]
}
Здесь отражаются:
off, warn,
error);Определяет параметры разбора кода:
Пример:
"languageOptions": {
"ecmaVersion": 2022,
"sourceType": "module"
}
Список подключённых плагинов после разрешения зависимостей:
"plugins": {
"react": {}
}
Глобальные настройки, используемые плагинами:
"settings": {
"react": {
"version": "detect"
}
}
В старой системе конфигурации (.eslintrc) применяется
каскадное наследование:
.eslintrc.eslintrc.json.eslintrc.jsextendsПри инспекции отображается уже результат объединения всех слоёв.
В современном подходе (eslint.config.js) структура
становится линейной:
При использовании --inspect-config flat-конфигурация
отображается как уже нормализованный список блоков, применённых к
файлу.
Механизм extends является одним из наиболее частых
источников сложностей.
При инспекции видно:
Пример типичной цепочки:
"extends": [
"eslint:recommended",
"plugin:react/recommended"
]
После обработки результат может существенно отличаться от исходных пресетов.
overrides позволяют задавать разные правила для разных
типов файлов.
Пример логики:
*.js → базовые правила*.test.js → отключение строгих проверок*.ts → подключение TypeScript-правилВ режиме инспекции видно:
Плагины проходят этап резолва:
node_modules;В инспектируемой конфигурации отображается уже конечное состояние, без промежуточных импортов.
Флаг используется для выявления проблем:
Когда одно и то же правило задаётся в разных местах:
Итоговое значение может быть неожиданным.
Часто происходит при:
extends;rules: {} без учета базовых
значений.Иногда плагины требуют определённые версии parser или languageOptions, что становится видно только в финальной конфигурации.
Позволяет увидеть, какие правила реально активны:
Если ESLint не сообщает об ошибках там, где ожидается, инспекция показывает:
При переходе:
Ранее использовался --print-config, который выполнял
похожую задачу, но:
--inspect-config ориентирован на более точное
отображение финального состояния после полной обработки всех уровней
конфигурации.
При анализе вывода важно учитывать:
Общая иерархия применения:
extends;overrides;Итоговая инспекция показывает результат применения всех уровней одновременно, без разделения на источники в большинстве случаев, но с сохранением ключевых маркеров происхождения.