版本

提出新规则

ESLint 的核心在于规则。在项目的大部分生命周期中,我们已经有超过 200 条规则,并且这个列表还在继续增长。但是,我们不能仅仅接受任何提出的规则,因为所有规则都需要协同工作。因此,我们有一些关于哪些规则可以成为 ESLint 核心的一部分,哪些规则最好作为自定义规则和插件的指南。

注意:截至 2020 年,我们只接受与新的 ECMAScript 功能相关的规则。我们更希望在新规则中实现插件。

核心规则指南

一般来说,ESLint 核心规则必须是

  1. 广泛适用。我们分发的规则需要对大量开发人员具有重要意义。不支持对不常见模式的个人偏好。
  2. 通用。规则不能太具体,以至于用户难以理解何时使用它们。如果描述规则的作用需要超过两个“和”(如果 a 和 b 和 c 和 d,则此规则发出警告),则该规则通常过于具体。
  3. 原子性。规则必须完全独立运行。明确禁止规则了解其他规则的状态或存在。
  4. 唯一性。没有两条规则可以产生相同的警告。重叠的规则会使用户感到困惑,并且人们期望核心 ESLint 规则不会重叠。
  5. 库无关性。规则必须完全基于 JavaScript 运行时环境,而不是基于特定的库或框架。例如,核心规则不应仅在您使用 jQuery 时才适用,但我们可能有某些规则仅在您使用 Node.js(运行时)时才适用。
  6. 无冲突。任何规则都不得与其他规则直接冲突。例如,如果我们有一条规则要求使用分号,我们就不能同时有一条规则禁止使用分号(这就是为什么我们有一条规则 semi,可以同时做到这两点)。

即使这些是纳入的正式标准,每条规则都会根据自身情况进行评估。

提出规则

如果您想提出新规则,请参阅如何创建拉取请求或填写新规则模板提交问题。

我们需要所有这些信息才能确定该规则是否是好的核心规则候选者。

接受规则

为了使规则被 ESLint 核心接受,它必须

  1. 满足“核心规则指南”部分中列出的所有标准。
  2. 拥有一位 ESLint 团队成员支持将该规则纳入其中。
  3. 与前 12 个月内已达到第 4 阶段的 ECMAScript 功能相关。

请记住,我们有 200 多条规则,这对最终用户和 ESLint 团队(必须维护它们的人)来说都是令人生畏的。因此,任何新规则都必须被认为具有高度重要性才能被考虑纳入 ESLint 中。

实现是您的责任

ESLint 团队不实施用户建议的新规则,因为我们的人数有限,需要专注于总体路线图。一旦规则被接受,您就有责任实施和记录该规则。或者,您可以招募另一个人来帮助您实施该规则。支持该规则的 ESLint 团队成员是您的资源,可以帮助您完成此过程的其余部分。

替代方案:创建您自己的规则

请记住,ESLint 是完全可插拔的,这意味着您可以创建自己的规则并使用插件分发它们。我们这样做是有目的的,因为我们不想成为所有可能规则的守门人。即使我们不接受将规则纳入核心,这并不意味着您不能拥有您想要的确切规则。请参阅自定义规则创建插件文档以获取更多信息。

更改语言