配置插件
您可以通过多种不同的方式使用插件扩展 ESLint。插件可以包括
- 自定义规则,用于验证您的代码是否满足特定期望,以及如果不满足期望,该怎么办。
- 自定义配置。有关如何使用这些配置的详细信息,请参阅插件文档。
- 自定义处理器,用于从其他类型的文件中提取 JavaScript 代码或在代码风格检查之前预处理代码。
配置插件
ESLint 支持使用第三方插件。插件只是符合 ESLint 识别的特定接口的对象。
要在配置文件中配置插件,请使用plugins
键,其中包含一个对象,该对象的属性表示插件命名空间,值等于插件对象。
// eslint.config.js
import example from "eslint-plugin-example";
export default [
{
plugins: {
example
},
rules: {
"example/rule1": "warn"
}
}
];
配置本地插件
插件不需要发布到 npm 才能与 ESLint 一起使用。您也可以直接从文件加载插件,如本例所示
// eslint.config.js
import local from "./my-local-plugin.js";
export default [
{
plugins: {
local
},
rules: {
"local/rule1": "warn"
}
}
];
这里使用local
作为命名空间,但您也可以使用任何您喜欢的名称。
配置虚拟插件
插件定义可以在您的配置中直接虚拟创建。例如,假设您有一个名为my-rule.js
的文件中包含的规则,您希望在您的配置中启用它。您可以定义一个虚拟插件来执行此操作,如本例所示
// eslint.config.js
import myRule from "./rules/my-rule.js";
export default [
{
plugins: {
local: {
rules: {
"my-rule": myRule
}
}
},
rules: {
"local/my-rule": "warn"
}
}
];
这里,local
命名空间用于定义一个虚拟插件。然后,规则myRule
在虚拟插件的rules
对象中分配了一个my-rule
的名称。(有关插件的完整格式,请参阅创建插件。)然后,您可以将规则引用为local/my-rule
来配置它。
使用插件规则
您可以使用插件中包含的特定规则。为此,请在使用plugins
键的配置对象中指定插件。plugin
键的值是一个对象,其中插件的名称是属性名称,值是插件对象本身。这是一个示例
// eslint.config.js
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsdoc: jsdoc
},
rules: {
"jsdoc/require-description": "error",
"jsdoc/check-values": "error"
}
}
];
在此配置中,JSDoc 插件被定义为具有jsdoc
的名称。每个规则名称中的jsdoc/
前缀表示该规则来自具有该名称的插件,而不是来自 ESLint 本身。
因为插件的名称和插件对象都是jsdoc
,所以您也可以将配置缩短为:
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsdoc
},
rules: {
"jsdoc/require-description": "error",
"jsdoc/check-values": "error"
}
}
];
虽然这是最常见的约定,但您不需要使用插件规定的相同名称。您可以指定任何您喜欢的名称,例如
import jsdoc from "eslint-plugin-jsdoc";
export default [
{
files: ["**/*.js"],
plugins: {
jsd: jsdoc
},
rules: {
"jsd/require-description": "error",
"jsd/check-values": "error"
}
}
];
此配置对象使用jsd
作为插件前缀,而不是jsdoc
。
指定处理器
插件可以提供处理器。处理器可以从其他类型的文件中提取 JavaScript 代码,然后让 ESLint 对 JavaScript 代码进行代码风格检查。或者,处理器可以在预处理过程中转换 JavaScript 代码。
要在配置文件中指定处理器,请使用processor
键并以namespace/processor-name
格式分配处理器的名称。例如,以下示例使用@eslint/markdown
中的处理器来处理*.md
文件。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
}
];
处理器可以创建名为代码块,例如0.js
和1.js
。ESLint 将此类命名代码块视为原始文件的子文件。您可以使用其他配置对象为命名代码块指定其他配置。例如,以下示例禁用了以.js
结尾的 markdown 文件中命名代码块的strict
规则。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
// applies to all JavaScript files
{
rules: {
strict: "error"
}
},
// applies to Markdown files
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
},
// applies only to JavaScript blocks inside of Markdown files
{
files: ["**/*.md/*.js"],
rules: {
strict: "off"
}
}
];
ESLint 仅在命名代码块是 JavaScript 文件或与配置对象中的files
条目匹配时才对命名代码块进行代码风格检查。如果您想对非 JavaScript 命名代码块进行代码风格检查,请务必添加一个具有匹配files
条目的配置对象。还要注意,全局忽略也适用于命名代码块。
// eslint.config.js
import markdown from "@eslint/markdown";
export default [
// applies to Markdown files
{
files: ["**/*.md"],
plugins: {
markdown
},
processor: "markdown/markdown"
},
// applies to all .jsx files, including jsx blocks inside of Markdown files
{
files: ["**/*.jsx"],
languageOptions: {
parserOptions: {
ecmaFeatures: {
jsx: true
}
}
}
},
// ignore jsx blocks inside of test.md files
{
ignores: ["**/test.md/*.jsx"]
}
];
指定语言
插件可以提供语言。语言允许 ESLint 对除了 JavaScript 之外的编程语言进行代码风格检查。要在配置文件中指定语言,请使用language
键并以namespace/language-name
格式分配语言的名称。例如,以下示例使用@eslint/json
中的json/jsonc
语言来处理*.json
文件。
// eslint.config.js
import json from "@eslint/json";
export default [
{
files: ["**/*.json"],
plugins: {
json
},
language: "json/jsonc"
}
];