发布全解析:18.x 正式进入“Hydrogen”长期支持周期)
Node.js 18.12.0LTS发布全解析18.x 正式进入“Hydrogen”长期支持周期【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.orgNode.js v18.12.0 是 18.x 发布线首个被标记为 Long Term SupportLTS的版本代号 “Hydrogen”。本篇技术指南基于 nodejs.org 官网仓库中的正式发布公告完整梳理该版本的 LTS 里程碑意义、全平台安装包清单、PGP 签名 SHASUMS 校验流程并结合仓库源码揭示这类发布博文在 nodejs.org 站点中的自动生成机制与版本状态数据模型帮助你准确理解 LTS 生命周期并安全地完成升级与二进制校验。版本背景18.x 进入 LTS 的里程碑节点v18.12.0 发布于 2022 年 10 月 25 日由 Ruy Adorno 与 Rafael Gonzaga 署名发布归档于 apps/site/pages/en/blog/release/v18.12.0.mdfrontmatter 中category: release、layout: blog-post。该版本的核心意义不在于新增多少 API而在于它标志着 Node.js 18.x 发布线正式从 Current 阶段转入长期支持Active LTS从本版本起持续到 2023 年 10 月Maintenance维护期2023 年 10 月之后转入直至 2025 年 4 月完全 End-Of-LifeEOL。这背后是 Node.js 固定的发布节奏偶数大版本进入 LTS奇数大版本保持 Current。仓库中的 关于 EOL 的说明页 明确解释了这一机制大版本按可预测的时间表发布、打补丁并最终被标记 EOL一旦某个发布线到达 EOL项目将不再为其提供任何更新包括安全补丁。在 nodejs.org 站点的数据层这种状态判定被建模为源码中的状态机。next-data/generators/releaseData.mjs 中的getNodeReleaseStatus逻辑如下const getNodeReleaseStatus (latest, eol) { const now new Date(); if (eol now new Date(eol)) { return EOL; } if (latest.lts.isLts) { return LTS; } return Current; };也就是说一个版本线只有当其支持计划中的 EOL 日期已过才会被标记为 EOL只要该线最新的版本是 LTS 版本就标记为 LTS否则为 Current。数据来源于nodevu见 majorNodeReleases.mjs并会过滤掉没有文档化支持计划的版本。这张状态表被 EOLReleaseTable 等组件消费用于渲染 EOL 版本表格。官方下载工件清单v18.12.0 全平台v18.12.0 发布公告按平台列出了官方分发的全部工件所有文件均托管在 Node.js 官方发行目录https://nodejs.org/dist/v18.12.0/下平台工件下载地址Windows32 位安装器MSIhttps://nodejs.org/dist/v18.12.0/node-v18.12.0-x86.msiWindows64 位安装器MSIhttps://nodejs.org/dist/v18.12.0/node-v18.12.0-x64.msiWindows32 位二进制https://nodejs.org/dist/v18.12.0/win-x86/node.exeWindows64 位二进制https://nodejs.org/dist/v18.12.0/win-x64/node.exemacOS64 位安装器pkghttps://nodejs.org/dist/v18.12.0/node-v18.12.0.pkgmacOSApple Silicon 二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-darwin-arm64.tar.gzmacOSIntel 二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-darwin-x64.tar.gzLinux64 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-x64.tar.xzLinuxPPC LE 64 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-ppc64le.tar.xzLinuxs390x 64 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-s390x.tar.xzAIX64 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-aix-ppc64.tar.gzLinuxARMv7 32 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-armv7l.tar.xzLinuxARMv8 64 位二进制https://nodejs.org/dist/v18.12.0/node-v18.12.0-linux-arm64.tar.xz任意源码包https://nodejs.org/dist/v18.12.0/node-v18.12.0.tar.gz此外全部发行文件位于https://nodejs.org/dist/v18.12.0/对应版本的 API 文档位于https://nodejs.org/docs/v18.12.0/api/。需要留意的是这份清单是按版本时代动态变化的。仓库中的 scripts/release-post/downloadsTable.mjs 用%version%占位符构造下载模板并按 semver 规则裁剪平台版本 16.0.0不提供 macOS Apple Silicon 二进制版本 19.9.0不提供 Windows ARM 64 位安装器与二进制因此 v18.12.0 时代没有 Windows ARM 工件版本 23.0.0移除 Windows 32 位工件版本 24.0.0移除 ARMv7 32 位二进制。这也是为什么 v18.12.0 公告中恰好包含 Windows x86/x64、macOS Apple Silicon/Intel、Linux x64/ppc64le/s390x/armv7l/arm64、AIX 与源码共 16 类工件。SHASUMS 与二进制签名校验发布公告中随附的SHASUMS块是 Node.js 发行安全体系的关键部分。它来自发行目录下的SHASUMS256.txt.asc文件前半部分是每个工件文件的 SHA-256 校验和后半部分是用 Node.js 发布私钥进行的 PGP 签名用于防篡改。校验和核对下载任意工件后可以用系统自带工具独立计算其 SHA-256 并与公告比对。例如在 Linux/macOS 上shasum -a 256 node-v18.12.0-linux-x64.tar.xz # 期望输出9429e26d9a35cb079897f0a22622fe89ff597976259a8fcb38b7d08b154789dcPGP 签名验证更为严格的做法是验证签名本身确保校验和文件确实由 Node.js 官方发布。流程大致为从官方渠道获取 Node.js 发布公钥并导入 GPG 密钥环下载SHASUMS256.txt.asc并验证签名gpg --verify SHASUMS256.txt.asc验证通过后再用shasum -a 256 -c SHASUMS256.txt.asc等命令批量比对所有下载文件的校验和。下载页面 中也明确引导用户“学习如何验证签名的 SHASUMS”并将其列为下载源码包之前的安全步骤。以下是 v18.12.0 官方公告中随附的完整签名校验和清单节选关键工件完整文件见 v18.12.0.md 原文10b1f6ffd3a10fc33e497ea66019a5f66b748c1f8767fcb22cd3c365b5c30b64 node-v18.12.0-aix-ppc64.tar.gz 7aa5ef109086be0adf433b851504f0522a71a02c6d675e729375cd591a854f3c node-v18.12.0-darwin-arm64.tar.gz e0e830f859ee20f53c830f1ad86477defee79f87915976cbee14caf6204bbf16 node-v18.12.0-darwin-x64.tar.xz 0699c8e02581a9c312d7157331561d36ef23963766eb47daa702edb6fd6735bd node-v18.12.0-linux-x64.tar.gz 9429e26d9a35cb079897f0a22622fe89ff597976259a8fcb38b7d08b154789dc node-v18.12.0-linux-x64.tar.xz 83a0e2246c4f1b33e37b995b479137d14fc3cfc184cc3f798e41a8a4cca1da85 node-v18.12.0.pkg 1fbb44d083ec11d0c208535dac4fb33f9dff7360bbf4b127dd2b9808f3e41106 node-v18.12.0.tar.gz 73a7f01e2999eb197763ced666a6cd544ad580eaefb73e0a849603b3e804f42e node-v18.12.0.tar.xz 5c9443cc6213f88a9c702b995f04b86cda78f01f47f251ce46b7567e1197a59c node-v18.12.0-x64.msi 8a6e8ec6e6a51d1d98052943dd324d0ac53a0f07185d9d7c7ea7c43b3b764a6b node-v18.12.0-x86.msi这类发布公告在 nodejs.org 仓库中是如何生成的v18.12.0.md 并非纯手写文档而是由仓库内置的发布博文生成脚本产出。理解这条自动化流水线能让你读懂发布公告的结构规律也能作为自行维护类似发布站点的参考。生成脚本入口apps/site/scripts/release-post/index.mjs 是一个可直接执行的 CLI 工具用法为node index.mjs [version]传入版本号时针对指定版本生成省略时脚本会从https://nodejs.org/dist/index.json自动抓取最新版本号对应源码中的findLatestVersion支持--force/-f参数覆盖已存在的博文默认遇到已存在文件会报错见ERRORS.RELEASE_EXISTS输出文件写入../../pages/en/blog/release/vX.md即本仓库的 apps/site/pages/en/blog/release 目录目前该目录下已有 800 篇历代版本公告。生成过程通过fetchDocs并行抓取四类数据Changelog 主体从 Node.js 主仓库的CHANGELOG_V{主版本}.md中按a id版本号/a锚点截取对应版本段落并把*列表符号规范化为-发布作者从 changelog 头部如## 2022-10-25, Version 18.12.0 Hydrogen (LTS), ruyadorno解析出author再调用 GitHub API 获取作者展示名版本策略通过正则/^## ?\d{4}-\d{2}-\d{2}, Version [^(].*\(([^)])\)/从 changelog 标题中提取LTS、Current等策略标签SHASUMS直接抓取https://nodejs.org/dist/v{version}/SHASUMS256.txt.asc原文下载不可用时会以[INSERT SHASUMS HERE]占位等待人工补充。此外verifyDownloads会逐个对下载表里的 URL 发HEAD请求做存活探测失败的标记为*Coming soon*。模板结构scripts/release-post/template.hbs 是渲染用的 Handlebars 模板定义了发布公告的标准骨架--- date: {{date}} category: release title: Node.js {{version}} ({{versionPolicy}}) layout: blog-post author: {{author}} --- {{changelog}} {{#files}} {{.}} \ {{/files}} Other release files: https://nodejs.org/dist/v{{version}}/ \ Documentation: https://nodejs.org/docs/v{{version}}/api/ ### SHASUMS{{shasums}}对照 v18.12.0.md 可以看到完全一致的产物frontmatter 中date/category/title/layout/author五个字段、Changelog 正文、以反斜杠续行的下载清单、### SHASUMS区块。v18.12.0 公告中的### Notable Changes段落正是 changelog 截取下来的正文部分——它简明点明了本版本最重要的信息18.x 进入 LTSHydrogen。最终渲染出的文本还会经过 Prettiermarkdown 解析器格式化再落盘到版本目录。下载页与版本状态如何联动官网下载页 apps/site/pages/en/download/index.mdx 使用Release.VersionDropdown、Release.ReleaseCodeBox、Release.PrebuiltDownloadButtons等组件让用户按操作系统、架构、安装方式与包管理器选择对应的安装命令或预编译二进制并链接到 changelog 与对应版本的发布博文便于在下载前核对版本变更。页面还引导用户了解 Node.js 发布计划 与 LTS 状态。在数据层next-data/generators/releaseVersions.mjs 会聚合所有主版本下的全部 release 版本号如v18.12.0供版本下拉框与历史归档页使用releaseData.mjs 则负责把每个版本的 modules 版本、npm 版本、V8 版本、发布日期等元数据与EOL / LTS / Current状态一并提供给前端渲染。也就是说你在官网看到的“18.12.0 属于 LTS 线”这一标注其依据就是这套从 nodevu 到状态机的数据链路与发布公告中“Active LTS / Maintenance / EOL”的时间表一一对应。实践要点小结围绕 v18.12.0 这个里程碑版本可以沉淀出几条可直接落地的实践升级时机18.x 线自 v18.12.0 起进入 Active LTS至 2023 年 10 月随后转入 Maintenance 直至 2025 年 4 月 EOL。在 EOL 页面 中可以看到 EOL 版本不再获得任何安全补丁因此生产环境应尽量停留在 Active LTS 窗口内并制定升级路线下载安全始终优先使用官方发行目录中的工件并通过 SHASUMS 的 SHA-256 校验与 PGP 签名验证两道工序确认文件完整性与来源可信版本认知发布公告的工件清单随版本时代变化例如 Windows ARM 工件自 19.9.0 起才出现、32 位工件自 23.0.0 起移除判断某个版本“应该提供哪些安装包”时可参考 downloadsTable.mjs 的 semver 过滤规则发布自动化nodejs.org 用一条「抓取 changelog → 解析作者与策略 → 探测下载链接 → 渲染模板 → Prettier 格式化 → 落盘」的流水线批量产出发布博文index.mjs 中每一步都对应清晰的错误类型与回退逻辑可作为发布内容自动化的参考实现。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考