Versions

提议新规则

ESLint 是关于规则的。在项目的大部分时间里,我们已经有了超过 200 条规则,而且这个名单还在继续增长。然而,我们不能只是接受任何提议的规则,因为所有的规则都需要凝聚在一起工作。因此,我们有一些指导原则,即哪些规则可以成为 ESLint 核心的一部分,哪些规则最好作为自定义规则和插件。

注意:从 2020 年起,我们只接受与 ECMAScript 新特性有关的规则。我们希望新的规则能在插件中实现。

核心规则指南

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

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

尽管这些是包含的正式标准,但每条规则都是根据自己的情况进行评估的。

提议一条规则

如果你想提出一条新的规则,请参考如何 创建拉取请求 或通过填写 新规则模板 提交一个问题。

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

##接受一条规则

为了使一条规则在 ESLint 核心中被接受,它必须。

  1. 满足“核心规则指南”部分中列出的所有标准
  2. 有一个 ESLint 团队成员支持纳入该规则。
  3. 与过去 12 个月内达到第四阶段的 ECMAScript 特性有关。

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

实施是你的责任

ESLint 团队不会实施用户建议的新规则,因为我们的人数有限,需要专注于整个路线图。一旦一个规则被接受,你就要负责实施和记录这个规则。你也可以招募另一个人帮助你实施该规则。倡导该规则的 ESLint 团队成员是你的资源,可以帮助指导你完成这个过程的其余部分。

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

请记住,ESLint 是完全可扩展,这意味着你可以创建你自己的规则并使用插件发布。我们这样做是有目的的,因为我们不想成为所有可能的规则的看门人。即使我们不接受一个规则进入核心,这也不意味着你不能拥有你想要的确切规则。更多信息请参见自定义规则创建插件文档。

更改语言