yarn workspace 构建 monorepo 项目

603 阅读1分钟

yarn workspace 构建 monorepo 项目

最近接手了一个 monorepo 项目, 是基于 lerna + yarn workspace 管理的, 通过这篇文章记录一下 yarn workspace 的常用命令, 没有接触过 yarn workspace 的可以通过这篇文章快速上手, 下篇文章介绍一下 lerna

1. 初始化一个 monorepo 项目

  1. 初始化
yarn init -y
  1. 指定哪些目录是 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
  ]
}
  1. 创建两个 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"
  }
}