提出新规则
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 是完全可扩展的,这意味着您可以创建自己的规则并使用插件分发它们。我们故意这样做,因为我们不想成为所有可能规则的守门人。即使我们没有将规则纳入核心,这并不意味着您不能拥有您想要的精确规则。有关更多信息,请参阅 自定义规则 和 创建插件 文档。