Флаг --print-config

Назначение и поведение команды

Флаг --print-config в CLI ESLint предназначен для вывода итоговой конфигурации, которая применяется к конкретному файлу после обработки всех уровней конфигурации: базовых настроек, расширений, переопределений, игнорирования и плагинов.

Команда выполняет полное разрешение конфигурационного дерева и возвращает финальный объект настроек, который ESLint фактически использует при анализе указанного файла. Это включает:

  • базовые конфигурации (extends)
  • локальные настройки проекта
  • секции overrides
  • настройки плагинов
  • parserOptions
  • env
  • правила (rules)
  • игнорирование (ignorePatterns, .eslintignore)
  • flat config (если используется новая система конфигурации)

Общий синтаксис

eslint --print-config <путь-к-файлу>

Пример:

eslint --print-config src/index.js

Файл должен существовать в проекте, поскольку конфигурация вычисляется в контексте конкретного пути.


Роль в системе конфигурации ESLint

ESLint поддерживает несколько уровней конфигурации, которые объединяются в единое итоговое состояние. --print-config показывает результат этого объединения без запуска линтинга.

Порядок разрешения конфигурации:

  1. Глобальные настройки (.eslintrc, eslint.config.js, package.json)
  2. Наследуемые конфигурации (extends)
  3. Плагины
  4. Локальные переопределения (overrides)
  5. Игнорирование файлов
  6. Специфичные настройки файла

Итоговая конфигурация отражает результат всех этих этапов.


Использование в legacy и flat config

Legacy-конфигурация

В классической системе .eslintrc результат включает:

  • глубокое слияние объектов
  • наследование через extends
  • объединение правил с приоритетами

Вывод представляет собой полностью развёрнутый JSON-объект.


Flat config

В новой архитектуре flat config (eslint.config.js) конфигурация строится как массив объектов без глубокого слияния.

--print-config в этом режиме:

  • показывает итоговый объект, применённый к файлу
  • учитывает порядок элементов массива
  • отображает результат последовательного применения конфигов

Пример вывода

eslint --print-config src/app.js

Результат:

{
  "parserOptions": {
    "ecmaVersion": 2022,
    "sourceType": "module"
  },
  "env": {
    "browser": true,
    "node": true
  },
  "rules": {
    "no-unused-vars": "warn",
    "no-console": "off"
  },
  "plugins": ["import"],
  "settings": {
    "react": {
      "version": "detect"
    }
  }
}

Этот JSON представляет итоговую конфигурацию, которую ESLint использует при анализе src/app.js.


Поведение с плагинами

При наличии подключённых плагинов их правила и настройки также включаются в итоговый результат.

Пример:

eslint --print-config src/component.jsx

Если используется плагин react, в вывод попадут:

  • правила JSX
  • настройки React версии
  • дополнительные parser options

Влияние overrides

Секции overrides применяются только к файлам, соответствующим указанным шаблонам.

--print-config учитывает это поведение:

{
  "overrides": [
    {
      "files": ["*.test.js"],
      "rules": {
        "no-unused-expressions": "off"
      }
    }
  ]
}

Если запрашивается конфигурация для example.test.js, итоговый вывод будет содержать отключённое правило. Для обычного файла — нет.


Игнорирование файлов

Если файл подпадает под правила игнорирования:

  • .eslintignore
  • ignorePatterns
  • ignores в flat config

команда может:

  • либо вернуть пустую/базовую конфигурацию
  • либо сообщить, что файл игнорируется (в зависимости от версии ESLint)

Взаимодействие с parser и environment

Флаг отображает итоговые параметры, влияющие на разбор кода:

  • parser — используемый парсер (например, @babel/eslint-parser)
  • parserOptions — ECMAScript настройки
  • env — глобальные переменные окружения

Пример:

{
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "node": true
  }
}

Использование в отладке конфигурации

--print-config фактически выполняет роль диагностического инструмента, позволяющего:

  • проверить итоговую структуру конфигурации
  • выявить конфликт правил
  • проверить порядок применения extends
  • отследить перекрытие overrides
  • понять, какие плагины активированы

Особенно важно при сложных конфигурациях с множеством уровней наследования.


Типичные сценарии анализа результата

Проверка переопределения правил

Если ожидается, что правило отключено, но оно присутствует:

"no-console": "warn"

значит где-то в цепочке конфигураций оно не было переопределено корректно.


Проверка подключения плагинов

Отсутствие ожидаемых правил плагина в выводе означает:

  • плагин не установлен
  • плагин не подключён
  • конфигурация не применяется к файлу

Проверка конкретного файла

Разные файлы могут иметь разные итоговые конфигурации:

eslint --print-config src/a.js
eslint --print-config src/a.test.js

Результаты могут существенно отличаться из-за overrides.


Ограничения команды

  • не выполняет линтинг
  • не сообщает об ошибках кода
  • требует указания конкретного файла
  • может быть чувствителен к текущему рабочему каталогу
  • не показывает процесс объединения шаг за шагом

Связь с архитектурой Node.js

В среде Node.js команда работает через CLI-обвязку ESLint, используя файловую систему проекта для:

  • поиска конфигураций
  • разрешения модулей плагинов
  • чтения зависимостей из node_modules

Формат данных результата

Вывод всегда представляет собой JSON-структуру, содержащую:

  • primitives (строки, булевы значения)
  • массивы плагинов
  • вложенные объекты настроек
  • полностью разрешённые правила

Это делает результат пригодным для:

  • программного анализа
  • сравнения конфигураций
  • генерации документации
  • диагностики CI-пайплайнов