rabowl
的git submodule
版本
子應(yīng)用的多git
庫(kù)也可以使用 git submodule
來(lái)進(jìn)行管理鹏氧。
添加子應(yīng)用
在主應(yīng)用目錄下執(zhí)行命令
git submodule add -b feature/xxx/xxxx --name app1 http://xxxxx.git(子應(yīng)用 git 地址) packages/app1
添加子應(yīng)用后在主應(yīng)用目錄下會(huì)自動(dòng)生成一個(gè) .gitmodules
文件挂洛。里面會(huì)自動(dòng)添加一條記錄
[submodule "app1"]
path = packages/app1
url = http://xxxxx.git
branch = feature/xxx/xxxx
子應(yīng)用提交
子應(yīng)用更新提交可以使用 git submodule
命令
git submodule foreach git add .
git submodule foreach git commit -m"xxxx"
git submodule foreach git pull
git submodule foreach git push origin
子應(yīng)用提交后斩郎,主應(yīng)用也需要git add .
和 git commit -m"xxxx"
以及 git push origin
將本地的子應(yīng)用commit id
同步到git
庫(kù)。這樣其他人clone
你的代碼后 可以通過(guò)以下命令進(jìn)行同步疮装。
git submodule init && git submodule update
rabowl ready
命令修改
之前rabowl ready
命令會(huì)自動(dòng)clone
子應(yīng)用并切換子應(yīng)用分支到指定分支≡道牛現(xiàn)在我們不需要這些功能了,會(huì)與git submodule
產(chǎn)生沖突廓推。但是我們還是需要 rabowl ready
來(lái)生成打包命令刷袍。因此我們需要修改rabowl
目錄下的 src/readyAllApp.ts
文件中的cloneAndCheckout
函數(shù)
// clone并checkout 子應(yīng)用
async function cloneAndCheckout(packagesPath: string, appList: any[]) {
await Promise.all(
appList.map(async (app) => {
// 首先清理對(duì)應(yīng)的app目錄
// await deleteFile(`/packages/${app.name}`);
// await deleteFile(`/packages/${app.gitName}`);
// // 從 git 庫(kù)將子應(yīng)用 clone 下來(lái)
// const cloneCode = await spawnSync('git', ['clone', app.git], {
// cwd: packagesPath,
// title: `git clone ${app.git}`,
// });
// if (!fs.existsSync(path.join(packagesPath, app.gitName))) {
// return cloneCode;
// }
// fs.renameSync(
// path.join(packagesPath, app.gitName),
// path.join(packagesPath, app.name),
// );
// const checkoutCode = await spawnSync('git', ['checkout', app.branch], {
// cwd: path.join(packagesPath, app.name),
// title: `git checkout ${app.branch}`,
// });
const checkoutCode = await spawnSync('git', ['branch'], {
cwd: path.join(packagesPath, app.name),
title: 'git branch',
});
return checkoutCode;
}),
);
}
修改完成后,在主應(yīng)用下執(zhí)行npm run build:cli
命令受啥。
另外做个,packages/config.json
文件中的配置目前只有active
屬性有用了,這里可以控制你 rabowl ready
生成的命令涉及的子應(yīng)用的范圍滚局。不需要打包的子應(yīng)用配置為false
就可以了居暖。