yarn workspace 构建 monorepo 项目
最近接手了一个 monorepo 项目, 是基于 lerna + yarn workspace 管理的, 通过这篇文章记录一下 yarn workspace 的常用命令, 没有接触过 yarn workspace 的可以通过这篇文章快速上手, 下篇文章介绍一下 lerna
- Demo: github.com/wywppkd/mon…
1. 初始化一个 monorepo 项目
- 初始化
yarn init -y
- 指定哪些目录是 package
// package.json
{
"name": "yarn-workspace-starter",
"private":"true", // 避免 publish
"version": "1.0.0",
"license": "MIT",
"workspaces": [
"packages/*",// 指定 packages 目录下面的含 package.json 的文件夹为 package, 包名为 package.json 的 name
]
}
- 创建两个 packages
# 创建 package1
cd packages/package-a
yarn init -y
# 创建 package2
cd packages/package-b
yarn init -y
2. 常用命令
PS: 所有包的依赖都会安装在根目录 node_modules 中
yarn workspaces info # 展示所有包及其依赖
yarn add father-build -W # 根目录下安装依赖包
yarn workspace package-a add react@17 # 给指定包安装依赖
yarn workspace package-a add typescript --dev # 给指定包安装开发依赖
yarn workspaces run build # 执行每个子包的 script
yarn workspace package-a run build # 执行指定子包的 script
yarn # 安装所有依赖项
3. package-a 如何安装 package-b 依赖?
- 手动修改 package-a 的 pkg, 之后 package-a 中就可以引用 package-b 了
// package-a/package.json
{
// ...
"dependencies": {
"package-b": "1.0.0"
}
}