跳到主内容

pnpm 10.27

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

pnpm 10.27 新增了一个设置,可以忽略旧版本软件包的信任策略检查,引入了一个用于全局虚拟存储修剪的项目注册表,并修复了几个错误。

次要更改

trustPolicyIgnoreAfter

添加 trustPolicyIgnoreAfter 可以忽略对超过指定时间发布的软件包的信任策略检查 #10352

全局虚拟存储改进

添加了项目注册源,以支持全局虚拟商店清理。

使用该存储的项目现在通过符号链接在 {storeDir}/v10/projects/ 中注册。 这使得 pnpm store prune 能够跟踪哪些软件包仍在被活跃项目使用,并安全地从全局虚拟存储中删除未使用的软件包。

半破坏性更改。 更改了虚拟全局存储中未限定范围的软件包的位置。 为了保持统一的 4 级目录深度,它们现在将被存储在名为 @ 的目录下。

为全球虚拟存储添加了标记清除垃圾回收功能。

pnpm store prune 现在会从全局虚拟存储的 links/ 目录中删除未使用的软件包。 算法:

  1. 扫描所有已注册项目,查找指向存储的符号链接
  2. 遍历传递依赖关系以标记可达包
  3. 删除所有未标记为可达的软件包目录

这包括对工作区单存储库的支持——扫描项目中的所有 node_modules 目录(包括工作区包中的目录)。

补丁更改

  • 如果 tokenHelper<url>:tokenHelper 设置的值包含环境变量,则抛出错误。
  • 带有构建脚本的 Git 依赖项应遵循 dangerouslyAllowAllBuilds 设置 #10376
  • 如果使用 --global 运行程序并且配置了项目包管理器,则跳过包管理器检查,并发出跳过检查的警告。
  • 如果 dlx 缓存目录包含文件(而不仅仅是目录),则 pnpm store prune 不应失败 #10384
  • 修复了一个 bug (#9759),其中pnpm add 错误地将一个 pnpm-workspace.yaml 目录修改为精确版本。