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
。