Monorepo
Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性,Monorepo 提倡了开放、透明、共享的组织文化
主流包管理
指令
pnpm 常用指令
pnpm install:安装pnpm add <pkg>:添加包pnpm update:更新包pnpm remove:移除包pnpm <cmd>:运行命令
子包管理
- 指定
pkgA子包安装lodash;-S和-D选项分别可以将依赖安装为正式依赖(dependencies)或者开发依赖(devDependencies)
pnpm --filter pkgA i -S lodash-es
pnpm --filter pkgA i -D lodash-es
- 指定
A子包安装内部依赖B子包
pnpm --filter pkgA i -S pkgB
公共依赖全局安装
pnpm install @types/node -wD
- 在子项目
package.json文件中 声明使用公共依赖
"peerDependencies": { "@types/node": "*", }
workspace
目录结构
├── packages
├── pkgA
│ │ ├── src
│ │ │ └── index.ts
│ │ ├── package.json
│ │ └── tsconfig.json
│ └── pkgB
│ ├── src
│ │ └── index.ts
| ├── package.json
│ └── tsconfig.json
├── pnpm-workspace.yaml
├── package.json
└── tsconfig.root.json
├── README.md
pnpm-workspace.yaml指定工作空间的目录
packages:
- 'packages/*'
在项目根目录下的 package.json 中配置启动脚本
# @motorepo/pkgA 是pkgA包package.json中name
# @motorepo/pkgB 是pkgB包package.json中name
"scripts": {
"dev:a": "pnpm -r --filter @motorepo/pkgA run dev",
"build:b": "pnpm -r --filter @motorepo/pkgB run dev"
},