跳到主内容

pnpm 10.26

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

pnpm 10.26 为 git 托管的依赖项引入了更严格的安全默认值,添加了 allowBuilds 以实现细粒度的脚本权限,并包含了一个新设置来阻止特殊的传递依赖项。

次要更改

更严格的 Git 依赖安全

半破坏性更改。 现在,除非在 onlyBuiltDependencies(或 allowBuilds)中明确允许,否则 Git 托管的依赖项将无法在安装期间运行 prepare 脚本 #10288。 此项更改可防止从不受信任的 Git 仓库执行恶意代码。

allowBuilds

新增了一个名为 allowBuilds 的新设置,提供了灵活管理构建脚本的方式。 它接受一个包匹配器映射,以明确允许(true)或禁止(false)脚本执行。 这将取代 onlyBuiltDependenciesignoredBuiltDependencies,成为首选配置方法 #10311

示例:

allowBuilds:
esbuild: true
core-js: false
nx@21.6.4 || 21.6.5: true

blockExoticSubdeps

新增了 blockExoticSubdeps 设置,以提高供应链安全性。 当设置为 true 时,它会阻止在过渡依赖中解析异常协议 (如 git+ssh: 或直接的 https://: tarball)。 只有直接依赖项才允许使用特殊来源 #10265

HTTP Tarball 的完整性哈希

半破坏性更新。 pnpm 现在会在获取 HTTP tarball 依赖项时计算其完整性哈希值,并将其存储在 lockfile 中。 这将确保服务器在随后安装时无法在没有检测到的情况下提供被更改的内容 #10287

pnpm pack --dry-run

pack 命令添加了对 --dry-run 的支持。 这样,你就可以在不实际创建 tarball 的情况下验证哪些文件将包含在 tarball 中 #10301

补丁更改

  • 当最新版本被弃用时,在表格/列表格式中显示弃用提示 #8658
  • deploy 命令的锁文件中删除 injectWorkspacePackages 设置 #10294
  • 在将 tarball URL 保存到锁文件之前对其进行规范化 #10273
  • Fix URL normalization for redirected immutable dependencies #10197.