版本

共享配置 (已弃用)

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

此页面说明如何创建和发布可共享的配置。

创建可共享的配置

可共享的配置只是导出配置对象的 npm 包。首先,创建一个 Node.js 模块,就像您平时一样。

模块名称必须采用以下其中一种格式

  • eslint-config- 开头,例如 eslint-config-myconfig
  • 为 npm 作用域模块。要创建作用域模块,请使用 @scope/eslint-config 命名或为模块添加前缀,例如 @scope/eslint-config@scope/eslint-config-myconfig

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

// index.js
module.exports = {

    globals: {
        MyGlobal: true
    },

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

};

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

发布可共享的配置

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

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

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

如果您的可共享配置依赖于某个插件,您也应该将其指定为 peerDependency(插件将相对于最终用户的项目加载,因此最终用户需要安装他们需要的插件)。但是,如果您的可共享配置依赖于 自定义解析器 或其他可共享配置,则可以在 package.json 中将这些包指定为 dependencies

您也可以在发布之前在您的计算机上测试您的可共享配置,方法是将您的模块全局链接。键入

npm link

然后,在您想要使用可共享配置的项目中,键入

npm link eslint-config-myconfig

请务必将 eslint-config-myconfig 替换为您模块的实际名称。

使用可共享的配置

要使用可共享的配置,请在配置文件的 extends 字段中包含配置名称。对于值,请使用您的模块名称。例如

{
    "extends": "eslint-config-myconfig"
}

您也可以省略 eslint-config-,ESLint 会自动假设它。

{
    "extends": "myconfig"
}

您不能将可共享配置与 ESLint CLI --config 标志一起使用。

npm 作用域模块

npm 作用域模块 也以多种方式支持。

您可以使用模块名称

{
    "extends": "@scope/eslint-config"
}

您也可以省略 eslint-config,ESLint 会自动假设它。

{
    "extends": "@scope"
}

模块名称也可以自定义。例如,如果您有一个名为 @scope/eslint-config-myconfig 的包,则可以将配置指定为

{
    "extends": "@scope/eslint-config-myconfig"
}

您也可以省略 eslint-config 以将配置指定为

{
    "extends": "@scope/myconfig"
}

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

您可以通过将设置直接添加到 .eslintrc 文件中来覆盖来自可共享配置的设置。

共享多个配置

您可以在同一个 npm 包中共享多个配置。通过按照 创建可共享的配置 部分中的说明为包指定默认配置。您可以通过向 npm 包添加新文件,然后从 ESLint 配置中引用它来指定其他可共享配置。

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

// my-special-config.js
module.exports = {
    rules: {
        quotes: [2, "double"]
    }
};

然后,假设您使用的是包名 eslint-config-myconfig,您可以通过以下方式访问其他配置

{
    "extends": "myconfig/my-special-config"
}

当使用 作用域模块 时,无法省略 eslint-config 命名空间。这样做会导致解析错误,如上所述。假设包名为 @scope/eslint-config,则可以按以下方式访问其他配置

{
    "extends": "@scope/eslint-config/my-special-config"
}

请注意,您可以从文件名中省略 .js

**重要提示:**我们强烈建议始终为您的插件包含一个默认配置,以避免错误。

本地配置文件解析

如果您需要创建多个可以相互扩展并位于不同目录中的配置,您可以创建一个处理此场景的单个可共享配置。

例如,假设您使用的是包名 eslint-config-myconfig,并且您的包结构如下所示

myconfig
├── index.js
└─┬ lib
  ├── defaults.js
  ├── dev.js
  ├── ci.js
  └─┬ ci
    ├── frontend.js
    ├── backend.js
    └── common.js

index.js 文件中,您可以执行以下操作

module.exports = require('./lib/ci.js');

现在,在包中,您有 /lib/defaults.js,其中包含

module.exports = {
    rules: {
        'no-console': 1
    }
};

/lib/ci.js 中,您有

module.exports = require('./ci/backend');

/lib/ci/common.js

module.exports = {
    rules: {
        'no-alert': 2
    },
    extends: 'myconfig/lib/defaults'
};

尽管位于完全不同的目录中,但您会看到所有 extends 必须使用完整包路径到您希望扩展的配置文件。

现在在 /lib/ci/backend.js

module.exports = {
    rules: {
        'no-console': 1
    },
    extends: 'myconfig/lib/ci/common'
};

在最后一个文件中,再次看到要正确解析您的配置,您需要包含完整包路径。

进一步阅读

更改语言