配置插件(已弃用)
您可以通过多种不同的方式使用插件扩展 ESLint。插件可以包括
- 自定义规则,以验证您的代码是否满足特定期望,以及如果不满足该期望该怎么办。
- 自定义配置。
- 自定义环境。
- 自定义处理器,用于从其他类型的文件中提取 JavaScript 代码或在 lint 之前预处理代码。
配置插件
ESLint 支持使用第三方插件。在使用插件之前,您必须使用 npm 安装它。
要在配置文件中配置插件,请使用 plugins
键,其中包含插件名称列表。可以省略插件名称中的 eslint-plugin-
前缀。
{
"plugins": [
"plugin1",
"eslint-plugin-plugin2"
]
}
以及在 YAML 中
---
plugins:
- plugin1
- eslint-plugin-plugin2
注意
- 插件相对于配置文件解析。换句话说,ESLint 加载插件的方式与用户在配置文件中运行
require('eslint-plugin-pluginname')
相同。 - 基本配置(由
extends
设置加载)中的插件相对于派生配置文件解析。例如,如果./.eslintrc
有extends: ["foo"]
并且eslint-config-foo
有plugins: ["bar"]
,则 ESLint 从./node_modules/
(而不是./node_modules/eslint-config-foo/node_modules/
)或祖先目录中找到eslint-plugin-bar
。因此,配置文件和基本配置中的每个插件都将被唯一解析。
命名约定
包含插件
对于非作用域和作用域包,都可以省略 eslint-plugin-
前缀。
非作用域包
{
// ...
"plugins": [
"jquery", // means eslint-plugin-jquery
]
// ...
}
作用域包
{
// ...
"plugins": [
"@jquery/jquery", // means @jquery/eslint-plugin-jquery
"@foobar" // means @foobar/eslint-plugin
]
// ...
}
使用插件
插件中定义的规则、环境和配置必须使用以下约定进行引用
eslint-plugin-foo
→foo/a-rule
@foo/eslint-plugin
→@foo/a-config
@foo/eslint-plugin-bar
→@foo/bar/a-environment
例如
{
// ...
"plugins": [
"jquery", // eslint-plugin-jquery
"@foo/foo", // @foo/eslint-plugin-foo
"@bar" // @bar/eslint-plugin
],
"extends": [
"plugin:@foo/foo/recommended",
"plugin:@bar/recommended"
],
"rules": {
"jquery/a-rule": "error",
"@foo/foo/some-rule": "error",
"@bar/another-rule": "error"
},
"env": {
"jquery/jquery": true,
"@foo/foo/env-foo": true,
"@bar/env-bar": true,
}
// ...
}
指定处理器
插件可以提供处理器。处理器可以从其他类型的文件中提取 JavaScript 代码,然后让 ESLint 检查 JavaScript 代码。或者,处理器可以在预处理期间转换 JavaScript 代码。
要在配置文件中指定处理器,请使用 processor
键,并使用斜杠连接插件名称和处理器名称。例如,以下内容启用插件 a-plugin
提供的处理器 a-processor
{
"plugins": ["a-plugin"],
"processor": "a-plugin/a-processor"
}
要为特定类型的文件指定处理器,请使用 overrides
键和 processor
键的组合。例如,以下内容对 *.md
文件使用处理器 a-plugin/markdown
。
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
}
]
}
处理器可能会创建名为代码块,例如 0.js
和 1.js
。ESLint 将此类命名代码块视为原始文件的子文件。您可以在配置的 overrides
部分中为命名代码块指定其他配置。例如,以下内容禁用以 .js
结尾的 markdown 文件中命名代码块的 strict
规则。
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
},
{
"files": ["**/*.md/*.js"],
"rules": {
"strict": "off"
}
}
]
}
ESLint 检查命名代码块的文件路径,如果任何 overrides
条目与文件路径不匹配,则忽略这些文件路径。如果您想检查除 *.js
之外的命名代码块,请务必添加 overrides
条目。