ESLint 最初创建时,其理念是提供一套包含 20-30 条核心规则的小集合,帮助大家入门,然后让社区构建自己的规则来填补剩余的空白。然而,我们也继续添加核心规则,因为这似乎很有帮助,以至于现在已经有 280 条核心规则。在任何给定的时间,超过一半的开放问题和拉取请求都与规则相关,这些规则占据了团队大量的时间。
ESLint 现在受益于一个蓬勃发展的以规则为中心的插件生态系统,例如 eslint-plugin-node
、eslint-plugin-import
、eslint-plugin-react
等等。像 astexplorer.net 这样的工具以及大量的教程使开发人员比以往任何时候都更容易编写自己的规则。核心团队不再需要构建大量基本规则,因此我们可以优先考虑大家期待已久的一些核心功能,例如并行代码检查,这将使整个社区受益。我们正在对如何优先处理内置规则的变更进行一些调整,但一如既往,如果某个规则不太适合您的情况,我们鼓励您将其修改为自定义规则以用于自己的项目,并与社区其他成员共享。
变更内容是什么?
未来,我们将对处理规则问题和拉取请求的方式进行以下更改
- 新增规则受限 - 我们只会在新规则与前 12 个月内达到第 4 阶段的 ECMAScript 新特性相关时才会接受。社区依赖 ESLint 来帮助他们学习使用新语言特性的正确方法,我们希望继续这样做。我们不会接受与新 ECMAScript 特性无关的建议或偏好规则。
- 不再新增仅禁止语法规则 - 我们已经有了
no-restricted-syntax
,它应该适用于大多数情况。否则,用户可以创建自己的规则。我们确实有一些仅禁止语法的遗留规则(例如no-undefined
),我们将保留这些规则,但不会再添加任何新的规则。 - 样式规则冻结 - 我们不会再为样式规则添加任何新的选项。我们了解到,无法满足每个人的个人偏好,并且大多数规则已经有很多难以理解的选项。样式规则是指与空格、约定以及通常不突出显示错误或更佳做法相关的规则。2021 年 1 月 29 日更新:我们在 自述文件 中澄清,我们将继续支持新添加的 ECMAScript 功能。
- 新规则选项必须由社区成员实现 - 用户仍然可以为现有的核心非样式规则提出新的选项,我们仍然会像往常一样对其进行评估。但是,这些已批准的选项需要由社区来实现,并且不会成为核心团队开发路线图的一部分。
Bug 如何处理?
我们仍然会评估所有核心规则,包括样式规则,以查找 bug。如果可以验证 bug,我们仍然会在正常的维护流程中修复它。
感谢您的理解
我们知道这对 ESLint 的运作方式有所改变,感谢您的理解。ESLint 由一名兼职开发者和一组志愿者维护,因此我们的带宽有限。我们做出这些改变是为了更好地利用我们可用于维护项目的时间。如果您想提供帮助,请考虑为项目做出贡献或 进行捐赠。