簡體   English   中英

如何使用NPM處理Node.js中的本地包依賴關系

[英]How to deal with local package dependencies in nodejs with npm

我們應該如何處理依賴於其他本地包的本地包?

為簡單起見,請說我們有以下軟件包

  • api快速申請
  • people -與人打交道的套餐
  • data-access -處理數據訪問的軟件包

然后依賴項是

  • api取決於people
  • people依賴data-access

當前,我們將這些依賴項設置為文件依賴項。

api package.json將有

"dependencies": {
  "people": "file:../people"
}

麻煩的是,當我們更新一個程序包並希望依賴它的其他程序包中的那些更改時,我們發現它是PITA。

我們想到的選項是:

  • npm install-但是如果進行更改,這將不會覆蓋以前安裝的軟件包,因此我們必須從node_modules目錄中刪除舊的軟件包,然后重新運行npm install ...如果軟件包依賴關系很深,這可能會很麻煩。

  • npm鏈接 -我們不願接受這個想法,因為它無法在版本控制中生存...現在考慮一下,也許我們有某種本地構建腳本可以為我們運行npm link命令...這它可以幸免於版本控制的方式。 那會是艱巨的工作嗎?

  • 咕unt咕 --我們還沒有深入研究這個問題,但是感覺像是一個很好的方向。 我們在這里進行了一些谷歌搜索: https//github.com/ahutchings/grunt-install-dependencies

那么,哪種選擇最適合我們的情況?
還有我們還沒有想到的其他選擇嗎?

PS。 我們是一家在節點中進行PoC的.NET商店,所以假設我們一無所知!

PPS。 如果您堅信我們的項目設置不正確,並且我們不應該使用較小的單個程序包,請在評論中告訴我,並提供指向該主題的閱讀鏈接。

因此,我同意使用“許多小包裝”通常是一個好主意。 如果尚未登錄,請查看12factor.net。

就是說,在具體回答您的問題時,我想最好的選擇是主要考慮如何維護它們。

如果“子組件”都只是應用程序的一部分(例如,數據訪問意味着),那么我會將它們保留在相同的文件夾結構中, 而不是將它們完全映射到package.json中,而只require它們您需要它們的地方。 在這種情況下,所有版本都一起發布,並且屬於同一git存儲庫。

如果您確實想要或需要將它們全部保存在單獨的git存儲庫中,則可以進行npm鏈接,但是老實說,我發現僅使用package.json中的URL語法更為有用:

dependencies: {
  "people" : "git://path.to.git:repo@version.number"
}

然后,當您想顯式更新其中一個依賴項時,只需更改package.json中的版本號,然后再次運行npm install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM