pnpm 11.1
pnpm 11.1 新增了一些命令——pnpm audit signatures、pnpm bugs 和 pnpm owner——同时还支持从任意名称的注册表安装(包括 GitHub Packages npm 注册源的内置别名),能够在 CI 中跳过运行时安装,以及修复了一些问题。
次要更改
pnpm audit signatures
一个新的 pnpm audit signatures 子命令会根据 /-/npm/v1/keys #7909 上发布的密钥,验证已安装软件包的 ECDSA 注册源签名。 会尊重已定义范围的注册表;不会发布签名密钥的注册表将被跳过。
pnpm audit signatures
命名注册表(以及内置的 gh: 别名)
现在,你可以通过内置的 gh: 前缀从 GitHub Packages npm 注册表 安装软件包,更广泛地说,还可以像 vlt 的命名注册源别名 那样,从任意命名的注册表安装软件包:
pnpm add gh:@acme/private
身份验证来自现有的每个 URL 的 .npmrc 条目(例如 //npm.pkg.github.com/:_authToken=...),因此不需要单独的身份验证机制。
可以在 pnpm-workspace.yaml 文件中的 namedRegistries 下配置其他别名,或者覆盖内置的 gh 别名(例如 GitHub Enterprise Server):
namedRegistries:
gh: https://npm.pkg.github.example.com/
work: https://npm.work.example.com/
这样,work:@corp/lib@^2.0.0 就对应到 https://npm.work.example.com/。 请参阅 #8941。
--sbom-spec-version
pnpm sbom 现在接受一个 --sbom-spec-version 标志来选择 CycloneDX 规范版本(1.5、1.6 或 1.7 — 默认为 1.7)。 该标志仅在使用 --sbom-format cyclonedx 时有效。 请参阅 #11389。
用于 CI 矩阵的 --no-runtime
新增的 --no-runtime 标志(配置:runtime=false)会跳过安装运行时条目(例如通过 devEngines.runtime 下载的 Node.js),而不会修改锁文件。 锁文件保留了运行时条目,因此冻结锁文件验证仍然通过;只是跳过了运行时获取和 .bin 链接。 这在 CI 矩阵中很有用,运行时是在外部配置的(例如,通过 pnpm runtime -g set node <version> ),然后再运行 pnpm install。
pnpm bugs
新的 pnpm bugs 命令会在浏览器中打开软件包的 bug 跟踪器 URL。 不带任何参数时,它会读取当前项目的 package.json;带一个或多个包名时,它会从注册表中获取每个包的元数据并打开其错误跟踪器。 当缺少 bugs 字段时,它会回退到 <repository>/issues。 请参阅 #11279。
pnpm owner
新的 pnpm owner 命令用于管理注册源中的包所有者:
pnpm owner ls <package>
pnpm owner add <package> <user>
pnpm owner rm <package> <user>
补丁更改
-
pnpm view现在会在其输出的其余部分旁边打印“由 Y 于 X 年前发布”,同步npm view表现。 在与minimumReleaseAge进行比较时,这很有用。 例如,pnpm view pnpm现在显示published 17 hours ago by GitHub Actions。 -
pnpm publish现在会在基于 Web 的身份验证流程期间轮询注册表的doneUrl时,遵循已配置的 HTTP/HTTPS 代理(包括https_proxy/http_proxy/no_proxy环境变量)。 之前轮询绕过了代理,导致注册源不同的源 IP 响应403,登录永远无法完成 #11561。 -
pnpm add -g现在默认将每个以空格分隔的包安装到其自己的独立目录中。 要将多个软件包捆绑到同一个隔离的安装中(以便它们共享依赖项并一起删除),请将它们作为逗号分隔的列表传递。 例如:pnpm add -g foo bar将foo和bar安装为两个独立的全局变量——删除其中一个不会影响另一个。pnpm add -g foo,bar qar将foo和bar捆绑到一个独立的安装包中,而qar则单独安装。
相关:#11587。
-
pnpm runtime set <name> <version>在多包工作区的根目录中不再出现ADDING_TO_ROOT错误。 安装工作区根目录是运行时的有效目标,因此该命令现在绕过了该安全检查。 -
修复了在打印版本信息后,
pnpm --version在工作池生命周期内一直挂起的问题。 CLI 条目现在从它自己的finally中运行finishWorkers(),因此每个退出路径都会销毁池。
