在之前的文章《pnpm monorepo 联调方案》中,我详细介绍了如何使用 pnpm link 和 pnpm link --global 来解决 monorepo 环境下的调试难题。
时间过去了一段时间,pnpm 也在不断演进。最近在使用过程中,我发现了一个有趣的变化:执行 pnpm link 时不再需要添加 --global 参数,同时 pnpm 会自动创建 pnpm-workspace.yaml 文件。这引起了我的好奇心,决定深入研究一下 pnpm 10.x 版本中 link 功能的最新变化。
最大的变化就是 去除了 --global 参数。
之前我们这样操作:
# 库中
pnpm link --global
# 项目中
pnpm link --global <pkg>
现在直接:
# 库中
pnpm link
# 项目中
pnpm link <pkg>
看起来是小改动,但其实是把之前的 pnpm link --global 的行为直接变成了 pnpm link 的默认行为。
从官方文档也能看出来,现在的 pnpm link 描述和之前 9.x 版本的 pnpm link --global 完全一样。


取消链接还是用 pnpm unlink:
pnpm unlink <pkg>
现在在基础库中执行 pnpm link,会直接链接到全局:
cd ~/packages/core
pnpm install
pnpm link
# 输出示例
❯ pnpm link
WARN The package @easy-editor/core, which you have just pnpm linked, has the following peerDependencies specified in its package.json:
- mobx@^6.13.5
The linked in dependency will not resolve the peer dependencies from the target node_modules.
This might cause issues in your project. To resolve this, you may use the "file:" protocol to reference the local dependency.
√ The modules directory at "C:\\\\Users\\\\user\\\\AppData\\\\Local\\\\pnpm\\\\global\\\\5\\\\node_modules" will be removed and reinstalled from scratch. Proceed? (Y/n) · true
Recreating C:\\\\Users\\\\user\\\\AppData\\\\Local\\\\pnpm\\\\global\\\\5\\\\node_modules