在我最近的工作项目中,我采用了 pnpm monorepo
来管理多个基础库的开发。这种方式虽然在项目组织上提供了便利,但在调试过程中却给我带来了不小的挑战。
当项目中的库出现 bug 时,定位问题的源头变得异常困难。我最初的想法是,由于 pnpm monorepo
环境下库之间存在 monorepo 其他库的依赖,传统的调试方法似乎难以应对。特别是处理 workspace:*
这样的依赖声明时,我感到无从下手。
起初,我没有深入研究,而是选择了最直接的方法来应对问题:
这个过程不仅繁琐耗时,而且往往不能保证问题得到彻底解决。
在 pnpm 的官网上看到了 pnpm link
,了解了一下发现,原来也是可以实现联调的。
pnpm link
pnpm link
和 npm link
的使用是一样的,用于链接指定的文件夹。
# 找到需要联调的库,安装依赖
cd ~/packages/core
pnpm install
# 来到项目中,链接这个库即可
cd ~/projects/my-project
pnpm link ~/packages/core
pnpm link —global
而 pnpm link --global
的话,是将库链接到全局的 node_modules
。
然后再另一个需要使用的库或者项目中通过 pnpm link --global <pkg>
引用即可。
# 找到需要联调的库,安装依赖,然后进行 link
cd ~/packages/core
pnpm install
pnpm link --global
# 来到项目中,链接这个库即可
cd ~/projects/my-project
pnpm link --global core