Spec-Zone.ru › ESLint

Файлы-исключения

Подсказка

Эта страница объясняет, как игнорировать файлы с помощью формата конфигурации flat. Для устаревшего формата eslintrc, см. устаревшую документацию.

Вы можете настроить 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
        ]
    }
];
Важно

Обратите внимание, что только глобальные ignores шаблоны могут соответствовать каталогам. ignores шаблоны, которые специфичны для конфигурации, будут соответствовать только именам файлов.

Вы также можете отменить игнорирование файлов в командной строке, используя --ignore-pattern, например:

npx eslint . --ignore-pattern "!node_modules/"

Разрешение шаблонов glob

Способы оценки шаблонов glob зависят от их расположения и использования:

  1. При использовании ignores в файле eslint.config.js, шаблоны glob оцениваются относительно файла eslint.config.js.
  2. При использовании ignores в альтернативном файле конфигурации, указанном с помощью опции командной строки --config, шаблоны glob оцениваются относительно текущего рабочего каталога.
  3. При использовании --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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API