多項目並行開發之公共資源處理:Git Sbutree拆分子倉庫

在項目開發過程當中,如何多人維護一個被多個項目使用的公共組件庫的管理方案

簡介

最近由於公司業務需求,要對項目組件庫做爲一個獨立的項目庫來維護,可是又不影響現有目錄結構而且要易於平常多項目共同開發使用。
例如目前有A、B、C、D四個項目,每一個項目都有一個組件庫,可是每一個組件庫的組件實際上是有至關一部分是重複的,所以想將組件提取出來做爲一個單獨的項目庫來維護,
避免每次更新組件都要到四個項目都改一遍。
在需求分析過程當中考慮了兩種方案:一種是Npm 私庫,一種是Git Subtree。下面會具體講做用、優缺點及使用方法。
在需求的實現過程當中以爲此需求很是有廣泛意義,所以將本次實現歷程整理分項出來,供你們最爲相關業務需求時的小小參考。html

git Subtree用來拆分巨石應用倉庫也十分有效。
PS:本人github,歡迎交友

工程環境

+ Node
+ Vue項目(不限制必須是vue)
+ 使用Git管理項目(必要) 【 git Subtree 】
+ Verdaccio & pm2 【 npm私庫 】

需求分析

  1. 多個項目共同開發,可是依賴某些相同的組件
  2. 在不一樣項目修改組件要自動同步到全部項目
  3. 要易用安全,而且儘量的節省開發過程當中的時間,不能增長學習成本或時間成本

方案一:Npm私庫

在平常開發中咱們都install過無數個輪子,很好的解決了平常項目工做中可能會用到不少通用性的代碼,好比,框架類、工具類以及公用的業務邏輯代碼等等,若是npm庫裏有解決方案,咱們就能夠很開森的用輪子啦,可是npm的性質是開源的,總有一些業務是私密程度比較高的或者公司壓根就不容許將代碼開源的,這時候就須要在公司服務器架設本身的npm私有倉庫了。
相關知識:製做併發佈一個npm插件 做者:Y2shvue

優勢

  1. 和平常npm install操做相同,簡單易用
  2. 一次架設成本,後續直接使用便可,人員更換及人員水平變更沒有影響
  3. 組件修改發佈後,全部項目都能使用,而且能夠指定版本

缺點

  1. 平常開發不便,須要將組件更新發布任何項目更新組件版本後才能看到效果

Npm私庫使用教程 做者:Better

方案二:Git Subtree

git subtree是git的一條子命令,咱們不用關注它具體釋義是什麼(參考百科),咱們只討論如何使用它來知足咱們的需求。
Git Subtree能夠將咱們如今的工程目錄中,選擇咱們指定的文件夾將其變成子倉庫,這樣這個目錄就能夠做爲一個獨立倉庫推送到其它項目倉庫中,來知足多個項目使用同一個組件庫的目的。而且它關聯到其餘項目指定目錄後,每一個項目下的組件目錄更新推送,其餘項目都會收到更新。git

優勢

  1. 跟git的多人協做同理,關聯後一個項目更新全部項目均可以收到推送
  2. 無需更改現有工程目錄
  3. 組件更新所見即所得,調試效果拉滿

缺點

  1. 多人協做,多項目關聯,隨意性較高,可能改本項目無心間影響了全部項目,所以使用必須給全部成員作培訓說明
  2. 必須是使用git管理的項目
  3. 須要必定git相關知識,而且命令較長相對複雜

使用方式說明

demo
|---- app1
      |--- components
|---- app2
      |--- components

當倉庫中衍生出多個項目時,那麼多個項目一定有一部分組件庫、樣式庫、工具類等是須要重複使用的。這個時候想把這部分抽離出來供多個項目共通使用時改怎麼作?
百度大可能是拆分倉庫下子目錄爲子倉庫,而且喜歡起同名形成迷惑性,這裏詳細講解一會兒組件庫的拆分方式。
步驟以下:github

  1. 拆分倉庫npm

    進入倉庫根目錄
      git subtree split -P ./app1/components -b public-lib
  2. 建立新倉庫文件夾,並初始化git編程

    mkdir public-lib
      cd public-lib
      git init
  3. 拉取倉庫代碼到新的組件倉庫!segmentfault

    git pull ../../demo public-lib
      
      "../../demo" 是原項倉庫目錄,由於拆分時已經指定了拆分路徑,這裏注意要寫的是原倉庫.git文件存在的位置
      "public-lib" 是新倉庫名字
      
      注意:這麼寫是爲了直觀說明這句話都時什麼意思,即從 原倉庫 拉取到 新倉庫

Git Subtree說明 做者:好好編程

Git Subtree操做教程 做者:庫機戴娃

最終方案

考慮到上述兩種方案的優缺點,最終決定在開發階段使用Git Subtree來管理維護組件庫,上線後考慮使用Npm私庫管理。做者在嘗試了兩種方案後選擇了以上三個教程做爲案例分享,描述都比較詳細或者直接明瞭(若有侵權,請聯繫做者刪除)。安全

相關文章
相關標籤/搜索