Запуск ESLint из командной строки

ESLint предоставляет полноценный интерфейс командной строки, позволяющий запускать анализ кода, применять автоисправления, управлять конфигурацией и интегрировать проверку качества кода в процессы сборки и CI/CD. Основной инструмент запуска — бинарный файл eslint, доступный после установки пакета.

Типовая установка:

npm install eslint --save-dev

После установки команда становится доступной через npx:

npx eslint .

или через npm-скрипты:

{
  "scripts": {
    "lint": "eslint ."
  }
}

Запуск:

npm run lint

Базовый запуск анализа

Команда eslint принимает путь к файлам или директориям. Анализ может выполняться как по отдельным файлам, так и по целым проектам.

eslint src/index.js
eslint src/
eslint .

При передаче директории происходит рекурсивный обход файлов с учётом настроек игнорирования.

Для явного указания расширений:

eslint src --ext .js,.jsx,.ts,.tsx

Флаг --ext определяет, какие типы файлов включаются в проверку при обходе директорий.

Использование паттернов

CLI поддерживает glob-паттерны:

eslint "src/**/*.js"
eslint "src/**/components/**/*.{js,ts}"

Кавычки обязательны в большинстве оболочек, чтобы предотвратить преждевременное раскрытие шаблонов.

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

ESLint поддерживает несколько форматов вывода через --format.

Стандартный формат:

eslint src --format stylish

JSON:

eslint src --format json

HTML:

eslint src --format html

Форматы используются для интеграции с CI, генерации отчетов и визуализации ошибок.

Также возможно использование кастомных форматтеров:

eslint src --format ./formatters/my-formatter.js

Автоматическое исправление ошибок

Одной из ключевых возможностей CLI является автоисправление:

eslint src --fix

Исправляются только правила, поддерживающие автоматическое исправление. Остальные ошибки остаются без изменений.

Режим проверки без внесения изменений:

eslint src --fix-dry-run

Этот режим полезен для анализа потенциальных изменений перед применением.

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

ESLint использует несколько механизмов игнорирования:

.eslintignore

Файл .eslintignore задаёт исключения:

node_modules/
dist/
build/

Флаг –ignore-path

eslint src --ignore-path .gitignore

Отключение игнорирования

eslint src --no-ignore

Этот режим заставляет ESLint анализировать все файлы, включая обычно исключённые.

Кэширование результатов

Для ускорения повторных запусков используется кэш:

eslint src --cache

По умолчанию кэш хранится в .eslintcache. Можно изменить путь:

eslint src --cache --cache-location .cache/eslint.json

Кэширование особенно эффективно в крупных проектах с тысячами файлов.

Проверка конфигурации

CLI позволяет анализировать, какая конфигурация применяется к конкретному файлу:

eslint --print-config src/index.js

Вывод включает все правила, плагины, парсеры и расширенные настройки после объединения конфигураций.

Явное указание конфигурационного файла

eslint -c .eslintrc.json src

или

eslint --config ./config/eslint.config.js src

При использовании современных flat config подходов конфигурация может задаваться через eslint.config.js, что изменяет логику загрузки правил и плагинов.

Управление окружениями и глобальными переменными

CLI позволяет задавать глобальные переменные:

eslint src --global window,document

Также возможно указание среды выполнения:

eslint src --env browser,node

Хотя современные конфигурации чаще задают это через config-файлы, CLI остаётся доступным уровнем переопределения.

Управление правилами через CLI

Отдельные правила могут быть включены или отключены:

eslint src --rule "no-console: off"
eslint src --rule "eqeqeq: error"

Такой подход используется для временных исключений или отладки конфигурации.

Подробный режим и отладка

Debug-режим

eslint src --debug

Выводит информацию о загрузке конфигураций, плагинов и файлов.

Максимальная детализация

При проблемах с конфигурацией полезен режим:

eslint --print-config src/index.js

или комбинация с debug:

eslint src --debug

Контроль выходного кода

CLI возвращает коды завершения:

  • 0 — ошибок нет
  • 1 — найдены ошибки

Это используется в CI-системах:

eslint src || exit 1

или автоматически в pipeline:

eslint src

с последующим падением job при ошибках.

Ограничение количества ошибок

eslint src --max-warnings 10

Если количество предупреждений превышает порог, процесс завершается с ошибкой.

Обработка stdin

ESLint может анализировать код из стандартного ввода:

echo "const a = 1" | eslint --stdin

Часто используется в редакторах и интеграциях.

Также можно указать имя файла для корректного применения правил:

echo "const a = 1" | eslint --stdin --stdin-filename test.js

Выбор файлов и исключения

Дополнительные механизмы управления выборкой файлов:

eslint src --ignore-pattern "**/*.min.js"

Исключения можно комбинировать:

eslint src --ignore-pattern "dist/**" --ignore-pattern "build/**"

Проверка определённых типов файлов

eslint src --ext .js
eslint src --ext .js,.ts

При этом ESLint фильтрует файлы до анализа.

Интеграция с пакетными сценариями

Типичная практика использования CLI заключается в определении скриптов:

{
  "scripts": {
    "lint": "eslint src",
    "lint:fix": "eslint src --fix",
    "lint:ci": "eslint src --format json > eslint-report.json"
  }
}

Такая структура обеспечивает разделение режимов работы: локальная проверка, автоисправление и CI-отчётность.

Работа с монорепозиториями

В монорепозиториях часто применяется запуск по подкаталогам:

eslint packages/*/src

или через glob:

eslint "packages/**/src"

Это позволяет ограничивать область анализа конкретными пакетами.

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

CLI допускает приоритет конфигурации через явные параметры:

eslint src --config configs/eslint.base.js

При наличии нескольких конфигураций применяется последняя загруженная, но CLI позволяет переопределить поведение явно.

Совместимость с современным flat config

В новых версиях ESLint применяется flat config, где конфигурация представляет собой JavaScript-массив объектов.

Запуск CLI остаётся прежним:

eslint src

Однако поведение загрузки конфигурации меняется: отсутствует каскадное наследование .eslintrc, и вместо этого используется единый конфигурационный файл.

Оптимизация производительности CLI

Производительность CLI зависит от нескольких факторов:

  • использование --cache
  • ограничение области проверки
  • исключение тяжёлых директорий
  • минимизация количества подключённых плагинов

Пример оптимизированного запуска:

eslint src --cache --ext .js,.ts

Расширенные сценарии запуска

Проверка только изменённых файлов

В связке с git:

eslint $(git diff --name-only --cached)

Проверка конкретного набора директорий

eslint src server shared

Проверка одного файла с конкретным форматтером

eslint src/index.js --format unix

Поведение при ошибках парсинга

Если файл содержит синтаксическую ошибку, ESLint прекращает анализ этого файла и выводит соответствующее сообщение. При этом остальные файлы продолжают проверяться, если не задано обратное поведение через CI-обвязку.

Использование CLI в автоматизированных пайплайнах

CLI ESLint часто включается в этап линтинга перед сборкой:

npm run lint && npm run build

или в CI-конфигурации:

eslint src --format junit > report.xml

Формат JUnit используется для интеграции с системами отчётности.

Множественные форматы вывода одновременно

CLI напрямую поддерживает только один формат, но можно комбинировать через перенаправление потоков:

eslint src --format json > report.json

и параллельно:

eslint src --format stylish

Расширенная диагностика загрузки модулей

При проблемах с плагинами:

eslint src --debug

отображает:

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

Это критически важно при сложных конфигурациях с несколькими уровнями зависимостей.

CLI как точка управления качеством кода

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