跳到主内容

pnpm 10.14

· 一分钟阅读
Zoltan Kochan
pnpm 的首席维护者

增加了对 JavaScript 运行时安装的支持

devEngines.runtime (在 package.json中) 中声明 Node.js, Deno 或 Bun ,并让 pnpm 自动下载并固定它。

用法示例:

{
"devEngines": {
"runtime": {
"name": "node",
"version": "^24.4.0",
"onFail": "download" // we only support the "download" value for now
}
}
}

工作原理:

  1. pnpm install 将你指定的范围解析为最新的匹配运行时版本。
  2. 精确的版本(和校验和)保存在锁文件(lockfile)中。
  3. 脚本使用本地运行时,确保跨环境的一致性。

为什么这样更好:

  1. 此新设置还支持 Deno 和 Bun(相比我们的仅限 Node 的设置 useNodeVersionexecutionEnv.nodeVersion
  2. 支持版本范围(不仅仅是固定版本)。
  3. 解析后的版本与完整性校验和一起存储在 pnpm 锁文件中,以便将来验证 Node.js 内容的有效性。
  4. 它可以在任何工作区项目上使用 (就像 executionEnv.nodeVersion)。 因此,工作区中的不同项目可以使用不同的运行时。
  5. 目前,devEngines.runtime 设置将在本地安装运行时,我们将在 pnpm 的未来版本中通过在计算机上使用共享位置来改进它。

相关 PR:#9755

其他新功能

  • pnpm installpnpm addpnpm dlx 添加了 --cpu--libc--os,以通过 CLI 自定义 supportedArchitectures #7510

Bug 修复

  • Fix a bug in which pnpm add downloads packages whose libc differ from pnpm.supportedArchitectures.libc.
  • The integrities of the downloaded Node.js artifacts are verified #9750.
  • Allow dlx to parse CLI flags and options between the dlx command and the command to run or between the dlx command and -- #9719.
  • pnpm install --prod should removing hoisted dev dependencies #9782.
  • 修复导致本地 tarball 无法重新链接到虚拟存储的边缘情况错误。 当更改 tarball 的内容而不重命名文件并运行过滤安装时,就会发生此错误。
  • 修复导致 pnpm install 在更改具有对等依赖关系的本地 tarball 后错误地假定锁文件是最新的错误。