Файл .eslintignore определяет набор правил, по которым
ESLint исключает файлы и директории из анализа, сокращая область
проверки и позволяя гибко управлять тем, какие части проекта должны
участвовать в линтинге.
Игнорирование работает на уровне этапа обхода файловой системы: ESLint формирует список кандидатов для проверки, затем исключает из него пути, соответствующие паттернам игнора.
ESLint анализирует весь проект или его часть, переданную через CLI или конфигурацию. Без ограничений линтер может обработать:
node_modulesdist, buildИсключение этих данных снижает нагрузку на анализ и предотвращает ложные срабатывания на код, который не предназначен для ручного сопровождения.
Файл .eslintignore использует синтаксис, близкий к
.gitignore, включая поддержку glob-паттернов.
Каждая строка — отдельный шаблон:
node_modules/
dist/
build/
node_modules/ — исключает всю директориюdist/ — исключает сборку проектаbuild/ — исключает результаты компиляцииПустые строки игнорируются. Комментарии начинаются с
#:
# зависимости
node_modules/
# сборка
dist/
Поддерживаются символы:
* — любое количество символов в пределах одного
сегмента** — рекурсивное совпадение по директориям? — один символПримеры:
**/*.min.js
src/**/temp/
**/*.test.js
**/*.min.js — все минифицированные файлы в проектеsrc/**/temp/ — любые папки temp внутри
src**/*.test.js — тестовые файлы во всех директорияхПаттерны в .eslintignore интерпретируются относительно
директории, где расположен файл. Обычно это корень проекта.
project/
.eslintignore
src/
dist/
Паттерн dist/ будет соответствовать
project/dist/.
Если ESLint запускается из подпапки или с параметрами CLI, поведение может зависеть от точки запуска, но в современных версиях приоритет имеет конфигурация в корне проекта.
Поддерживается исключение из игнора через !:
dist/
!dist/important-file.js
Здесь вся директория dist игнорируется, кроме указанного
файла.
Инверсия работает только если предыдущий паттерн уже исключил
область. Если файл не попадает под игнор, ! не имеет
эффекта.
ESLint применяет .eslintignore автоматически при
запуске:
eslint .
Можно переопределить игнорирование через флаги:
--no-ignore — отключает игнорирование--ignore-path — задаёт альтернативный файл игнораПример:
eslint . --ignore-path .customignore
Система игнорирования ESLint включает несколько уровней:
.eslintignoreignorePatterns в конфигурацииnode_modules в
некоторых режимах)Если используются несколько источников, они объединяются в единое правило исключений.
В ESLint Flat Config (начиная с ESLint 8+ и особенно актуально в
ESLint 9) механизм .eslintignore считается устаревающим в
пользу явной конфигурации через ignores.
Пример flat config:
export default [
{
ignores: [
"node_modules/**",
"dist/**",
"**/*.min.js"
]
}
];
В этом формате:
.eslintignoreТем не менее .eslintignore продолжает поддерживаться для
обратной совместимости.
ignorePatterns задаётся внутри конфигурации ESLint:
module.exports = {
ignorePatterns: ["dist/", "build/"]
};
Основные различия:
.eslintignore — внешний файл, независимый от
конфигурацииignorePatterns — часть конфигурации проектаignoresПри наличии противоречий приоритет зависит от версии ESLint, но в большинстве случаев конфигурационные правила считаются более явными.
ESLint нормализует пути перед сравнением:
\ к / на Windows./, ../ где
возможно)Пример:
src//utils///helpers.js
будет интерпретирован как:
src/utils/helpers.js
Игнорирование напрямую влияет на производительность линтинга. Особенно критично это в крупных проектах:
node_modules предотвращает экспоненциальный
рост анализаВ проектах с тысячами файлов корректно настроенный
.eslintignore может сокращать время проверки в несколько
раз.
Часто используемые шаблоны:
node_modules/
coverage/
dist/
build/
logs/
*.min.js
*.bundle.js
Также часто исключаются:
.cache/.next/.nuxt/.parcel-cache/Распространённые проблемы:
Иногда чрезмерно широкие паттерны исключают реальные исходники:
src/**
Это приводит к тому, что ESLint фактически не анализирует проект.
При использовании lint-staged игнор может дублировать
фильтрацию, что приводит к неожиданному пропуску файлов.
Паттерны без учёта структуры проекта:
/dist
может не совпадать с ожидаемым dist/, если интерпретация
пути отличается.
Если файл явно передан в CLI:
eslint src/app.js
и он попадает под .eslintignore, он всё равно может быть
проигнорирован. Однако флаг --no-ignore переопределяет это
поведение.
Хотя .eslintignore исключает файлы полностью,
overrides в конфигурации ESLint не могут «вернуть» файл из
игнора. Для этого используется инверсия или изменение конфигурации
игнорирования.
Исторически .eslintignore был основным механизмом
исключения файлов, но развитие ESLint привело к смещению в сторону:
Это связано с необходимостью устранить неоднозначность поведения и сделать конфигурацию более детерминированной.
В монорепозиториях .eslintignore часто применяется на
уровне корня:
packages/
apps/
dist/
node_modules/
Однако при сложной структуре предпочтительнее локальные
ignores в flat config, поскольку они позволяют задавать
разные правила для отдельных пакетов.
Инструменты, интегрированные с ESLint:
все учитывают .eslintignore, если используют ESLint API.
Это делает файл критически важным для согласованности поведения между
средами разработки и сборки.