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

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

簡介

最近由於公司業務需求,要對項目組件庫做爲一個獨立的項目庫來維護,可是又不影響現有目錄結構而且要易於平常多項目共同開發使用。html

例如目前有A、B、C、D四個項目,每一個項目都有一個組件庫,可是每一個組件庫的組件實際上是有至關一部分是重複的,所以想將組件提取出來做爲一個單獨的項目庫來維護, 避免每次更新組件都要到四個項目都改一遍。vue

在需求分析過程當中考慮了兩種方案:一種是Npm 私庫,一種是Git Subtree。下面會具體講做用、優缺點及使用方法。 在需求的實現過程當中以爲此需求很是有廣泛意義,所以將本次實現歷程整理分項出來,供你們最爲相關業務需求時的小小參考。git

PS:本人github,歡迎交友

工程環境

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

需求分析

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

方案一:Npm私庫

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

優勢

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

缺點

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

Npm私庫使用教程 做者:Better

方案二:Git Subtree

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

優勢

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

缺點

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

Git Subtree說明 做者:好好編程

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

最終方案

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

git subtree split -P SwiftyCrypto -b SwiftyCrypto
複製代碼
  1. 首先應在項目根目錄執行此命令
  2. -P 後面爲原項目工程目錄路徑 -b爲要提取出來的位置路徑! 【做者在使用中是git subtree split -P ../weilan/src/components -b components
相關文章
相關標籤/搜索