Yarn Workspaces 工作区是一种新的包管理方法,从 1.0 开始默认可用,它允许用户已工作区的方式只需要运行一次 yarn install 就可以安装所有的包。

Yarn Workspaces 是 Yarn 提供的 Monorepository 的管理机制,这使得我们可以在同一个代码库中管理多个项目,并且允许这些项目之间相互依赖,交叉引用。

为什么要有工作区的概念

如何使用

根目录下的 package.json

{
  "private": true,
  "workspaces": ["workspace-a", "workspace-b"]
}

注意 private: true 是必须的,工作区不应该被发布。

创建此文件后,创建两个名为 workspace-a 和 workspace-b 的新子文件夹。在每个文件夹中,可以创建单独的 package.json 文件。

比如工作区 a 中的 package.json

{
  "name": "workspace-a",
  "version": "1.0.0",

  "dependencies": {
    "cross-env": "5.0.5"
  }
}

以及工作区 b 中的

{
  "name": "workspace-b",
  "version": "1.0.0",

  "dependencies": {
    "cross-env": "5.0.5",
    "workspace-a": "1.0.0"
  }
}

最后运行 yarn install ,这样 workspace-b 中对 workspace-a 的依赖会直接使用本地的代码。

使用如下的命令可以获取整个 workspaces 的目录结构

yarn workspaces info [--json]

常用命令

在指定的 workspace 下执行命令

yarn workspaces <workspace_name> <command>

在每一个工作区中运行命令

yarn workspaces run <command>

在 yarn 2.4.3 中引入新的命令。

首先需要安装 workspace-tools 插件

yarn plugin import workspace-tools

安装单个工作区依赖

yarn workspaces focus