忽略文件 (已弃用)
您可以通过指定一个或多个 glob 模式来配置 ESLint 以在代码检查时忽略某些文件和目录。您可以通过以下方式忽略文件
- 将
ignorePatterns
添加到配置文件中。 - 创建一个包含忽略模式的专用文件(默认情况下为
.eslintignore
)。
配置文件中的 ignorePatterns
您可以使用配置文件中的 ignorePatterns
告诉 ESLint 忽略特定的文件和目录。ignorePatterns
模式遵循与 .eslintignore
相同的规则。请参阅 .eslintignore
文件文档 以了解更多信息。
{
"ignorePatterns": ["temp.js", "**/vendor/*.js"],
"rules": {
//...
}
}
ignorePatterns
中的 glob 模式相对于放置配置文件的目录。- 您不能在
overrides
属性下编写ignorePatterns
属性。 - .eslintignore 中定义的模式优先于配置文件的
ignorePatterns
属性。
如果 glob 模式以 /
开头,则该模式相对于配置文件的基目录。例如,lib/.eslintrc.json
中的 /foo.js
匹配 lib/foo.js
,但不匹配 lib/subdir/foo.js
。
如果通过 --config
CLI 选项提供配置,则配置中以 /
开头的忽略模式相对于当前工作目录,而不是给定配置的基目录。例如,如果存在 --config configs/.eslintrc.json
,则配置中的忽略模式相对于 .
而不是 ./configs
。
.eslintignore 文件
您可以通过在项目的根目录中创建一个 .eslintignore
文件来告诉 ESLint 忽略特定的文件和目录。.eslintignore
文件是一个纯文本文件,其中每一行都是一个 glob 模式,指示哪些路径应从代码检查中省略。例如,以下示例省略了所有 JavaScript 文件
**/*.js
当运行 ESLint 时,它会在当前工作目录中查找 .eslintignore
文件,然后再确定要检查的文件。如果找到此文件,则在遍历目录时应用这些首选项。一次只能使用一个 .eslintignore
文件,因此除了当前工作目录中的文件之外的其他 .eslintignore
文件不会被使用。
Globs 使用 node-ignore 进行匹配,因此可以使用许多功能
- 以
#
开头的行被视为注释,不会影响忽略模式。 - 路径相对于当前工作目录。这对于通过
--ignore-pattern
命令 传递的路径也适用。 - 以
!
开头的行是否定模式,用于重新包含先前模式忽略的模式。 - 忽略模式的行为遵循
.gitignore
规范。
特别需要注意的是,与 .gitignore
文件类似,用作 .eslintignore
和 --ignore-pattern
模式的所有路径都必须使用正斜杠作为其路径分隔符。
# Valid
/root/src/*.js
# Invalid
\root\src\*.js
请参阅 .gitignore
的规范以获取有关有效语法的更多示例。
除了 .eslintignore
文件中的任何模式外,即使传递了 --no-ignore
标志,ESLint 始终遵循一些隐式忽略规则。隐式规则如下
- 忽略
node_modules/
。 - 忽略点文件(除了
.eslintrc.*
)以及点文件夹及其内容。
这些规则也有一些例外情况
-
如果要检查的路径是 glob 模式或目录路径,并且包含点文件夹,则会检查所有点文件和点文件夹。这包括更深层次目录结构中的点文件和点文件夹。
例如,
eslint .config/
将检查.config
目录中的所有点文件夹和点文件,包括直接子级以及更深层次目录结构中的子级。 -
如果要检查的路径是特定文件路径,并且已传递
--no-ignore
标志,则 ESLint 将检查该文件,而不管隐式忽略规则如何。例如,
eslint .config/my-config-file.js --no-ignore
将导致检查my-config-file.js
。需要注意的是,在没有--no-ignore
行的情况下执行相同的命令将不会检查my-config-file.js
文件。 -
通过
--ignore-pattern
或.eslintignore
指定的白名单和黑名单规则优先于隐式忽略规则。例如,在这种情况下,
.build/test.js
是要列入白名单的所需文件。由于默认情况下会忽略所有点文件夹及其子级,因此必须首先列入.build
的白名单,以便 eslint 能够识别其子级。然后,必须明确列入.build/test.js
的白名单,而其余内容则列入黑名单。这可以通过以下.eslintignore
文件实现# Allowlist 'test.js' in the '.build' folder # But do not allow anything else in the '.build' folder to be linted !.build .build/* !.build/test.js
以下
--ignore-pattern
也等效eslint --ignore-pattern '!.build' --ignore-pattern '.build/*' --ignore-pattern '!.build/test.js' parent-folder/
使用备用文件
如果您希望使用与当前工作目录中的 .eslintignore
不同的文件,则可以使用 --ignore-path
选项在命令行中指定它。例如,您可以使用 .jshintignore
文件,因为它具有相同的格式
eslint --ignore-path .jshintignore file.js
您也可以使用您的 .gitignore
文件
eslint --ignore-path .gitignore file.js
可以使用任何遵循标准忽略文件格式的文件。请记住,指定 --ignore-path
意味着不会使用现有的 .eslintignore
文件。请注意,.eslintignore
中的 glob 规则遵循 .gitignore
的规则。
在 package.json 中使用 eslintIgnore
如果未找到 .eslintignore
文件且未指定备用文件,则 ESLint 会在 package.json
中查找 eslintIgnore
键以检查要忽略的文件。
{
"name": "mypackage",
"version": "0.0.1",
"eslintConfig": {
"env": {
"browser": true,
"node": true
}
},
"eslintIgnore": ["hello.js", "world.js"]
}
忽略文件警告
当您将目录传递给 ESLint 时,文件和目录会被静默忽略。如果您将特定文件传递给 ESLint,则 ESLint 会发出警告,表明该文件已被跳过。例如,假设您有一个 .eslintignore
文件,其内容如下
foo.js
然后您运行
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
来省略使用忽略规则。
考虑另一种情况,您希望对特定的点文件或点文件夹运行 ESLint,但忘记在您的 .eslintignore
文件中明确允许这些文件。您将运行类似以下内容
eslint .config/foo.js
您将看到此警告
.config/foo.js
0:0 warning File ignored by default. Use a negated ignore pattern (like "--ignore-pattern '!<relative/path/to/filename>'") to override
✖ 1 problem (0 errors, 1 warning)
出现此消息是因为,通常,此文件将被 ESLint 的隐式忽略规则(如上所述)忽略。.eslintignore
文件中的否定忽略规则将覆盖隐式规则,并将此文件重新包含在代码检查中。此外,在这种情况下,也可以使用 --no-ignore
来检查该文件。