monorepo 实践
基于 pnpm workspace
1.新建仓库
目录下执行pnpm init
2.指定项目 node 版本和 pnpm 版本
为了减少因 node 或 pnpm 版本的差异而产生开发环境错误
在package.json
中增加engines
字段来限制版本
"engines": {
"node": ">=18.0",
"pnpm": ">=8.0"
}
3.防止根目录被当作包发布
package.json
下增加
{
"private": true
}
还可以防止业务模块被发布
主要就这两个用处
4.根目录下加入 pnpm-workspace.yaml
packages:
# all packages in direct subdirs of projects & learning-demo
- "projects/*"
- "learning-demo/*"
5.安装全局依赖包
全局依赖包安装 到根目录
常用的编译依赖包:rollup, execa, chalk, enquirer, fs-extra, minimist, npm-run-all, typescript
-w 表示在 workspace 的根目录下安装而不是当前目录 -D 表示 devDependencies
-Dw
pnpm add typescript -Dw
根目录下安装的依赖可以被子目录使用,一般都是开发用依赖
实际依赖由子目录自身管理并使用
删除依赖包可用
pnpm rm/remove
pnpm un/uninstall