npm 私有包依賴 本地開發(fā)調(diào)試頻繁更新解決方案

前言

最近遇到一個問題,我們公司自己內(nèi)部開發(fā)了多個npm私有包,包之間有依賴關(guān)系,例如A依賴B。當(dāng)B發(fā)現(xiàn)有BUG需要修復(fù)的時候,災(zāi)難來了。
我們需要先在B中修復(fù)問題,然后publish。接著在更新A的package.json中B的版本號,然后要下載B的最新版。而且在開發(fā)初始,這種情況非常頻繁,而且版本號是蹭蹭往上漲。簡直要瘋掉~~~

分析需求

  • (1)我希望B包publish之后,A包中B會自動更新為最新版本。
  • (2)我希望有一個內(nèi)部開發(fā)的版本(alpha),他和主版本(stable)可以并行存在。并且開發(fā)的版本經(jīng)過測試驗(yàn)收完成之后,我們可以切換最新的alpha為stable

解決問題

  • 問題1的解決辦法
    baidu,google之后。發(fā)現(xiàn)有一個叫npm link的命令。他可以創(chuàng)建一個軟鏈接來解決這個問題。舉個栗子:
// 我們有一個名為base的package,先將路徑切換到base的目錄下。
cd base

// 執(zhí)行npm link之后,會將base復(fù)制到全局模塊中(就像執(zhí)行了npm i base -g一樣)
npm link

// 我們有另外一個名為act的package,將路徑切換到act的目錄下。
cd act 

// 通過npm link base命令,act依賴的base包會形成一個鏈接指向全局模塊中的的base
npm link base

之后B中的代碼有變更,publish之后,A會自動更新B為最新版本。他們之間的指向關(guān)系為A->global->B。問題1解決完畢。

  • 問題2的解決辦法
    baidu,google之后,發(fā)現(xiàn)npm有兩個命令。version和tag,兩個組合使用可以解決第二個問題。舉個栗子:
// (1)重點(diǎn):此處注意。必須先刪除package-lock.json文件
rm -f package-lock.json

// (2)發(fā)現(xiàn)B有個BUG,需要解決,解決完畢,并且提交git之后。執(zhí)行如下命令,會創(chuàng)建一個n.n.n-n的version(例如0.1.5-5)
npm version prerelease

// (3)通過tag命令,我們可以創(chuàng)建一個和latest并行的測試版本,兩者可以互相獨(dú)立。
npm publish --tag alpha

// 簡單操作方法:可以在package.json中創(chuàng)建npm命令,將修改的代碼提交到git之后,執(zhí)行執(zhí)行此npm script就可以了。
"scripts": {
    "beta": "rm -f package-lock.json && npm version prerelease && npm publish --tag beta"
}

問題2順利解決。測試驗(yàn)收完畢,要上線的時候。我們將leatest的version改變下就行了。如下:

npm dist-tag add base@0.1.4 lastest 

總結(jié)

將問題1和問題2的解決方案組合起來,就可以解決我遇到的問題了。完美~

引用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者:TAT.云中飛揚(yáng)轉(zhuǎn)載自AlloyTeam:http://www.alloyteam.com/2016/03/...
    IT程序獅閱讀 6,666評論 0 18
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評論 25 708
  • npm是什么 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發(fā)工具...
    build1024閱讀 8,156評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • 脫發(fā)、禿頂、白發(fā) 讓你垂頭喪氣,自信全無! 讓你遮遮掩掩,無法直面人生! 讓你職場不順,事業(yè)受阻! 光禿禿的腦殼!...
    A小珍妮閱讀 358評論 0 0

友情鏈接更多精彩內(nèi)容