Node.js Releasers
从 27.x 开始,Node.js 将从每年两个主版本发布改为每年一个。这篇文章解释了变化内容、原因以及对用户的影响。完整的讨论和背景信息,请参阅 nodejs/Release#1113。
TL;DR: 如果你已经只升级到 LTS 版本,那么除了版本编号之外,几乎没有变化。LTS 支持窗口保持相似,现在每个版本都会成为 LTS。
库作者:请尽早将Alpha版本集成到您的CI中;如果您只在LTS版本上进行测试,您将无法在bug影响用户之前报告它们。为什么进行这项更改
当前的发布计划已有10年历史,是在io.js合并期间为平衡不断增长的生态系统的需求而制定的。正如一位贡献者当时所说,这是“对企业需求的有根据的猜测”。
现在我们拥有十年的数据,显示人们实际如何使用 Node.js:
- 奇数版本很少被采用。大多数用户等待长期支持(Long-Term Support)。
- 奇偶版本的区别让新手感到困惑。
- 许多组织完全跳过奇数版本,只升级到 LTS 版本。
我们也认识到企业需要可预测性。新时间表设计得清晰明确,以便团队能够相应地规划升级和分配资源。
志愿者可持续性
Node.js 主要由志愿者维护。虽然有些贡献者获得了赞助,但大部分工作(审阅 Pull Requests、处理安全问题、发布版本、回溯修复)都是由人们在业余时间完成的。
同时维护四到五个活跃发布线的安全发布已经变得难以持续。每增加一条线都会增加向后移植的复杂性。通过减少并发发布线的数量,我们可以更好地支持用户实际使用的版本。
变更内容
自2026年10月起:
- 每年一个主要版本(4月),10月升级为长期支持(LTS)版本。
- 每个版本都成为LTS版本. 不再有奇偶版本区分——Node.js 27将成为LTS.
- 用于早期测试的Alpha通道允许semver主版本变更.
- Alpha版本控制遵循semver预发布格式(例如,
27.0.0-alpha.1). - 版本号与其初始Current发布的日历年对齐: 27.0.0 in 2027, 28.0.0 in 2028.
- 减轻发布者的负担
新计划
| 阶段 | 持续时间 | 描述 |
|---|---|---|
| 阿尔法(Alpha) | 6个月 | 十月至三月。早期测试,允许语义化主版本变更 |
| 当前(Current) | 6个月 | 四月至十月。稳定化 |
| 长期支持(LTS) | 30个月 | 长期支持,包含安全修复 |
| 生命周期结束(EOL) | 无限(Infinity) | 该项目不再提供任何支持 |
总支持周期:从首个当前版本到 生命周期结束(EOL)。
关于 Alpha频道(Alpha Channel)
Alpha 通道填补了早期测试角色,而奇数版本曾经承担这一角色, 但有一个关键区别:Alpha 期间允许进行 semver-major 变更。 Alpha 版本经过签名、标记并通过 CITGM(金矿中的金丝雀) 进行测试。CITGM 是我们维护的一个工具, 它在即将发布的 Node.js 版本上运行主要开源包的测试套件,这可以让我们检测生态系统的破坏,并在发布前通知包作者。
这与每日构建不同,它们仍然作为自动化的未测试构建从main提供——Alpha版本可能不包含来自main的所有更改,如果满足以下条件,则更改可能不包含在Alpha版本中:
- 在拉取请求(Pull Request)审查期间,审查者会添加一个标签,要求不将该更改向后移植(backport)(例如,如果某个 API 在 Alpha 版本中运行时被弃用,那么实际移除该 API 的更改应等到下一个发布线才能合并)。
- 在 Alpha 版本准备期间,发布者最终决定哪些提交实际进入发布(例如,如果某个依赖项更新包含重大错误)。
适用对象: 库作者和CI流水线正在测试与即将到来的破坏性更改的兼容性。不适用于生产环境。
预期的内容:
- 发布版本已签名并打标签(与夜间版不同)。
- API在不同发布版本之间可能会发生变化。
- 发布节奏灵活;发布团队将根据变更量和项目需求确定Alpha版本的发布时机和频率。
原因:通过质量门(Quality Gates)提供破坏性变更的早期反馈,这是每日构建(Nightly builds)所缺乏的。同时允许在周期中更早地集成V8更新。
在Alpha版本中发布semver-major提交的规则将由发布团队(Release Team)定义,并记录在发布仓库(Release repository)中。
不变的内容
- 长期支持(Long-Term Support)时长保持不变(30个月)。
- 保留迁移窗口。LTS版本之间保持重叠。
- 质量标准不变。相同的测试、相同的CITGM、相同的安全流程。
- 可预测的时间表。四月发布,十月LTS升级。
- V8采用周期。Node.js最新版本仍将包含一个最多约6个月前的V8版本。
时间线
Node.js 26 时间表(现有模式)
| 里程碑 | 日期 |
|---|---|
| 26.0.0 | 2026年4月 |
| 进入长期支持 | 2026年10月 |
| 维护 | 2027年10月 |
| 生命周期结束 | 2029年4月 |
Node.js 26遵循现有时间表。这是当前模式下的最后一个发布线。
Node.js 27 时间表(新模型)
| 里程碑 | 日期 |
|---|---|
| Alpha 开始 | 2026年10月 |
| 27.0.0 | 2027年4月 |
| 进入 LTS | 2027年10月 |
| 生命周期结束 | 2030年4月 |
Node.js 27 是新时间表下的首个发布线。
下一个十年
| 版本 | 阿尔法(Alpha) | 当前 | 长期支持 (LTS) | 生命周期结束 |
|---|---|---|---|---|
| 27.x | 2026年10月 | 2027年4月 | 2027年10月 | 2030年4月 |
| 28.x | 2027年10月 | 2028年4月 | 2028年10月 | 2031年4月 |
| 29.x | 2028年10月 | 2029年4月 | 2029年10月 | 2032年4月 |
| 30.x | 2029年10月 | 2030年4月 | 2030年10月 | 2033年4月 |
| 31.x | 2030年10月 | 2031年4月 | 2031年10月 | 2034年4月 |
| 32.x | 2031年10月 | 2032年4月 | 2032年10月 | 2035年4月 |
| 33.x | 2032年10月 | 2033年4月 | 2033年10月 | 2036年4月 |
| 34.x | 2033年10月 | 2034年4月 | 2034年10月 | 2037年4月 |
| 35.x | 2034年10月 | 2035年4月 | 2035年10月 | 2038年4月 |
| 36.x | 2035年10月 | 2036年4月 | 2036年10月 | 2039年4月 |
此时间表并非最终版本,可能有所修改。请参阅schedule.json以获取项目支持申索的最新记录。
谢谢
这一变更是GitHub议题、发布工作组(Release Working Group)会议以及 Chesapeake 2025合作峰会(Collaboration Summit Chesapeake 2025)的讨论结果。 我们将在即将于伦敦举行的合作峰会(Collaboration Summit in London)上继续讨论这一话题。 感谢所有提供反馈的人。
如有疑问或评论,请参阅 nodejs/Release#1113。






















