monorepo实践:git submodule +npm workspace

1,291 阅读1分钟

当项目变得庞大时,根据业务可以拆分为多个子项目,分别开发维护,有利于多团队协作。

然而,当子项目变多后,在项目间来换切换的成本也在变高,尤其是一个更新涉及多个子项目时。这时需要一种将子项目组合起来的方式。

git submodule:将多个子项目组合在一起。
npm workspace:将多个子项目统一管理构建。

1)在主项目中添加子项目:

git submodule [--quiet] add [<options>] [--] <repository> [<path>]
#指定分支
git submodule -b feature/XXX <repo-url>  packageA

2)   在package.json中添加子项目

{  
 "name": "my-project",  
 "workspaces": [ "packageA"]
}

3)    在主项目根目录安装依赖,主项目会主动安装子项目的依赖,避免重复安装子项目依赖

npm install 

  4)构建 

npm run build -w packageA

-w 指定构建的子项目后,会在 packageA 下执行 npm run build

参考文档:npm workspacegit submodule