编程 Node.js 改成一年一版:26 是旧模型最后一班车,27 起所有版本都进 LTS

2026-10-09 21:01:43

Node.js 改成一年一版:26 是旧模型最后一班车,27 起所有版本都进 LTS

来源:

发布模型:一年一版,取消奇偶区分

截至 2026 年 10 月,Node.js 的发布规则调整为:

  • 每年 4 月发布一个大版本,10 月晋升 LTS。
  • 每个版本都会成为 LTS,不再有奇数版/偶数版的区别,Node.js 27 同样会进入 LTS。
  • 新增 Alpha 通道用于早期测试,允许合入 semver-major 变更;alpha 版本号遵循 semver 预发布格式,例如 27.0.0-alpha.1。
  • 版本号与首次 Current 发布所在的日历年对齐:2027 年是 27.0.0,2028 年是 28.0.0。
  • 减少 Releaser 的发布负担。

新发布周期时间表

阶段时长说明
Alpha6 个月(Oct–Mar)早期测试,允许 semver-major
Current6 个月(Apr–Oct)稳定化
LTS30 个月长期支持,含安全修复
EOLInfinity—

从首次 Current 发布到 End of Life 的总支持时长为 36 个月。

Node.js 26:旧模型下的最后一条发布线

Node.js 26 沿用现有时间表,是当前模型下的最后一条发布线:

  • 26.0.0:2026 年 4 月
  • 进入 LTS:2026 年 10 月
  • Maintenance:2027 年 10 月
  • End of Life:2029 年 4 月

Node.js 27:新模型下的第一个版本

  • Alpha 开始:2026 年 10 月
  • 27.0.0:2027 年 4 月
  • 进入 LTS:2027 年 10 月
  • End of Life:2030 年 4 月

保持不变的部分

LTS 时长仍为 30 个月,迁移窗口保留,LTS 版本之间的重叠期保留,质量标准不变,时间表可预期。V8 采用节奏也未变:Node.js 最新版本仍会包含最多约 6 个月前版本的 V8。

Node.js 26.0.0 (Current) 发布要点

Temporal 默认开启

Temporal API 默认启用,作为传统 Date 对象的现代日期/时间替代方案。使用旧 Date 的代码可以继续运行,但新代码不必再依赖第三方日期库。

V8 与 Undici

  • V8 引擎更新至 14.6.202.33(Chromium 146),包含 [Weak]Map.prototype.getOrInsert() / getOrInsertComputed()、Iterator.concat()。
  • Undici 更新至 8.0.2。

弃用与移除

  • http.Server.prototype.writeHeader() 已完全移除,改用 writeHead()。
  • 以下遗留内部模块已完全移除:_stream_wrap、_stream_readable、_stream_writable、_stream_duplex、_stream_transform、_stream_passthrough。

升级排期与改动清单

排期上,26 的 LTS 在 2026 年 10 月到位,27 的 alpha 同期开始,也就是说 26 进入 LTS 与 27 进入 alpha 会在同一时间窗口发生;26 的 Maintenance 在 2027 年 10 月,而 27 恰好在同月进入 LTS,重叠期足以做迁移。之后每年 4 月一个新 major、10 月转 LTS,节奏固定,按年份对齐版本号即可推算。

代码改动上,先做一轮检索:

# 查找直接调用 writeHeader 的位置
grep -rn "writeHeader" ./src

# 查找依赖遗留 _stream_* 内部模块的代码与依赖
grep -rn "_stream_\(wrap\|readable\|writable\|duplex\|transform\|passthrough\)" ./src node_modules

writeHeader() 换成 writeHead(),直接引用 _stream_* 内部模块的地方需要改走公开的 stream API。Temporal 虽然默认开启,但迁移可以分批进行,不必和上面两处移除项绑在同一次发布里。

复制全文 生成海报 Node.js LTS 发布周期 JavaScript

推荐文章

程序员茄子在线接单