提议新规则
ESLint 是关于规则的。在项目的大部分时间里,我们已经有了超过 200 条规则,而且这个名单还在继续增长。然而,我们不能只是接受任何提议的规则,因为所有的规则都需要凝聚在一起工作。因此,我们有一些指导原则,即哪些规则可以成为 ESLint 核心的一部分,哪些规则最好作为自定义规则和插件。
注意:从 2020 年起,我们只接受与 ECMAScript 新特性有关的规则。我们希望新的规则能在插件中实现。
核心规则指南
一般来说,ESLint 的核心规则必须:
- 广泛适用。我们发布的规则需要对大量的开发者具有重要性。不支持对不常见的模式的个人偏好。
- 通用性。规则不能太具体,以至于用户难以理解何时使用它们。如果描述一个规则的作用需要两个以上的 “and”(如果 a 和 b 以及 c 和 d,那么这个规则就会被警告),那么这个规则通常就太具体了。
- 原子化。规则必须完全独立运作。规则被明确禁止知道其他规则的状态或存在。
- 独特的。有两个规则可以产生相同的警告。重叠的规则会使终端用户感到困惑,人们期望 ESLint 的核心规则不会重叠。
- 库无关。规则必须只基于 JavaScript 运行时环境,而不是特定的库或框架。例如,核心规则不应该只适用于你使用 jQuery,但我们可能有一些规则只适用于你使用 Node.js(一种运行时)。
- 没有冲突。任何规则都不能与另一个规则直接冲突。例如,如果我们有一条要求分号的规则,我们就不能同时有一条不允许分号的规则(这就是为什么我们有一条规则包含两者的
semi
)。
尽管这些是包含的正式标准,但每条规则都是根据自己的情况进行评估的。
提议一条规则
如果你想提出一条新的规则,请参考如何 创建拉取请求 或通过填写 新规则模板 提交一个问题。
我们需要所有这些信息,以确定该规则是否是一个好的核心规则候选者。
##接受一条规则
为了使一条规则在 ESLint 核心中被接受,它必须。
- 满足“核心规则指南”部分中列出的所有标准
- 有一个 ESLint 团队成员支持纳入该规则。
- 与过去 12 个月内达到第四阶段的 ECMAScript 特性有关。
请记住,我们有超过 200 条规则,这对最终用户和 ESLint 团队(必须维护这些规则)来说都是令人生畏的。因此,任何新的规则必须被认为是非常重要的,才能被考虑纳入 ESLint。
实施是你的责任
ESLint 团队不会实施用户建议的新规则,因为我们的人数有限,需要专注于整个路线图。一旦一个规则被接受,你就要负责实施和记录这个规则。你也可以招募另一个人帮助你实施该规则。倡导该规则的 ESLint 团队成员是你的资源,可以帮助指导你完成这个过程的其余部分。
替代方案:创建你自己的规则
请记住,ESLint 是完全可扩展,这意味着你可以创建你自己的规则并使用插件发布。我们这样做是有目的的,因为我们不想成为所有可能的规则的看门人。即使我们不接受一个规则进入核心,这也不意味着你不能拥有你想要的确切规则。更多信息请参见自定义规则和创建插件文档。