通过monorepo
管理多个子项目
1. Monorepo
模式
在Monorepo
模式下,根目录通常不建议直接安装依赖,而是通过工作区(workspaces)
来管理依赖。
但是在一些情况下,在根目录安装一些共享依赖也是可以的。
- 在根目录安装开发相关的依赖
如TypeScript, ESLint, Jest
等。这些可以被所有子包共享。 - 安装一些工具类库
例如Lodash, Moment
等小而通用的工具类库。 - 安装一些根模块需要的依赖
如果根目录下也有一些共享的模块,那么这些模块需要的依赖可以安装在根目录下。 - 简单的
Monorepo
项目
如果子包之间共享的依赖不多,也可以直接都安装在根目录,而不是过度引入工作区管理的复杂性。 - 通过优化提高共享依赖重用
比如使用些alias、symlink
等方式提高依赖共享。
2. 根目录
mkdir root-project
cd root-project
pnpm init
创建一个pnpm-workspace.yaml
文件, 两个子项目分别是vite-react
和vite-vue
packages:
- "vite-react/"
- "vite-vue/"
3. 子项目
3.1 创建
使用vite
的脚手架创建项目时,可以不用先创建文件夹,通过pnpm create vite
按照步骤选择自己功能
3.2 安装依赖
- 这里每个项目还未安装
node_modules
, 可以通过monorepo
的特性,直接在根目录输入pnpm i
即可
3.3 通过在根目录下的package.json
中配置命令,可以运行子项目
"scripts": {
"dev:react": "pnpm -C vite-react dev",
"dev:vue": "pnpm -C vite-vue dev"
}
说明: pnpm -C <workspace-name> <command>
4. 其他
通过pnpm i <modules-name> -S | -D -w
用来在根目录安装共享依赖, 其他子项目可以使用