通常情况下每个仓库管理一个包,当随着项目的扩大,每个项目有不同的系统组成时就需要一种把不同系统放在同一个仓库管理的需求,于是就演进出一种多包仓库管理的模式monorepo
yarn workspace
安装所有工作区依赖
yarn install
根工作区安装依赖,在monorepo模式中,根工作区一般只有开发依赖,如测试、开发服务等
yarn add -W -D <pkg_name>
所有工作区安装共同的依赖
yarn workspace add <pkg_name>
给指定工作区安装指定的依赖
yarn workspace <workspace_name> add <pkg_name>
类似的,删除依赖如下
yarn remove -W -D <pkg_name>
yarn workspace remove <pkg_name>
yarn workspace <workspace_name> remove <pkg_name>
运行指定工作区的脚本命令
yarn workspace <workspace_name> run <script_name>
package.json需要设置成如下
{ "private": true, // 根工作区一般只是用于开发,防止误发布 "workspaces": [ "packages/*" ], }
lerna
当需要发布包到npm而项目中的包相互依赖时,可以使用lerna