一、研究背景
monorepo架构项目目录结构:
- common
- index.ts
- ...
- main
- index.ts
- ...
- web
- vue-demo
- ...
pnpm在monorepo架构下使用以下命令
pnpm -F main add common
# or
pnpm --filter main add common
并不能在main/index.ts中使用common/index.ts模块下封装好的axios,一直从远程下载common模块。
二、解决方法
后来参考了这篇文章才知道,pnpm版本在 9.0 之后 pnpm,修改了 link-workspace-packages
的默认值为 false。我们需要开启该属性,在安装依赖时优先在本地链接,而不是从 registry(远程) 中下载。
在根目录新建.npmrc并配置以下内容:
link-workspace-packages=true
再执行以下命令即可
pnpm -F main add common
# or
pnpm --filter main add common
引用效果如下图所示
三、参考文献
一文吃透 pnpm 如何使用 workspace 构建 monorepo,与 npm、yarn 的用法对比(pnpm 9.x 内部安装依赖问题 link-workspace-packages) | kshao-blog - 前端知识记录 (ksh7.com)