處理公共模塊 對比npm包和git submodule

背景

咱們開發項目的時候,會常常碰到可服用模塊,好比各類utils包,登陸分享之類的共有模塊,並不想寫在項目自己,而是抽出來能夠爲多個項目所複用。
如今咱們項目中用了倆種模式git

  1. 把公共模塊打包成npm包,使用時候利用npm install安裝
  2. 公共組件單獨寫成一個項目,使用時用git submodule引入到主項目中

利用git submodule實現

子模塊容許你將一個 Git 倉庫做爲另外一個 Git 倉庫的子目錄。 它能讓你將另外一個倉庫克隆到本身的項目中,同時還保持提交的獨立。github

添加git子模塊

git 經過在 git submodule add 命令後面加上想要跟蹤的項目 URL 來添加新的子模塊。npm

$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.

克隆含有子模塊的項目

接下來咱們將會克隆一個含有子模塊的項目。 當你在克隆這樣的項目時,默認會包含該子模塊目錄,但其中尚未任何文件:code

$ git clone https://github.com/chaconinc/MainProject
$ cd DbConnector/
$ ls
$

其中有 DbConnector 目錄,不過是空的。 你必須運行兩個命令:git submodule init 用來初始化本地配置文件,而 git submodule update 則從該項目中抓取全部數據並檢出父項目中列出的合適的提交。開發

$ git submodule init
Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
$ git submodule update

不過還有更簡單一點的方式。 若是給 git clone 命令傳遞 --recursive 選項,它就會自動初始化並更新倉庫中的每個子模塊。rem

$ git clone --recursive https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...

在包含子模塊的項目上工做get

https://git-scm.com/book/zh/v...it

相關文章
相關標籤/搜索