最近由於公司業務需求,要對項目組件庫做爲一個獨立的項目庫來維護,可是又不影響現有目錄結構而且要易於平常多項目共同開發使用。
例如目前有A、B、C、D四個項目,每一個項目都有一個組件庫,可是每一個組件庫的組件實際上是有至關一部分是重複的,所以想將組件提取出來做爲一個單獨的項目庫來維護,
避免每次更新組件都要到四個項目都改一遍。
在需求分析過程當中考慮了兩種方案:一種是Npm 私庫
,一種是Git Subtree
。下面會具體講做用、優缺點及使用方法。
在需求的實現過程當中以爲此需求很是有廣泛意義,所以將本次實現歷程整理分項出來,供你們最爲相關業務需求時的小小參考。html
git Subtree用來拆分巨石應用倉庫也十分有效。
+ Node + Vue項目(不限制必須是vue) + 使用Git管理項目(必要) 【 git Subtree 】 + Verdaccio & pm2 【 npm私庫 】
在平常開發中咱們都install過無數個輪子,很好的解決了平常項目工做中可能會用到不少通用性的代碼,好比,框架類、工具類以及公用的業務邏輯代碼等等,若是npm庫裏有解決方案,咱們就能夠很開森的用輪子啦,可是npm的性質是開源的,總有一些業務是私密程度比較高的或者公司壓根就不容許將代碼開源的,這時候就須要在公司服務器架設本身的npm私有倉庫了。
相關知識:製做併發佈一個npm插件 做者:Y2shvue
git subtree是git的一條子命令,咱們不用關注它具體釋義是什麼(參考百科),咱們只討論如何使用它來知足咱們的需求。
Git Subtree能夠將咱們如今的工程目錄中,選擇咱們指定的文件夾將其變成子倉庫,這樣這個目錄就能夠做爲一個獨立倉庫推送到其它項目倉庫中,來知足多個項目使用同一個組件庫的目的。而且它關聯到其餘項目指定目錄後,每一個項目下的組件目錄更新推送,其餘項目都會收到更新。git
demo |---- app1 |--- components |---- app2 |--- components
當倉庫中衍生出多個項目時,那麼多個項目一定有一部分組件庫、樣式庫、工具類等是須要重複使用的。這個時候想把這部分抽離出來供多個項目共通使用時改怎麼作?
百度大可能是拆分倉庫下子目錄爲子倉庫,而且喜歡起同名形成迷惑性,這裏詳細講解一會兒組件庫的拆分方式。
步驟以下:github
拆分倉庫npm
進入倉庫根目錄 git subtree split -P ./app1/components -b public-lib
建立新倉庫文件夾,並初始化git編程
mkdir public-lib cd public-lib git init
拉取倉庫代碼到新的組件倉庫!segmentfault
git pull ../../demo public-lib "../../demo" 是原項倉庫目錄,由於拆分時已經指定了拆分路徑,這裏注意要寫的是原倉庫.git文件存在的位置 "public-lib" 是新倉庫名字 注意:這麼寫是爲了直觀說明這句話都時什麼意思,即從 原倉庫 拉取到 新倉庫
考慮到上述兩種方案的優缺點,最終決定在開發階段使用Git Subtree
來管理維護組件庫,上線後考慮使用Npm私庫
管理。做者在嘗試了兩種方案後選擇了以上三個教程做爲案例分享,描述都比較詳細或者直接明瞭(若有侵權,請聯繫做者刪除)。安全