版本

共享配置

要共享您的 ESLint 配置,请创建一个可共享配置。您可以将您的可共享配置发布到 npm 上,以便其他人可以下载并在他们的 ESLint 项目中使用它。

此页面解释了如何创建和发布可共享配置。

创建可共享配置

可共享配置只是导出配置对象或数组的 npm 包。首先,像往常一样创建一个 Node.js 模块

虽然您可以随意命名软件包,但我们建议使用以下约定之一,以便更容易识别您的软件包

  • eslint-config- 开头,例如 eslint-config-myconfig
  • 对于 npm 作用域模块,请使用 @scope/eslint-config 命名或前缀模块,例如 @scope/eslint-config@scope/eslint-config-myconfig

在您的模块中,从模块的 main 入口点文件导出可共享配置。默认的 main 入口点是 index.js。例如

// index.js
export default [
    {
        languageOptions: {
            globals: {
                MyGlobal: true
            }
        },

        rules: {
            semi: [2, "always"]
        }

    }
];

因为 index.js 文件只是 JavaScript,您可以从文件中读取这些设置或动态生成它们。

发布可共享配置

一旦您的可共享配置准备就绪,您可以将其发布到 npm 以与他人共享。我们建议在 package.json 文件中使用 eslinteslintconfig 关键字,以便其他人可以轻松找到您的模块。

您应该在 package.json 中使用 peerDependencies 字段声明您对 ESLint 的依赖。为了确保未来的兼容性,推荐的依赖声明方式是使用“>=”范围语法,并使用所需的最低 ESLint 版本。例如

{
    "peerDependencies": {
        "eslint": ">= 9"
    }
}

如果您的可共享配置依赖于插件或自定义解析器,您应该在 package.json 中将这些软件包指定为 dependencies

使用可共享配置

要使用可共享配置,请将软件包导入到 eslint.config.js 文件中,并将其添加到导出的数组中,就像这样

// eslint.config.js
import myconfig from "eslint-config-myconfig";

export default [
    ...myconfig
];

覆盖来自可共享配置的设置

您可以通过在导入可共享配置后直接将设置添加到 eslint.config.js 文件中来覆盖来自可共享配置的设置。例如

// eslint.config.js
import myconfig from "eslint-config-myconfig";

export default [
    ...myconfig,

    // anything from here will override myconfig
    {
        rules: {
            "no-unused-vars": "warn"
        }
    }
];

共享多个配置

因为可共享配置只是 npm 包,所以您可以从同一个包中导出任意数量的配置。除了使用 package.json 中的 main 条目指定默认配置外,您还可以通过向您的 npm 包添加新文件,然后从您的 eslint.config.js 文件中引用它来指定其他可共享配置。

例如,您可以在 npm 包的根目录中创建一个名为 my-special-config.js 的文件并导出一个配置,例如

// my-special-config.js
export default {
    rules: {
        quotes: [2, "double"]
    }
};

然后,假设您正在使用软件包名称 eslint-config-myconfig,您可以通过以下方式访问其他配置

// eslint.config.js
import myconfig from "eslint-config-myconfig";
import mySpecialConfig from "eslint-config-myconfig/my-special-config.js";

export default [
    ...myconfig,
    mySpecialConfig,

    // anything from here will override myconfig and mySpecialConfig
    {
        rules: {
            "no-unused-vars": "warn"
        }
    }
];

进一步阅读

更改语言