忽略文件
您可以通过以下方式在以下一个或多个 glob 模式中指定,配置 ESLint 以在 lint 时忽略某些文件和目录
- 在您的
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 模式如何评估取决于它们的位置和使用方法
- 在
eslint.config.js
文件中使用ignores
时,glob 模式相对于eslint.config.js
文件进行评估。 - 在使用
--config
命令行选项指定的备用配置文件中使用ignores
时,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 不确定您是否真的想 lint 该文件。如消息所示,您可以使用 --no-ignore
省略使用忽略规则。
包含 .gitignore 文件
如果您想包含来自 .gitignore
文件或任何其他包含 gitignore 样式模式的文件的模式,您可以使用 @eslint/compat
包中的 includeIgnoreFile
实用程序。
// 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 模式。