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 处于稳定可靠的状态,如果有人想 fork 它以开始一个新项目,它将是一个很好的基础。
  • require-jsdocvalid-jsdoc 规则将被弃用。这两个规则将保留在 ESLint 中,但我们将不再为它们添加新功能或修复错误。这些规则可能会在未来 ESLint 的主要版本中移除。
  • SourceCode#getJSDocComment() 方法将被弃用。我们将不会对这个方法进行任何相关的更改,并将在未来 ESLint 的主要版本中移除它。

请务必查看发布公告,以了解这些更改生效的时间。

建议的替代方案

如果您想继续使用 ESLint 检查 JSDoc 注释,我们建议使用社区支持的 eslint-plugin-jsdoc 插件。这个插件包含几个比核心 ESLint 规则更具体的规则,并且实际上可能更适合大多数项目。

常见问题解答

为什么不尝试为 Doctrine 寻找新的维护者?

我们决定不为 Doctrine 寻找新的维护者有几个原因。

首先,虽然这个包被广泛使用,但来自团队外部的贡献却很少。虽然有些包会受到外部贡献者的很多关注,并且可能很容易找到新的维护者,但 Doctrine 的情况并非如此。

其次,由于 Doctrine 是 JS 基金会的一部分,接管其维护意味着要参与到基金会中。如果单个维护者决定承担这项工作,那可能会带来太多的额外负担。

考虑到 npm 上每周近 700 万的下载量,对于现有用户来说,最好的选择似乎是终止 Doctrine 项目的维护,而不是尝试寻找新的维护者。我们认为,对于有兴趣的新维护者来说,更好的选择是 fork Doctrine 并重新开始,而不是试图接管 Doctrine 已经维护的方式。

为什么要保留 JSDoc 规则而不维护它们?

我们保留现有的 JSDoc 规则是为了给用户足够的时间过渡到使用 eslint-plugin-jsdoc。我们尽量减少要求用户更新其配置文件的次数,通过弃用现有的 JSDoc 规则并保持其可用性,我们允许所有人逐步过渡,同时解放 ESLint 团队的资源来处理项目的其他部分。

如果我对这个问题有其他疑问怎么办?

开启一个讨论或访问我们的 Discord 服务器

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

Evolving flat config with extends
5 分钟阅读

使用 extends 演进扁平化配置

您的 eslint.config.js 文件现在可以使用 extends 来简化您的配置。

ESLint v9.22.0 released
1 分钟阅读

ESLint v9.22.0 发布

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

ESLint v9.21.0 released
2 分钟阅读

ESLint v9.21.0 发布

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