pnpm 10.32
pnpm 10.32 为 pnpm approve-builds 添加了 --all 标志,用于在不显示交互式提示的情况下批准所有待处理的构建。
pnpm 10.32 为 pnpm approve-builds 添加了 --all 标志,用于在不显示交互式提示的情况下批准所有待处理的构建。
pnpm 10.31 在更新 pnpm-workspace.yaml 时保留注释和格式,并包含大量错误修复。
pnpm 10.30 重新设计了 pnpm why,以显示反向依赖关系树,从而更容易理解为什么安装了一个软件包。
pnpm 10.29 为 pnpm dlx 添加了 catalog: 协议支持,允许在 pnpm-workspace.yaml 中配置 auditLevel,支持裸 workspace: 说明符,并修复了几个错误。
pnpm 10.28 引入了一个新的 beforePacking 钩子,用于在发布时自定义 package.json,提高了过滤安装的性能,并修复了几个错误。
pnpm 10.27 新增了一个设置,可以忽略旧版本软件包的信任策略检查,引入了一个用于全局虚拟存储修剪的项目注册表,并修复了几个错误。
2025 年对于 pnpm 来说是具有变革意义的一年。 虽然我们的主要重点是重新定义软件包管理的安全模型,但我们也显著提高了性能和开发者体验。
从默认阻止生命周期脚本到引入全局虚拟存储,以下回顾一下 2025 年发布的主要功能。
pnpm 10.26 为 git 托管的依赖项引入了更严格的安全默认值,添加了 allowBuilds 以实现细粒度的脚本权限,并包含了一个新设置来阻止特殊的传递依赖项。
pnpm 10.25 改进了证书处理,添加了裸 pnpm init,并修复了一些影响用户体验的问题。
我们很幸运地遇到了 Shai-Hulud 2.0。
2025 年 11 月,一个自我复制的 npm 蠕虫感染了 796 个软件包,每月下载量达 1.32 亿次。 该攻击利用预安装脚本窃取凭据、安装持久后门,并在某些情况下清除整个开发人员环境。 我们没有受到影响——不是因为我们有强大的防御措施,而是因为在攻击期间我们没有运行 npm install 或 npm update。
运气不是安全策略。