忽略文件
您可以通过以下方式在 eslint.config.js
文件中指定一个或多个全局模式,配置 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/"
全局模式解析
全局模式的评估方式取决于它们的位置和使用方法
- 在
eslint.config.js
文件中使用ignores
时,全局模式相对于eslint.config.js
文件进行评估。 - 在使用
--config
命令行选项指定的备用配置文件中使用ignores
时,全局模式相对于当前工作目录进行评估。 - 在使用
--ignore-pattern
时,全局模式相对于当前工作目录进行评估。
忽略文件警告
当您将目录传递给 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 风格模式的文件中包含模式,您可以使用 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
全局模式。