ESLint v8.x 已于 2024-10-05 停止维护,不再提供更新。 升级 或考虑 长期支持选项

ESLint 内置 JSDoc 支持的停用

作为最近一次审查的一部分,我们决定停止 ESLint 项目中对 JSDoc 的内置支持。 本文将详细说明该决定的内容以及后续行动。

在过去几年中,ESLint 项目的规模和范围不断扩大。 最初,项目只是一个可执行的包,现在它已经发展成为一个包含多个包的项目,其中包括多个解析器和其他工具。 尽管项目规模不断扩大,但团队规模却停滞不前。 因此,我们不得不做出一些艰难的决定,以便在完全依靠志愿者团队的情况下,继续维护整个 ESLint 项目。

ESLint 中当前的 JSDoc 支持

ESLint 中的 JSDoc 支持目前包括:

为了支持 ESLint 中的 JSDoc,我们一直在 Doctrine 和 valid-jsdoc 规则 上投入过多的时间,与维护项目其他部分所需的工作量相比,这部分工作量过大。 从今天开始,这些部分将被停用,包括 require-jsdoc 规则和 SourceCode#getJSDocComment()

停用意味着什么

核心 JSDoc 支持的停用意味着您将在接下来的几周内看到以下情况发生:

  • Doctrine 将不再更新。 两周前发布的 3.0.0 版本将是最后一个主要版本。 在完全停止维护之前,我们可能需要进行一些小的更新,但我们不再添加功能或修复错误。 我们认为 Doctrine 处于稳定可靠的状态,如果有人想将其作为基础开始一个新项目,它将是一个不错的选择。
  • require-jsdocvalid-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 服务器

最新的 ESLint 新闻、案例研究、教程和资源。

ESLint v9.14.0 released
阅读需要 2 分钟

ESLint v9.14.0 发布

我们刚刚发布了 ESLint v9.14.0,这是 ESLint 的一个小版本升级。 此版本添加了一些新功能,并修复了先前版本中发现的几个错误。

ESLint v9.13.0 released
阅读需要 1 分钟

ESLint v9.13.0 发布

我们刚刚发布了 ESLint v9.13.0,这是 ESLint 的一个小版本升级。 此版本添加了一些新功能,并修复了先前版本中发现的几个错误。