Игнорирование файлов
Можно настроить ESLint так, чтобы он игнорировал определённые файлы и каталоги при проверке, указав один или несколько шаблонов glob одним из следующих способов:
- Внутри файла
eslint.config.js. - В командной строке с помощью
--ignore-pattern.
Игнорирование файлов
В файле eslint.config.js можно использовать вспомогательную функцию globalIgnores(), чтобы указать шаблоны игнорируемых файлов. Например:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([globalIgnores([".config/*"])]);
В этой конфигурации указано, что все файлы в каталоге .config нужно игнорировать. Этот шаблон добавляется после шаблонов по умолчанию: ["**/node_modules/", ".git/"].
По умолчанию ESLint проверяет файлы, соответствующие шаблонам **/*.js, **/*.cjs и **/*.mjs. Если вы не хотите, чтобы ESLint проверял эти файлы, их можно игнорировать с помощью globalIgnores():
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["**/*.js", "**/*.cjs", "**/*.mjs"]),
]);
Если в свойстве files указаны файлы, не относящиеся к JS, ESLint всё равно проверяет файлы, соответствующие шаблонам по умолчанию. Чтобы проверять только файлы, указанные в свойстве files, необходимо игнорировать шаблоны файлов по умолчанию:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["**/*.js", "**/*.cjs", "**/*.mjs"]),
{
files: ["**/*.ts"],
ignores: [".config/**"],
rules: {
/* ... */
},
},
]);
Также можно игнорировать файлы в командной строке с помощью --ignore-pattern, например:
npm
npx eslint . --ignore-pattern '.config/*'
yarn
yarn dlx eslint . --ignore-pattern '.config/*'
pnpm
pnpm dlx eslint . --ignore-pattern '.config/*'
bun
bunx eslint . --ignore-pattern '.config/*'
Игнорирование каталогов
Игнорирование каталогов работает так же, как игнорирование файлов: для этого нужно передать шаблон вспомогательной функции globalIgnores(). Например, следующий шаблон игнорирует каталог .config целиком (то есть поиск файлов вообще не будет заходить в него):
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([globalIgnores([".config/"])]);
В отличие от .gitignore, шаблон игнорирования вроде .config игнорирует только каталог .config, находящийся в том же каталоге, что и файл конфигурации. Чтобы рекурсивно игнорировать все каталоги с именем .config, нужно использовать **/.config/, как в этом примере:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([globalIgnores(["**/.config/"])]);
Отмена игнорирования файлов и каталогов
Также можно отменить игнорирование файлов и каталогов, игнорируемых предыдущими шаблонами, включая шаблоны по умолчанию. Например, эта конфигурация отменяет игнорирование node_modules/mylibrary:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores([
"!node_modules/", // unignore `node_modules/` directory
"node_modules/*", // ignore its content
"!node_modules/mylibrary/", // unignore `node_modules/mylibrary` directory
]),
]);
Если нужно игнорировать каталог, кроме определённых файлов или подкаталогов, следует использовать шаблон игнорирования directory/**/* вместо directory/**. Шаблон directory/** игнорирует весь каталог и его содержимое, поэтому обход полностью пропускает этот каталог и отменить игнорирование чего-либо внутри него невозможно.
Например, build/** игнорирует каталог build вместе с его содержимым, а build/**/* игнорирует только его содержимое. Если нужно игнорировать всё в каталоге build, кроме build/test.js, конфигурация должна выглядеть так:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores([
"build/**/*", // ignore all contents in and under `build/` directory but not the `build/` directory itself
"!build/test.js", // unignore `!build/test.js`
]),
]);
Если нужно игнорировать каталог, кроме определённых файлов на любом уровне вложенности, также следует убедиться, что подкаталоги не игнорируются. Обратите внимание: шаблоны, оканчивающиеся на /, соответствуют только каталогам, а шаблоны без / соответствуют и файлам, и каталогам. Поэтому невозможно написать один шаблон, который игнорирует только файлы, но этого можно добиться с помощью двух шаблонов: один игнорирует всё содержимое, а другой отменяет игнорирование подкаталогов.
Например, эта конфигурация игнорирует все файлы в каталоге build и во всех его вложенных каталогах, кроме файлов с именем test.js на любом уровне:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores([
"build/**/*", // ignore all contents in and under `build/` directory but not the `build/` directory itself
"!build/**/*/", // unignore all subdirectories
"!build/**/test.js", // unignore `test.js` files
]),
]);
Если нужно игнорировать шаблоны файлов ESLint по умолчанию (**/*.js, **/*.cjs и **/*.mjs), но при этом проверять определённые файлы или каталоги, можно отменить их игнорирование с помощью отрицательных шаблонов:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["**/*.js", "**/*.cjs", "**/*.mjs", "!**/src/**/*.js"]),
]);
Эта конфигурация игнорирует все файлы, соответствующие шаблонам по умолчанию, кроме файлов JavaScript, находящихся в каталогах src.
Также можно отменить игнорирование файлов в командной строке с помощью --ignore-pattern, например:
npm
npx eslint . --ignore-pattern '!node_modules/'
yarn
yarn dlx eslint . --ignore-pattern '!node_modules/'
pnpm
pnpm dlx eslint . --ignore-pattern '!node_modules/'
bun
bunx eslint . --ignore-pattern '!node_modules/'
Разрешение шаблонов glob
Способ обработки шаблонов glob зависит от их расположения и использования:
- При использовании
globalIgnores()в файлеeslint.config.jsшаблоны glob обрабатываются относительно файлаeslint.config.js. - При использовании
globalIgnores()в альтернативном файле конфигурации, указанном с помощью параметра командной строки--config, шаблоны glob обрабатываются относительно текущего рабочего каталога. - При использовании
--ignore-patternшаблоны glob обрабатываются относительно текущего рабочего каталога.
Имя конфигурации глобальных правил игнорирования
По умолчанию globalIgnores() присваивает имя конфигурации, содержащей правила игнорирования. Вы можете задать другое имя, передав вторым аргументом функции globalIgnores() имя, которое хотите использовать вместо имени по умолчанию:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([
globalIgnores(["build/**/*"], "Ignore Build Directory"),
]);
Строка "Ignore Build Directory" в этом примере — имя конфигурации, созданной для глобальных правил игнорирования. Это полезно для отладки.
Предупреждения об игнорируемых файлах
Если передать каталог CLI ESLint, файлы и каталоги будут молча проигнорированы. Если передать ESLint конкретный файл, ESLint выдаст предупреждение о том, что файл пропущен. Например, предположим, что у вас есть файл eslint.config.js со следующим содержимым:
// eslint.config.js
import { defineConfig, globalIgnores } from "eslint/config";
export default defineConfig([globalIgnores(["foo.js"])]);
Затем выполните команду:
npm
npx eslint foo.js
yarn
yarn dlx eslint foo.js
pnpm
pnpm dlx eslint foo.js
bun
bunx eslint foo.js
Вы увидите следующее предупреждение:
foo.js
0:0 warning File ignored because of a matching ignore pattern. Use "--no-ignore" to disable file ignore settings or use "--no-warn-ignored" to suppress this warning.
✖ 1 problem (0 errors, 1 warning)
Это сообщение появляется, потому что ESLint не знает, действительно ли вы хотели проверить этот файл. Как указано в сообщении, можно использовать --no-ignore, чтобы не применять правила игнорирования.
Включение файлов .gitignore
Если вы хотите включить шаблоны из файла .gitignore или любого другого файла с шаблонами в стиле gitignore, можно использовать утилиту includeIgnoreFile.
// eslint.config.js
import { defineConfig, includeIgnoreFile } from "eslint/config";
import { fileURLToPath } from "node:url";
const gitignorePath = fileURLToPath(new URL(".gitignore", import.meta.url));
export default defineConfig([
includeIgnoreFile(gitignorePath, { gitignoreResolution: true }),
{
// your overrides
},
]);
Указанный файл загружается автоматически, а шаблоны в стиле gitignore преобразуются в объект конфигурации, содержащий шаблоны glob ignores. Параметр { gitignoreResolution: true } указывает, что шаблоны следует интерпретировать относительно расположения указанного файла.
Также можно указать массив путей к файлам игнорирования:
// eslint.config.js
import { defineConfig, includeIgnoreFile } from "eslint/config";
import { fileURLToPath } from "node:url";
const rootGitignorePath = fileURLToPath(new URL(".gitignore", import.meta.url));
const nestedGitignorePath = fileURLToPath(
new URL("some/other/folder/.gitignore", import.meta.url),
);
export default defineConfig([
includeIgnoreFile([rootGitignorePath, nestedGitignorePath], {
gitignoreResolution: true,
}),
{
// your overrides
},
]);
В этом случае будет возвращён массив объектов конфигурации.
Включение других файлов игнорирования
Если { gitignoreResolution: true } не указан или задано значение { gitignoreResolution: false" }, includeIgnoreFile() будет интерпретировать шаблоны игнорирования относительно расположения файла конфигурации ESLint.
// eslint.config.js
import { defineConfig, includeIgnoreFile } from "eslint/config";
import { fileURLToPath } from "node:url";
const eslintIgnorePath = fileURLToPath(
new URL("eslint-ignore-patterns", import.meta.url),
);
export default defineConfig([
includeIgnoreFile(eslintIgnorePath),
{
// your overrides
},
]);
В отличие от этого, файлы .gitignore указываются так, что шаблоны игнорирования должны интерпретироваться относительно расположения самого файла .gitignore. Поэтому при включении шаблонов игнорирования из файлов .gitignore всегда следует использовать { gitignoreResolution: true }, которая указывает includeIgnoreFile() следовать этому поведению.
Настройка имени выходных конфигураций
По умолчанию includeIgnoreFile() присваивает имя конфигурации, содержащей правила игнорирования. Это имя можно переопределить, указав его вторым аргументом функции includeIgnoreFile():
// eslint.config.js
import { defineConfig, includeIgnoreFile } from "eslint/config";
import { fileURLToPath } from "node:url";
const gitignorePath = fileURLToPath(new URL(".gitignore", import.meta.url));
export default defineConfig([
includeIgnoreFile(gitignorePath, {
gitignoreResolution: true,
name: "Imported .gitignore patterns",
}),
{
// your overrides
},
]);
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/use/configure/ignore