在ESLint中启用规则和添加插件

本指南旨在提供一些关于如何在我们的 ESLint 配置中启用规则和添加插件的有用提示。

一般说明

  • 启用新规则和添加插件应与 JavaScript 使用、工具和样式模块所有者及同行 协商一致。

  • 子组件规则的启用也应与所有者和同行讨论。

    • 通常我们希望在整个代码库中统一规则,因此更倾向于避免为不同的子组件设置特殊规则。

    • 可以针对子组件做出例外。

启用新规则

启用新规则的一般流程是在 Developer Infrastructure 产品下的 Lint and Formatting 组件中提交 Bug。

然后应将规则添加到相关的配置中并修复现有的问题。对于大量现有的问题,我们可能会按照下面讨论的步骤分阶段推出。

推出选项

对于推出新规则,我们更希望有一个计划和负责人来确保随着时间的推移解决现有的故障。它们并不总是需要立即修复,但应该就如何处理现有故障达成某种协议,这样我们就不会最终得到一组庞大且可能复杂的排除项,或者大量永远得不到解决的警告。

这并不是说添加规则的开发人员需要成为计划的负责人,但他们应该确保有一个商定的前进方向。

有几种可用于推出的选项,具体取决于发现的错误数量以及修复现有问题的难度。

  • 修复所有问题并在所有地方启用规则

    • 这最适合于错误数量少且易于提前修复的情况。

  • 在所有地方启用规则,选择性地在现有故障上禁用规则

    • 这可能适用于修复故障可能需要更长时间的情况。

  • 将规则启用为警告

    • 这会将问题作为警告提出,不会阻止包含问题的补丁落地,但至少应该在代码审查期间突出显示它们。

    • 这可能更适合于存在大量非关键问题的情况,例如更倾向于使用一种方法而不是另一种方法。

  • 在通过的代码上将规则启用为错误,但在有故障的代码上启用为警告

    • 这是一种混合方法,适用于存在更关键问题的案例,我们希望阻止新案例进入代码库,并在代码被修改时突出显示现有案例。

此处的选项并非固定不变,此列表应作为指导。

添加位置

新规则应添加到 eslint-plugin-mozilla 中的其中一个配置中。

然后它们将自动应用到相关位置。eslint-plugin-mozilla 被 mozilla-central 之外的几个项目使用,因此当 eslint-plugin-mozilla 下次发布时,它们将获取规则添加。

在禁用/将现有故障转换为警告的地方,这些应在 顶级 .eslintrc-rollouts.js 文件 中处理,并且必须在落地之前提交后续 Bug 并引用到相应的章节。后续 Bug 应阻止 Bug 1596191

添加新的 ESLint 插件

许可证检查

当提出新的插件时,应检查以确保节点模块和所有依赖节点模块的许可证与 Mozilla 代码库兼容。Mozilla 员工可以参考 许可和贡献者协议运行手册 以获取更多详细信息。

npmgraph 这样的网站可以帮助检查许可证。

在提交 Bug 或审查补丁时,应说明该模块是否已通过许可证检查。

添加到存储库

如果新插件将在 eslint-plugin-mozilla 中的配置内定义规则,则应在 eslint-plugin-mozilla 的 package.json 文件 的对等依赖项中引用该模块。

要将新模块添加到节点系统,请运行

./mach npm install --save-exact --save-dev packagename

我们使用精确版本匹配来明确说明我们正在使用的版本以及何时升级版本。

然后可以使用 ESLint 以 常规方式 使用该插件。