在过去几年中,ESLint 项目的规模和范围不断扩大。 最初,项目只是一个可执行的包,现在它已经发展成为一个包含多个包的项目,其中包括多个解析器和其他工具。 尽管项目规模不断扩大,但团队规模却停滞不前。 因此,我们不得不做出一些艰难的决定,以便在完全依靠志愿者团队的情况下,继续维护整个 ESLint 项目。
ESLint 中当前的 JSDoc 支持
ESLint 中的 JSDoc 支持目前包括:
- 维护 Doctrine JSDoc 注释解析器
- 该
require-jsdoc
规则 - 该
valid-jsdoc
规则 - 该
SourceCode#getJSDocComment()
方法
为了支持 ESLint 中的 JSDoc,我们一直在 Doctrine 和 valid-jsdoc 规则
上投入过多的时间,与维护项目其他部分所需的工作量相比,这部分工作量过大。 从今天开始,这些部分将被停用,包括 require-jsdoc
规则和 SourceCode#getJSDocComment()
。
停用意味着什么
核心 JSDoc 支持的停用意味着您将在接下来的几周内看到以下情况发生:
- Doctrine 将不再更新。 两周前发布的 3.0.0 版本将是最后一个主要版本。 在完全停止维护之前,我们可能需要进行一些小的更新,但我们不再添加功能或修复错误。 我们认为 Doctrine 处于稳定可靠的状态,如果有人想将其作为基础开始一个新项目,它将是一个不错的选择。
require-jsdoc
和valid-jsdoc
规则将被 弃用。 这两个规则将保留在 ESLint 中,但我们不再为其添加新功能或修复错误。 这些规则可能会在 ESLint 的未来主要版本中被删除。SourceCode#getJSDocComment()
方法将被弃用。 我们不会对此方法进行任何更改,并将在 ESLint 的未来主要版本中将其删除。
请务必查看发布公告,了解这些更改生效的时间。
建议的替代方案
如果您想继续使用 ESLint 检查 JSDoc 注释,我们建议使用社区支持的 eslint-plugin-jsdoc
插件。 此插件包含几个比正在被弃用的核心 ESLint 规则更具体的规则,实际上可能更适合大多数项目。
常见问题解答
为什么你不尝试为 Doctrine 寻找新的维护者?
我们决定不为 Doctrine 寻找新的维护者,原因有几个。
首先,尽管该包被广泛使用,但来自团队外部的人员贡献很少。 一些包会吸引来自外部贡献者的大量关注,因此找到新的维护者可能会比较容易,但 Doctrine 并非如此。
其次,因为 Doctrine 是 JS 基金会的一部分,接管其维护意味着要参与基金会。 如果单个维护者决定接手,这可能会带来过多的负担。
鉴于 Doctrine 在 npm 上的每周下载量接近 700 万次,对于现有用户来说,停止 Doctrine 项目似乎是最好的选择,而不是试图寻找新的维护者。 我们认为,对于感兴趣的新维护者来说,最好是将 Doctrine 分叉并从头开始,而不是试图接管 Doctrine 已经存在的维护方式。
为什么你要保留 JSDoc 规则而不维护它们?
我们保留现有的 JSDoc 规则是为了给用户足够的时间过渡到使用 eslint-plugin-jsdoc
。 我们尽量减少要求用户更新配置文件的次数,通过弃用现有的 JSDoc 规则,同时保留它们,我们可以让每个人都能逐步过渡,同时还可以释放 ESLint 团队资源,专注于项目的其他部分。
如果我有其他问题该怎么办?
打开一个 讨论 或访问我们的 Discord 服务器。