将我们的生态系统迁移到 Node 22
2025 年初,Electron 的 npm 生态系统仓库(在 @electron/
和 @electron-forge/
命名空间下)将把 Node.js 22 作为最低支持版本。
这意味着什么?
过去,Electron 的 npm 生态系统中的包(Forge、Packager 等)会尽可能长时间地支持旧的 Node 版本,即使某个版本已达到其生命周期结束(EOL)日期。这样做是为了确保我们不会分裂生态系统——我们理解许多项目依赖于旧版本的 Node,并且除非有迫切的升级理由,否则我们不想冒险让这些项目陷入困境。
随着时间的推移,将 Node.js 14 作为我们的最低版本变得越来越困难,原因有以下几点:
- 缺乏官方的 Node.js 14 macOS ARM64 构建版本,这要求我们维护 CI 基础设施的变通方案以提供完整的测试覆盖。
- 上游包依赖项的
engines
要求已经提高,这使得通过依赖项升级来解决供应链安全问题变得越来越困难。
此外,较新版本的 Node.js 包含了许多我们希望利用的改进,例如运行时原生的常用工具(如 fs.glob
和 util.parseArgs
)以及全新的内置模块(如 node:test
、node:sqlite
)。
为何现在升级?
2024 年 7 月,Electron 的生态系统工作组决定,在未来某个时间点,当某个 Node 版本达到其 LTS 日期后,将所有包升级到支持 require()
同步 ESM 图的最早 Node 版本(参见 nodejs/node#51977 和 nodejs/node#53500)。
我们决定将该更新时间定为 2025 年 1 月/2 月。此次升级后,Node 22 将成为现有生态系统包中支持的最低版本。
我需要采取什么行动?
我们将尽力保持兼容性。但是,为了确保获得最佳支持,我们鼓励您将应用升级到 Node 22 或更高版本。
请注意,您项目中运行的 Node 版本与您当前 Electron 版本中嵌入的 Node 版本无关。
下一步
如果您有任何问题或疑虑,请随时发送邮件至 info@electronjs.org。您也可以在我们官方的 Electron Discord 中寻求社区支持。