配置规则(已弃用)
规则是 ESLint 的核心构建块。规则验证您的代码是否满足特定期望,以及如果不满足期望该怎么做。规则还可以包含特定于该规则的附加配置选项。
ESLint 附带大量的 内置规则,您可以通过插件添加更多规则。您可以使用配置注释或配置文件修改项目使用的规则。
规则严重性
要更改规则的严重性,请将规则 ID 设置为以下值之一
"off"
或0
- 关闭规则"warn"
或1
- 将规则打开为警告(不影响退出代码)"error"
或2
- 将规则打开为错误(触发时退出代码为 1)
规则通常设置为 "error"
以在持续集成测试、预提交检查和拉取请求合并期间强制执行规则的合规性,因为这样做会导致 ESLint 退出并返回非零退出代码。
如果您不想强制执行规则的合规性,但仍然希望 ESLint 报告规则的违规行为,请将严重性设置为 "warn"
。这通常用于在引入最终将设置为 "error"
的新规则时,当规则标记的是潜在的构建时或运行时错误以外的内容(例如未使用的变量)时,或者当规则无法确定地确定已发现问题时(当规则可能存在误报并需要手动审查时)。
使用配置注释
要在文件中使用配置注释配置规则,请使用以下格式的注释
/* eslint eqeqeq: "off", curly: "error" */
在此示例中,eqeqeq
已关闭,curly
已打开为错误。您还可以使用规则严重性的数字等效项
/* eslint eqeqeq: 0, curly: 2 */
此示例与上一个示例相同,只是它使用的是数字代码而不是字符串值。eqeqeq
规则已关闭,curly
规则已设置为错误。
如果规则具有其他选项,则可以使用数组字面量语法指定它们,例如
/* eslint quotes: ["error", "double"], curly: 2 */
此注释为 quotes
规则指定“double”选项。数组中的第一个项目始终是规则严重性(数字或字符串)。
配置注释描述
配置注释可以包含描述以解释为什么需要注释。描述必须出现在配置之后,并通过两个或更多个连续的 -
字符与配置隔开。例如
/* eslint eqeqeq: "off", curly: "error" -- Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
--------
Here's a description about why this configuration is necessary. */
/* eslint eqeqeq: "off", curly: "error"
* --------
* This will not work due to the line above starting with a '*' character.
*/
使用配置文件
要在配置文件中配置规则,请使用 rules
键以及您要使用的错误级别和任何选项。例如
{
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"]
}
}
在 YAML 中
---
rules:
eqeqeq: off
curly: error
quotes:
- error
- double
来自插件的规则
要配置在插件中定义的规则,请在规则 ID 前面加上插件名称和 /
。
例如,在配置文件中
{
"plugins": [
"plugin1"
],
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"],
"plugin1/rule1": "error"
}
}
在 YAML 中
---
plugins:
- plugin1
rules:
eqeqeq: 0
curly: error
quotes:
- error
- "double"
plugin1/rule1: error
在这些配置文件中,规则 plugin1/rule1
来自名为 plugin1
的插件,该插件包含在名为 eslint-plugin-plugin1
的 npm 包中。
您也可以将此格式与配置注释一起使用,例如
/* eslint "plugin1/rule1": "error" */
注意:在指定来自插件的规则时,请确保省略 eslint-plugin-
。ESLint 在内部仅使用未带前缀的名称来查找规则。
禁用规则
使用配置注释
- 谨慎使用。应该限制在文件中禁用 ESLint 规则的操作,并且仅在有明确且有效的理由的情况下使用。在文件中禁用规则不应该成为解决代码检测错误的默认解决方案。
- 记录原因。在注释的
--
部分之后提供一个注释来解释禁用特定规则的原因。此文档应阐明为什么禁用规则以及为什么在该特定情况下需要禁用规则。 - 临时解决方案。如果添加禁用注释是为了暂时解决紧迫的问题,请创建一个后续任务来充分解决潜在的问题。这确保在以后的阶段重新审视和解决禁用注释。
- 代码审查和结对编程。鼓励团队成员定期审查彼此的代码。代码审查可以帮助确定禁用注释背后的原因,并确保它们的使用得当。
- 配置。尽可能优先使用 ESLint 配置文件而不是禁用注释。配置文件允许一致且全项目范围的规则处理。
要禁用文件一部分中的规则警告,请使用以下格式的块注释
/* eslint-disable */
alert('foo');
/* eslint-enable */
您还可以为特定规则禁用或启用警告
/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-enable no-alert, no-console */
注意:/* eslint-enable */
不带任何特定规则列表会导致所有禁用的规则重新启用。
要禁用整个文件中的规则警告,请在文件顶部放置一个 /* eslint-disable */
块注释
/* eslint-disable */
alert('foo');
您还可以为整个文件禁用或启用特定规则
/* eslint-disable no-alert */
alert('foo');
要确保从不应用规则(无论将来使用任何启用/禁用行)
/* eslint no-alert: "off" */
alert('foo');
要禁用特定行上的所有规则,请使用以下格式之一的行注释或块注释
alert('foo'); // eslint-disable-line
// eslint-disable-next-line
alert('foo');
/* eslint-disable-next-line */
alert('foo');
alert('foo'); /* eslint-disable-line */
要禁用特定行上的特定规则
alert('foo'); // eslint-disable-line no-alert
// eslint-disable-next-line no-alert
alert('foo');
alert('foo'); /* eslint-disable-line no-alert */
/* eslint-disable-next-line no-alert */
alert('foo');
要禁用特定行上的多个规则
alert('foo'); // eslint-disable-line no-alert, quotes, semi
// eslint-disable-next-line no-alert, quotes, semi
alert('foo');
alert('foo'); /* eslint-disable-line no-alert, quotes, semi */
/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');
/* eslint-disable-next-line
no-alert,
quotes,
semi
*/
alert('foo');
所有上述方法也适用于插件规则。例如,要禁用 eslint-plugin-example
的 rule-name
规则,请将插件的名称 (example
) 和规则的名称 (rule-name
) 合并为 example/rule-name
foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */
注意:禁用文件一部分中的警告的注释告诉 ESLint 不要报告已禁用代码中的规则违规行为。但是,ESLint 仍然会解析整个文件,因此禁用的代码仍然需要是语法有效的 JavaScript。
注释描述
配置注释可以包含描述以解释为什么禁用或重新启用规则是必要的。描述必须出现在配置之后,并且需要通过两个或更多个连续的 -
字符与配置隔开。例如
// eslint-disable-next-line no-console -- Here's a description about why this configuration is necessary.
console.log('hello');
/* eslint-disable-next-line no-console --
* Here's a very long description about why this configuration is necessary
* along with some additional information
**/
console.log('hello');
使用配置文件
要在配置文件中为一组文件禁用规则,请使用 overrides
键以及 files
键。例如
{
"rules": {...},
"overrides": [
{
"files": ["*-test.js","*.spec.js"],
"rules": {
"no-unused-expressions": "off"
}
}
]
}
禁用内联注释
要禁用所有内联配置注释,请在您的配置文件中使用 noInlineConfig
设置。例如
{
"rules": {...},
"noInlineConfig": true
}
您还可以使用 --no-inline-config
CLI 选项来禁用规则注释,以及其他内联配置。
报告未使用的 eslint-disable
注释
要报告未使用的 eslint-disable
注释,请使用 reportUnusedDisableDirectives
设置。例如
{
"rules": {...},
"reportUnusedDisableDirectives": true
}
此设置类似于 --report-unused-disable-directives
CLI 选项,但不失败代码检测(以 "warn"
严重性报告)。