在pnpm workspace场景下如何引用本地克隆的公共包fork版本
pnpm workspace 引用本地克隆依赖包的解决方案
你可以通过两种方式实现无需推送代码、不嵌套git仓库的本地依赖引用:
方式1:临时软链接(无需修改项目配置)
适合短期测试验证的场景,操作如下:
- 将fork的公共包克隆到你的pnpm workspace根目录之外的任意路径,避免嵌套git仓库冲突
- 进入本地克隆的fork包目录,执行命令注册全局软链接:
pnpm link --global - 回到你的pnpm workspace根目录,执行命令关联目标包:
pnpm link --global <公共包的包名> - 完成测试后要恢复原版本,在workspace根目录执行:
pnpm unlink --global <公共包的包名>,再重新执行pnpm install即可
方式2:路径重写(适合较长时间开发)
如果需要在本地开发调整一段时间,可以通过pnpm的overrides配置固定引用本地版本:
- 同样先将fork的公共包克隆到workspace根目录之外的路径
- 在workspace根目录的
package.json中添加如下配置:
路径可以填fork包相对于workspace根目录的相对路径,也可以填绝对路径{ "pnpm": { "overrides": { "<目标公共包名>": "file:../your-fork-pkg-path" } } } - 执行
pnpm install即可生效,所有workspace内引用该公共包的位置都会自动替换为本地克隆版本 - 开发完成提交PR后,删除
overrides中的对应配置,重新执行pnpm install即可恢复官方版本
注意事项
- 如果fork的公共包需要编译才能使用,每次修改代码后要先在fork包目录执行对应的构建命令,再到项目中验证效果
- 不要将带有本地
file:路径的配置提交到git,避免影响其他协作者的依赖安装 - 如果只需要workspace中的单个子应用使用本地版本,也可以直接修改对应子应用
package.json中该依赖的版本为file:../your-fork-pkg-path,无需配置全局overrides
内容的提问来源于stack exchange,提问作者Steve B
相关产品推荐
相关产品推荐

