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