基于 git submodule + lerna 的多项目工程

目录

第二篇:使用 git submodule 拆分仓库(书写中)

本文概要

额外知识点

git submodule

git submodule
官方大文档

demo

https://github.com/ignous/project-demo

前言:为什么还要git submodule

上一章节中已经讲了使用lerna管理依赖,但是为什么还要git submodule呢。

我们可以这么设想,随着项目的不断扩张,功能越来越多,需要的客户端也越来越多,需要支持web,h5,小程序等各个平台。也出现了各个不同业务,除了主业务外可能还会有数据统计、运营活动管理、订单支付等多个。单个仓库就越来越臃肿了,迫切的需要拆分子项目来分开管理

使用 git submodule + lerna的建议目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root/
├── packages/ // 这里是使用到的 github/gitlab 上的公共模块
│ ├── account/ // 帐号模块
│ │ └── ... // 仓库代码
│ └── 其他模块/ // 其他模块
│ └── package.json
├── client/ // 这里放当前客户端,因为拆分了,一般一个仓库对应一个项目
│ ├── src/
│ │ └── ... // 这里就和平时的一样了
│ ├── babel.config.js // babel
│ ├── package.json
│ └── webpack.config.js // webpack 配置
├── .gitmodules // git submodule配置(本文重点)
├── .eslintrc.js // 所有项目统一的eslint配置,不用担心每个项目规则不一样了~
├── lerna.json // lerna 配置
└── package.json //

以后将会有多个仓库,每个仓库中的client对应当前项目的业务代码,packages是使用到的功能模块(依旧不需要npm