为什么要做monorepo
- 使用 monorepo 可以把原本一个项目的多个模块拆分成多个 packages,在 packages 之间相互引用
- packages单独发布成包
- 提高代码复用
- 通用一套打包或者编译操作的配置
搭建项目
初始化一个项目
pnpm init
pnpm-workspace.yaml
项目根目录下新建pnpm-workspace.yaml文件,定义工作空间的根目录,并能够使您从工作空间中包含 / 排除目录(!**/test/**) 。 默认情况下,包含所有子目录。
packages:
# all packages in subdirs of packages/ and components/
- 'packages/**'
安装依赖
以vue安装示例
全局依赖
pnpm install vue -w
局部依赖
- 进入子项目再安装
cd packages-name
pnpm install vue
- 直接安装
pnpm install vue -r --filter packages-name
项目间相互依赖
pnpm i packages-name1 -r --filter packages-name2
Changeset记录包的更改以及版本更新
1. 安装Changeset
pnpm add -Dw @changesets/cli
2. Changeset初始化
pnpm changeset init
3. 修改.changeset/config.json
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"baseBranch": "main", // 主分支,这个必须根据项目实际情况修改
"updateInternalDependencies": "patch",
"ignore": []
}
Changeset基本使用
1. 生成变更集
用来记录变更的内容
pnpm changeset
pnpm changeset add
2. 更新版本
pnpm changeset version
后面就是正常publish就可以正常发布了