介绍

前端不同应用存在公共的脚本样式代码,为了避免重复开发,将公共的代码抽取出来,形成一个公共的 git 子模块,方便调用和维护。

软件架构

本仓库代码将作为 git 子模块,被引用到其他仓库中,不可单独运行。

使用说明

1. 添加子模块
git submodule add https://github.com/*.git src/utils/common

git submodule add [仓库 url] [项目中的路径(执行后会用最后一级名称创建文件夹)],如图:

项目中的子模块

注意:子模块的路径不能是已存在的文件夹,否则会报错。

2. 更新子模块

可以在单独的项目中修改,也可以在项目中修改,修改后需要提交到远程仓库,其他项目才能更新到最新的代码。

git submodule init
git submodule update
3. 删除子模块
  1. 删除子模块文件夹
git rm -r src/utils/common
  1. 删除 .gitmodules 文件中相关子模块的信息,类似于:
[submodule "src/utils/common"]
	path = src/utils/common
	url = https://gitee.com/*.git
  1. 删除 .git/config 中相关子模块信息,类似于:
[submodule "src/utils/common"]
	url = https://gitee.com/*.git
	active = true
  1. 删除 .git 文件夹中的相关子模块文件
$ rm -rf .git\modules\src\utils\common

Jenkins

在 Jenkins 中使用子模块,需要配置两个地方:

1. 需要在构建前执行以下命令
git submodule update --init --recursive
2. 配置凭证,用于拉取子模块代码
  1. 选择配置-源码管理

凭证配置

  1. 新增“高级子模块行为”

凭证配置

  1. 勾选“使用默认的远程父仓库凭证”

凭证配置

注意事项

  1. 由于部分项目没有使用 TypeScript,考虑到兼容性问题,本项目使用 JavaScript 编写。如果在 TypeScript 项目中引用,需要在 shims-vue.d.ts 中声明模块。
// 替换为对应的路径
declare module "@/utils/common/*";

参考资料

Git: submodule 子模块简明教程

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐