Файлы-исключения
Вы можете настроить ESLint для игнорирования определённых файлов и каталогов при проверке кода, указав один или несколько шаблонов glob следующими способами:
- Внутри вашего
eslint.config.jsфайла - В командной строке, используя
--ignore-pattern
Игнорирование файлов
В вашем eslint.config.js файле, если ключ ignores используется без других ключей в объекте конфигурации, то шаблоны действуют как глобальные исключения. Вот пример:
// eslint.config.js
export default [
{
ignores: [".config/*"]
}
];
Эта конфигурация указывает, что все файлы в каталоге .config должны быть проигнорированы. Этот шаблон добавляется после стандартных шаблонов, которые являются ["**/node_modules/", ".git/"].
Вы также можете игнорировать файлы в командной строке, используя --ignore-pattern, например:
npx eslint . --ignore-pattern ".config/*"
Игнорирование каталогов
Игнорирование каталогов работает так же, как и игнорирование файлов, размещая шаблон в ключе ignores объекта конфигурации без других ключей. Например, следующее игнорирует каталог .config целиком (т.е. поиск файлов не будет проходить в него):
// eslint.config.js
export default [
{
ignores: [".config/"]
}
];
В отличие от .gitignore, шаблон игнорирования, подобный .config, будет игнорировать только каталог .config в том же каталоге, что и файл конфигурации. Если вы хотите рекурсивно игнорировать все каталоги с именем .config, вам необходимо использовать **/.config/, как в этом примере:
// eslint.config.js
export default [
{
ignores: ["**/.config/"]
}
];
Отмена игнорирования файлов и каталогов
Вы также можете отменить игнорирование файлов и каталогов, которые игнорируются предыдущими шаблонами, включая стандартные шаблоны. Например, эта конфигурация отменяет игнорирование node_modules/mylibrary:
export default [
{
ignores: [
"!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, вам потребуется создать конфигурацию такого вида:
export default [
{
ignores: [
"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 на любом уровне:
export default [
{
ignores: [
"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
]
}
];
Вы также можете отменить игнорирование файлов в командной строке, используя --ignore-pattern, например:
npx eslint . --ignore-pattern "!node_modules/"
Разрешение шаблонов glob
Способы оценки шаблонов glob зависят от их расположения и использования:
- При использовании
ignoresв файлеeslint.config.js, шаблоны glob оцениваются относительно файлаeslint.config.js. - При использовании
ignoresв альтернативном файле конфигурации, указанном с помощью опции командной строки--config, шаблоны glob оцениваются относительно текущего рабочего каталога. - При использовании
--ignore-pattern, шаблоны glob оцениваются относительно текущего рабочего каталога.
Предупреждения о пропущенных файлах
Когда вы передаёте каталоги в ESLint CLI, файлы и каталоги молча игнорируются. Если вы передаёте конкретный файл в ESLint, ESLint выводит предупреждение, что файл был пропущен. Например, предположим, что у вас есть файл eslint.config.js который выглядит так:
// eslint.config.js
export default [
{
ignores: ["foo.js"]
}
]
И затем вы запускаете:
npx 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/compat.
// eslint.config.js
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");
export default [
includeIgnoreFile(gitignorePath),
{
// your overrides
}
];
Это автоматически загружает указанный файл и преобразует шаблоны в стиле gitignore в ignores шаблоны glob.
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/use/configure/ignore