一、场景
组件库、api库、多项目的公共部分提取,为微前端做基础。
二、git modules是什么
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。
子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
三、理解git submoudle
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。
Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
四、操作
git submodule add http://XXXcommon.git(仓库地址)
五、 .gitmoudles配置
首应当注意到新的 .gitmodules
文件。 该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射。
如果有多个子模块,该文件中就会有多条记录。 要重点注意的是,该文件也像 .gitignore
文件一样受到(通过)版本控制。 它会和该项目的其他部分一同被拉取推送。 这就是克隆该项目的人知道去哪获得子模块的原因。
六、vue-config.js配置alias,方便引用:
build: { publicPath: process.env.PUBLIC_PATH, extractCSS: isProd, styleResources: { less: '../m-front-common/pc/assets/m-var.less', }, extend(config, { isDev }) { const alias = (config.resolve.alias = config.resolve.alias || {}) alias['@components'] = path.join( __dirname, 'm-front-common/pc/components' ) alias['@api'] = path.join(__dirname, 'm-front-common/pc/api') alias['@services'] = path.join(__dirname, 'm-front-common/pc/services') alias['@const'] = path.join(__dirname, 'm-front-common/pc/const') alias['@mixins'] = path.join(__dirname, 'm-front-common/pc/mixins') alias['@assets'] = path.join(__dirname, 'm-front-common/pc/assets') alias['@pc'] = path.join(__dirname, 'm-front-common/pc') }, },
七、使用:
八、提交代码时需要分别提交,从vscode即可看出来:
九、注意:
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update --init --recursive
十、 参考文献
git中submodule子模块的添加、使用和删除_guotianqing的博客-CSDN博客
微前端实现共享方式之--git submodule 使用说明 - 简书
.gitmodules详解(Git子模块配置)_杨小扬的专栏-CSDN博客
gitmodules - [ Git中文开发手册 ] - 在线原生手册 - php中文网
git submodule的使用(.gitmodules文件子模块加载)_大唐锦绣的博客-CSDN博客_gitmodules
git submodule: already exists in the index_工程人在路上的博客-CSDN博客_git submodule 已经存在于索引中
十一、欢迎留言指正,留言必回