提议新的规则
ESLint 都是关于规则的。在项目的大部分生命周期中,我们拥有超过 200 条规则,并且该列表仍在不断增长。但是,我们不能仅仅接受任何提议的规则,因为所有规则都需要协同工作。因此,我们有一些关于哪些规则可以成为 ESLint 核心的一部分,哪些规则最好作为自定义规则和插件的指南。
注意:从 2020 年开始,我们只接受与新 ECMAScript 功能相关的规则。我们更倾向于在插件中实现新规则。
核心规则指南
一般来说,ESLint 核心规则必须
- 广泛适用。我们分发的规则需要对大量开发人员很重要。不支持对不常见模式的个人偏好。
- 通用。规则不能过于具体,以至于用户难以理解何时使用它们。如果描述规则的功能需要超过两个“和”(如果 a 和 b 和 c 和 d,则此规则会发出警告),则该规则通常过于具体。
- 原子性。规则必须能够独立运行。明确禁止规则了解其他规则的状态或存在。
- 唯一性。没有任何两条规则可以产生相同的警告。重叠的规则会让最终用户感到困惑,并且人们期望 ESLint 核心规则不会重叠。
- 与库无关。规则必须仅基于 JavaScript 运行时环境,而不是基于特定的库或框架。例如,核心规则不应仅在您使用 jQuery 时才适用,但我们可能有一些规则仅在您使用 Node.js(运行时)时才适用。
- 无冲突。任何规则都不能与另一条规则直接冲突。例如,如果我们有一条要求使用分号的规则,我们也不能有一条禁止使用分号的规则(这就是为什么我们有一条规则
semi
,它同时执行这两者)。
即使这些是包含的正式标准,每个规则也会根据其自身的基础进行评估。
提议规则
如果您想提议一条新规则,请查看如何创建拉取请求或通过填写新规则模板提交问题。
我们需要所有这些信息才能确定该规则是否是一个好的核心规则候选者。
接受规则
为了使规则被 ESLint 核心接受,它必须
- 满足“核心规则指南”部分中列出的所有标准
- 有一位 ESLint 团队成员支持包含该规则
- 与在过去 12 个月内达到第 4 阶段的 ECMAScript 功能相关
请记住,我们有超过 200 条规则,这对最终用户和 ESLint 团队(负责维护它们)来说都是一项艰巨的任务。因此,任何新规则都必须被认为非常重要才能被考虑纳入 ESLint。
实施是您的责任
ESLint 团队不会实施用户建议的新规则,因为我们的人员有限,需要专注于总体路线图。规则被接受后,您负责实施和记录该规则。或者,您可以招募其他人来帮助您实施该规则。支持该规则的 ESLint 团队成员是您在整个过程中获得指导的资源。
替代方案:创建您自己的规则
请记住,ESLint 是完全可扩展的,这意味着您可以创建自己的规则并使用插件分发它们。我们故意这样做,因为我们不想成为所有可能规则的守门人。即使我们不接受规则进入核心,这并不意味着您不能拥有您想要的精确规则。有关更多信息,请参阅自定义规则和创建插件文档。