配置插件
您可以通过多种不同的方式使用插件扩展 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"
}
}
];
仅当命名代码块是 JavaScript 文件或与配置对象中的files
条目匹配时,ESLint 才会检查命名代码块。如果您想检查非 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"
}
];