2013-04-09 47 views
1

我今天正在安裝sails.js,看看它如何一遍又一遍地安裝相同的軟件包(依賴於我的應用程序依賴),那麼爲什麼npm不使用像系統一樣的寶石?在全球範圍內保存這些庫和他的不同版本,如果你在服務器上有多個項目並且不會一遍又一遍地安裝相同的庫,那麼共享相同的lib將會很酷。(我知道這是npm鏈接的解決方法,但似乎是不被認爲是最佳實踐)。npm嵌套的依賴關係,爲什麼不模仿寶石?

回答

2

我可以爲這種功能選擇提供的最佳猜測是產品可以使用的不同版本的庫。也許您使用Connect 2.8,但您可能正在使用與您的Connect版本不兼容的Connect 1.5。

+1

準確!我認爲這是艾薩克這樣做的主要原因。去年我一直在使用npm進行比賽和爲我們的所有項目進行比賽,這真是太棒了 - 我堅信他做出了正確的選擇。 – mikermcneil 2013-04-13 16:31:51

+2

我完全沒有抱怨,這是一個非常可靠的工具。 – 2013-04-13 16:33:33

3

依賴管理是困難的。 npm對於不共享軟件包以及堅持每個軟件包都有自己的node_modules文件夾非常有強烈的意見。這樣可以避免很多潛在的隱患。這些軟件包非常小,使用多一點的磁盤空間比試圖追逐與依賴版本相關的問題要好得多。

還有趣的是,請注意何時在git中包含node_modules。 http://www.futurealoof.com/posts/nodemodules-in-git.html