workspace 是包管理工具对于 monorepo 的支持设计。
基础使用是在 package.json 中声明 workspaces(pnpm 是个例外,具体方式见后面章节):
json
{
"workspaces": [
"packages/*"
]
}在 package.json 中定义了 workspaces 后,利用包管理工具(npm、yarn、pnpm)初始化项目,会自动安装 workspaces 相关依赖。
上述 workspaces 安装机制,会在 node_modules 下生成 workspaces 对应包的软连接 symlink(即符号链接,在修改源码时会直接影响到依赖包)。
TIP
用 yarn link 同样也能生成软连接。
假设有 project-A 和 link-module,那么首先在 link-module 下执行 yarn link。执行之后,会将 link-module 首先链接到全局 node_modules 下。
然后在 project-A 下执行 yarn link link-module,会在当前工程的 node_modules 下生成依赖包符号链接。
上述步骤完成后,就可以在 project-A 下引入 link-module。
需要取消软连接的话,可以使用 yarn unlink。