2014-12-07 160 views
0

我正在使用來自NPM的另一個Node.js模塊B的Node.js模塊A. NPM上發佈了模塊B的新版本。我希望我的模塊A動態更新到模塊B的最新版本(模塊A總是取決於模塊B的最新版本)。此外,導入模塊的所有引用也應動態更新。動態安裝和加載Node.js模塊

我考慮使用NPM以編程方式安裝模塊過期的最新可用版本的模塊。是否有更好的解決方案來動態執行此操作

另外,如何強制更新通過require導入的模塊引用?

謝謝!

回答

2

至少你的問題的第一部分(模塊A總是使用最新版本的模塊B的),你總是可以指定一個major version wildcardpackage.json的依賴:

{ 
    "dependencies": { 
    "moduleB": "*" 
    } 
} 

這將然後允許你總是npm update到最新版本。 (但是,這可能會引入更改,從而打破模塊向後兼容性的功能,因爲npm使用Semantic Versioning。)

至於自動運行npm update,我必須問 - 爲什麼這是必需的?對你的模塊的用戶有什麼好處?至少應該對您的依賴進行「策劃」更新,以確保不會引入重大更改。如果您確實設置了一個用於更新依賴關係的全自動管道(例如,從npm update依賴關係到git tag新版本到npm version這些新版本到npm publish這些新版本),那麼您就會讓模塊的用戶離開如果這些步驟中的任何一個都不符合他們的代碼,那麼在寒冷的環境中。

(另外,如果這個自動的依賴更新從未傷了你的模塊,那麼什麼是你的模塊添加?它甚至做任何不平凡與依賴關係?)

它可能顯得累贅,但它的用一些技巧和意圖來更新你的依賴關係的更好的實踐。 See Semantic Versioning for more info.

+0

感謝@wisew的指針! 「npm update」需要自動發生的原因是1.模塊B也將由我發佈2.對模塊B的更新將是關鍵錯誤修復。這個想法是將生態系統中頻繁更新的部分(含修復部分)抽象爲一個單獨的模塊,其他所有模塊都會對它有「依賴性」。模塊B將在發佈給NPM之前進行策劃。我希望模塊A的消費者在沒有干預的情況下獲得關鍵修復的模塊B的策劃版本。 – CodeNinja 2014-12-08 15:38:55