pnpm构建Monorepo项目的一些问题?

场景如下:有三个项目A,B,C,这三个项目的关系如下图
pnpm构建Monorepo项目的一些问题?

  1. A是一个核心项目,其最终会使用Electron打成一个独立的项目A.EXE
  2. B项目是A项目的超集,在A的基础上会增加一部分功能,最终是一个B.WEB项目
  3. C项目是B项目的超级,在B的基础上也会增加一部分功能,最终也会使用Electron打成一个独立的项目C.EXE

经过一番调研,前端打算使用pnpm构建Monorepo架构,初步设想如下:

root

├── package.json

├── pnpm-workspace.yaml

├── packages

├── common

├── package.json

├── utils

├── package.json

├── A

├── package.json

├── B

├── package.json

├── C

├── package.json

common用于存放那些共用的业务代码,a,b,c分别去依赖这个包。如果我把common包所需要vue、vue-router、pinia都安装到common里,然后a,b,c去依赖它,但是这个时候在a,b,c中导入vue就不行了,这跟我想的有点不一样哈(依赖不能传递吗?),所以我只能把它安装到根目录下。安装到根目录下倒是跑起来了,不知道这样可以吗?刚接触到这个,前端也不是很熟,求大佬指导
pnpm构建Monorepo项目的一些问题?

大致了解了Monorepo架构,初步选项使用较为简单的pnpm


回答:

  1. 大体上没问题
  2. pnpm 因为依赖树解析的问题,不支持直接使用“依赖的依赖”,即 A 依赖 B,你安装了 A,可以使用 A,但是不能直接使用 B
  3. 所以最好的办法就是每个项目里单独安装一份 vue、vue-router 等
  4. 不过不用担心,pnpm 使用硬链接,所以不存在重复下载和安装的问题


回答:

如果你确定公用依赖包vue、vue-router这些都用同一个版本,那安装在根试试呢,root/package.json

以上是 pnpm构建Monorepo项目的一些问题? 的全部内容, 来源链接: utcz.com/p/935251.html

回到顶部