2014-04-06 44 views
2

即使我建立的package.json和運行NodeJS - 爲什麼npm不共享依賴關係?

NPM安裝./

NPM安裝依賴的依賴,即使這是完全平等的。

例) ExpressJs 4.0.0-RC4 node_modules /餅乾餅乾===解析器node_modules /餅乾

當負載的NodeJS文件,它的每個文件緩存。 因此,如果npm不共享依賴關係,則可以多次分析相同的模塊並使用更多的內存。

+3

看看['npm dedupe'](https://www.npmjs.org/doc/cli/npm-dedupe.html)是否有助於您的項目,但我理解您的觀點。你可以在他們的[常見問題](https://www.npmjs.org/doc/misc/npm-faq.html)和他們首選的[安裝方法](https:// https://www.npmjs.org/doc/misc/npm-faq.html)上閱讀他們的一些基本原理/ www.npmjs.org/doc/files/npm-folders.html)。 –

回答

4

原因是項目維護和一致(和簡單)的使用。現在每個包都完全獨立於其他包,並且每個包都遵守其自己的package.json文件。

如果一個包更新其依賴項,NPM只需檢查該包。如果它共享一個引用,它不僅需要爲已更改的版本更新新版本,而且還需要切換並重新引用其他包的舊版本。或者,如果刪除了共享參考文獻的包,則NPM需要重新檢查所有其他包以查看其他人是否仍在使用它。和其他奇怪的用例共享。

現在的存儲價格便宜,大多數NPM模塊的文件大小都很小。易於維護和一致性更新比保存幾MB文件更有價值。