版本

配置插件

您可以通过多种不同的方式使用插件扩展 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.js1.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"
    }
];

常见问题

更改语言