批量批准会允许所有待处理依赖执行安装脚本
原文依据:3 处文档提供 `pnpm approve-builds --all`。这会越过逐包审查机制,而依赖生命周期脚本可以用运行 pnpm 的用户或 CI 身份执行任意代码。
恶意或被入侵的依赖可能读取工作区文件和 CI 环境变量、修改构建产物,或使用当前任务可访问的凭据。
这是文档中的主动命令,不只是警告。默认机制会阻止未审查的依赖构建脚本,但 `pnpm approve-builds --all` 会一次批准全部待处理脚本。若代理在未逐包核查时运行它,获批依赖的安装脚本将以当前用户或 CI 权限执行。用户可要求逐包列出并审查脚本,禁止使用 `--all`,并在低权限、无凭据的环境中安装。
### Approving builds```bashpnpm approve-builds # interactive promptpnpm approve-builds --all # approve all pendingpnpm approve-builds esbuild fsevents !core-js # ! = denypnpm add --allow-build=esbuild my-bundler # approve while addingpnpm add -g --allow-build=esbuild esbuild # global (replaces approve-builds -g)```查看另外 2 个位置
By default pnpm does **not** run dependency lifecycle scripts (`preinstall`/`install`/`postinstall`). Packages must be explicitly approved. Approval lives in one `allowBuilds` map in `pnpm-workspace.yaml`.```bashpnpm approve-builds # interactive promptpnpm approve-builds --all # approve all pendingpnpm approve-builds esbuild fsevents !core-js # ! = denypnpm add --allow-build=esbuild my-bundler # approve while addingpnpm add -g --allow-build=esbuild esbuild # global (replaces approve-builds -g)```