菜单

发布类型和生命周期

相关源文件

本文档概述了 Node.js 的不同发布类型及其支持生命周期。它解释了 Node.js 版本是如何创建、维护和最终退役的,帮助开发者了解哪个版本适合他们的需求以及每个版本将支持多长时间。

Node.js 发布类型

Node.js 有三种主要的发布类型,每种都满足不同的用户需求:

  • Current (当前版本):包含最新功能的最新活跃开发分支。
  • LTS (长期支持):注重稳定性和安全性的稳定发布版本。
  • Nightly (每日构建):来自当前开发分支的每日开发构建版本。

当前版本发布

当前版本(Current releases)处于积极开发中,包含最新的功能、改进和错误修复。这些版本非常适合想要使用最新 Node.js 功能的开发者。

当前版本发布的关键特性

  • 每 6 个月发布一次(4 月和 10 月)
  • 10 月发布的版本支持 8 个月。
  • 4 月发布的版本在转为 LTS 之前支持 6 个月。
  • 允许主要版本之间存在不兼容的更改(breaking changes)。
  • 遵循语义化版本控制(Semantic Versioning)。

来源:README.md44-50

LTS(长期支持)版本发布

LTS 版本侧重于生产环境的稳定性、安全性和性能。这些版本提供更长的支持周期,并优先考虑向后兼容性。

LTS 版本发布的关键特性

  • 只有偶数主版本会成为 LTS 版本(例如 v18、v20、v22)。
  • 4 月发布的版本会在次年 10 月转换为 LTS。
  • 每个 LTS 版本都有一个按字母顺序排列的代号(例如 v18 的代号是 Hydrogen)。
  • 总支持期为 30 个月(2.5 年)。
  • 两个支持阶段:
    • Active LTS (活跃 LTS):12 个月,提供包括错误修复、安全更新和部分非破坏性功能在内的全面支持。
    • Maintenance (维护期):18 个月,主要侧重于安全更新和关键错误修复。

来源:README.md51-58

每日构建版本发布

每日构建版本(Nightly releases)是从当前开发分支自动生成的每日构建版本。它们提供了对最新更改的访问,但可能不稳定。

每日构建版本发布的关键特性

  • 每 24 小时构建一次(当有更改时)。
  • 包含实验性功能和进行中的功能。
  • 不建议在生产环境中使用。
  • 对于测试即将推出的功能或验证错误修复非常有用。

来源:README.md57-58 README.md80-87

发布时间表和生命周期

Node.js 的发布时间表遵循可预测的模式,使用户能够计划升级和转换。

发布时间线图

此图说明了版本如何经历不同的阶段,偶数版本(N、N+2)将成为 LTS 版本,而奇数版本(N+1)将仅作为 Current 版本。

版本状态转换

来源:README.md44-58

语义化版本控制

Node.js 遵循 Current 和 LTS 版本的语义化版本控制,这有助于用户理解更新的影响。

  • 主版本号 (x.y.z):可能包含不兼容的更改。
  • 次版本号 (x.y.z):包含新功能,但不包含不兼容的更改。
  • 修订号 (x.y.z):包含错误修复和安全更新,但不包含不兼容的更改。

来源:README.md60-61

版本命名方案

LTS 版本会被赋予按字母顺序排列的代号。这使得引用特定 LTS 版本更容易,而无需记住版本号。

近期 LTS 代号示例

  • Node.js 18:Hydrogen
  • Node.js 16:Gallium
  • Node.js 14:Fermium
  • Node.js 12:Erbium

最新的 LTS 版本可以通过 Node.js 下载仓库中的 latest-<codename> 目录访问。

来源:README.md54-55 README.md75-78

查找和下载版本

下载地点

Node.js 的版本可从多个地点下载:

目录和文件名结构

Current 和 LTS 版本按版本号组织在目录中。latest 目录指向最新发布的 Current 版本,而 latest-<codename> 目录指向特定 LTS 系列的最新版本。

Nightly 构建遵循一个命名约定,包括:

  • 版本号
  • UTC 日期
  • 发布 HEAD 的短提交 SHA

例如:v22.0.0-nightly20240424ddd0a9e494

来源:README.md65-87

发布生命周期中的安全性

安全是 Node.js 发布流程中的关键方面。安全漏洞会根据其严重程度在所有活跃的维护版本线中得到处理。

该项目有一个由安全管家管理的专门的安全发布流程,负责协调对漏洞的响应。当发现安全问题时:

  1. 漏洞会被分类和评估。
  2. 会为符合条件的漏洞申请 CVE 编号。
  3. 会为所有维护版本线准备安全更新。
  4. 发布前一周会发布预告。
  5. 安全补丁会在公布的日期发布。

对于 LTS 版本,安全是首要任务,尤其是在维护阶段,此时更新主要侧重于安全修复。

来源:doc/contributing/security-release-process.md1-181

版本验证

所有官方 Node.js 版本都由发布团队成员进行加密签名。这确保了下载的完整性和真实性。

要验证下载的 Node.js 包,请执行以下操作:

  1. 从版本目录下载 SHASUMS256.txt 文件。
  2. 使用 sha256sum 验证文件哈希。
  3. 使用发布团队的 GPG 密钥验证 SHASUMS256.txt.sig 的签名。

来源:README.md96-127

发布团队和职责

Node.js 发布团队由以下成员组成,他们负责:

  1. 准备和测试新版本。
  2. 使用其 GPG 密钥签名版本。
  3. 管理安全更新的发布流程。
  4. 维护和更新发布文档。

发布团队的当前成员列表及其 GPG 密钥可以在 Node.js 仓库的 README 中找到。

来源:README.md774-793

发布周期概览

此图展示了代码如何从开发阶段经历不同的发布阶段和渠道,直至生命周期结束。

来源:README.md44-58

结论

了解 Node.js 的版本类型及其生命周期,对于在不同环境中就使用哪个版本做出明智的决定至关重要。Current 版本提供最新功能,但需要更频繁的更新;而 LTS 版本为生产环境提供了稳定性和长期支持。Nightly 构建版本供希望紧跟最新开发的用户进行测试。

通过遵循可预测的发布时间表,用户可以规划其 Node.js 升级策略,以平衡对新功能的访问与稳定性需求。