workspace 是包管理工具对于 monorepo 的支持设计。

基础使用是在 package.json 中声明 workspacespnpm 是个例外,具体方式见后面章节):

{
  "workspaces": [
    "packages/*"
  ]
}
1
2
3
4
5

package.json 中定义了 workspaces 后,利用包管理工具(npmyarnpnpm)初始化项目,会自动安装 workspaces 相关依赖

上述 workspaces 安装机制,会在 node_modules 下生成 workspaces 对应包的软连接 symlink(即符号链接,在修改源码时会直接影响到依赖包)。

TIP

yarn link 同样也能生成软连接。

假设有 project-Alink-module,那么首先在 link-module 下执行 yarn link执行之后,会将 link-module 首先链接到全局 node_modules

然后在 project-A 下执行 yarn link link-module会在当前工程的 node_modules 下生成依赖包符号链接

上述步骤完成后,就可以在 project-A 下引入 link-module

需要取消软连接的话,可以使用 yarn unlink