






















2025 年对于 pnpm 来说是具有变革意义的一年。 虽然我们的主要重点是重新定义软件包管理的安全模型,但我们也显著提高了性能和开发者体验。
从默认阻止生命周期脚本到引入全局虚拟存储,以下回顾一下 2025 年发布的主要功能。
根据 下载统计 pnpm 的下载量是 2024 年的 2 倍!

你可能已经注意到,我们重新设计了主页! 此次重新设计得益于我们最主要的赞助商 Bit.cloud。
新的主页现在使用 Bit 组件 构建,其中很多工作都是使用 Bit 的 AI 代理 Hope AI 完成的。https://bit.cloud/pnpm/website 我们现在甚至有了自己的设计系统。
今年对我个人而言是一个巨大的里程碑,因为我第一次在大型国际会议——6 月在阿姆斯特丹举行的 JSNation 会议上进行了现场演讲。 我要感谢 JSNation 团队给予我这个绝佳的机会!

令我惊喜的是,pnpm 在社区中如此知名,而且有那么多人在工作中使用它!
现在,让我们深入了解一下 pnpm v10 在 2025 年期间发布的最重大变化。
今年最重要的变化是 pnpm 转向“默认安全”。 在 pnpm v10.0 中,我们不再隐式信任已安装的软件包。
多年来,pnpm install 意味着信任整个依赖树来执行任意代码。 在 v10 版本中,我们关闭了此功能。 pnpm 默认情况下不再运行 preinstall 或 postinstall 脚本,从而消除了一类巨大的供应链攻击途径。
为了完善此控制,我们在 v10.26 中引入了 allowBuilds,用更灵活的配置取代了之前的 onlyBuiltDependencies:
allowBuilds:
esbuild: true
# 仅允许特定版本
nx@21.6.4: true
我们并没有止步于剧本。 我们增加了多层防御措施,在恶意软件到达你的磁盘之前就将其拦截:
minimumReleaseAge: 阻止“零日”版本(例如,发布时间不足 24 小时的软件包),让社区有时间标记恶意更新。trustPolicy: no-downgrade: 防止安装来源不如以前版本可靠的更新(例如,未经 CI/CD 验证发布的版本)。blockExoticSubdeps: 防止受信任的依赖项从不受信任的源拉取传递依赖项。pnpm 的一项原创创新是内容寻址存储,它通过文件去重来节省磁盘空间。 在 v10.12中,我们使用全局虚拟存储向前迈出了一步。
以前,项目都有自己的 node_modules 结构。 启用 enableGlobalVirtualStore: true 后,pnpm 现在可以将磁盘上中央位置的依赖项直接链接到您的项目中。 这意味着:
react@19,pnpm 只需要全局链接一次。我们采用了具有原生支持的新 JSR 注册表。 现在可以使用 jsr: 协议直接从 JSR 安装软件包:
pnpm add jsr:@std/collections
这样就能在 package.json 中正确映射,并能与 npm 依赖项无缝地处理 JSR 包的独特解析规则。
对于单体仓库和复杂的设置,我们引入了**配置依赖项**。 此功能允许你在多个项目中共享和集中管理 pnpm 配置(例如钩子、补丁和构建权限)。
配置依赖项在解析主依赖关系图之前安装到 node_modules/.pnpm-config 中。 这意味着你可以用它们来:
.pnpmfile.cjs 钩子。patchedDependencies 的补丁文件。allowBuilds 执行构建脚本。pnpm-workspace.yaml
configDependencies:
pnpm-plugin-my-company: "1.0.0+sha512-..."
这样可以确保你的 pnpm 配置具有版本控制、一致性,并且在包管理器需要时可用。
我们已经支持 Node.js 运行时管理一段时间了。 2025年,我们将其扩展到支持其他运行时环境,例如 Deno 和 Bun。
现在您可以通过在 package.json 中通过 devEngines.runtime 指定所需的运行时:
package.json
{
"devEngines": {
"runtime": {
"name": "node",
"version": "24.6.0"
}
}
}
pnpm 将自动下载并使用该特定版本的运行时来运行该项目中的脚本。 这使得“在我的机器上运行正常”成为过去式——团队中的每个人都使用完全相同的运行时,完全由 pnpm 管理。
我们已经开始着手开发 pnpm v11.0,该版本在性能方面有一些明显的改进。 全局虚拟存储默认情况下尚未启用。 我们将致力于修复漏洞和完善缺失的功能,以便在未来的主要版本中默认启用该功能。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。