Skip to content

pnpm10

这个 10 版本真的要命。

默认的钩子脚本不再自动运行了

比如安装依赖时,常见的 postinstall 命令,现在在 pnpm10 版本不再主动运行了。

ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF

我在安装全局依赖时,出现这个问题:

log
 ERR_PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH_DIFF  This modules directory was created using a different virtual-store-dir-max-length value. Run "pnpm install" to recreate the modules directory.

issue 说运行以下命令即可:

bash
pnpm i -g

不运行这个命令,我本来就安装好的全局包,就全部丢失了。

approve-builds

在我全局安装依赖时,出现这个要求:

要求运行 pnpm approve-builds -g
log
C:\Users\pc\AppData\Local\pnpm\global\5:
+ @antfu/ni 23.3.1
+ @anthropic-ai/claude-code 1.0.51
+ @electron/asar 3.3.1
+ cnpm 9.4.0
+ codess 1.1.10
+ commitizen 4.3.1
+ cz-git 1.11.0
+ degit 2.8.4
+ giget 1.2.3
+ neonctl 1.37.0
+ nuxthub 0.5.18
+ pnpm 9.15.0
+ rimraf 6.0.1
+ taze 19.1.0
+ trash-cli 6.0.0
+ tsx 4.19.2
+ turbo 2.4.4
+ vercel 41.2.0
+ wrangler 4.19.2

╭ Warning ──────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                               │
│   Ignored build scripts: @parcel/watcher, esbuild, sharp, workerd.                            │
│   Run "pnpm approve-builds -g" to pick which dependencies should be allowed to run scripts.   │
│                                                                                               │
╰───────────────────────────────────────────────────────────────────────────────────────────────╯

Done in 10s using pnpm v10.13.1
bash
pnpm approve-builds -g

按照要求做,然后在交互式的命令行内选择要构建的依赖包即可。

这是我最反感 pnpm10 的一部分,因为默认的 postinstall 行为被关掉了,改成要求我们手动批准允许构建的依赖包。

配置 onlyBuiltDependencies

在 package.json 内的 pnpm.onlyBuiltDependencies 内提供允许预构建的依赖包。即可避免使用 approve-builds 命令。

neverBuiltDependencies

neverBuiltDependenciesonlyBuiltDependencies 是互斥的配置,目前(2025-7-21)我没有使用。

贡献者

The avatar of contributor named as ruan-cat ruan-cat

页面历史