2

我已經安裝了大部分的NPM與-g如何創建新的應用程序項目而無需一次又一次下載和安裝npm模塊?

但是全球模塊,我看到,每當我創建一個新的應用項目(例如:角項目)使用約曼,我看到NPM模塊再次獲得下載和安裝在本地node_modules文件夾中。

我認爲這是非常浪費的,相同的模塊被下載並複製每個新項目。每個新項目的大小大約爲160MB。

有沒有辦法在全局npm node_modules文件夾下不能在本地下載新項目中的模塊?無論如何,要自動創建從本地node_modules文件夾到全局安裝的npm模塊的符號鏈接?

這可能嗎?如何設置?

+0

哈哈。同樣在這裏....雖然我很有經驗,但是這個npm(和Java中的maven)真的很痛苦,所花的時間不僅僅是開發應用程序本身 – 2015-03-04 23:14:12

回答

0

有解決方法,但是這是有意避免等效於DLL地獄或特別是庫版本不匹配崩潰。除了160Mb是這個奢侈品的最低價格。離散功能捆綁更好作爲一個良好的單位出貨 - 相信我

1

這實際上是設計。從Node.js blog

一般來說,經驗法則是:

1.如果你安裝你想要在你的程序中使用,使用需要的東西(「不管」),然後安裝它在本地,在您的項目的根源。

2.如果你正在安裝你想在你的shell中使用的東西,在命令行或其他東西上,請全局安裝它,這樣它的二進制文件就會放到你的PATH環境變量中。

,重要的是你要安裝項目依賴本地,因爲你不能保證什麼是全球的裝機量您的機器上可能是可用的部署機器上。誠然,您可以管理兩臺機器,或者他們可能實際上是同一臺機器,但這種情況從未得到保證。

此外,您有一些項目依賴特定版本的npm,您可能已在全球範圍內安裝了更新,這打破了需要較舊版本的項目,這並不罕見。隔離是保持項目功能的關鍵。

如果您確實只需要維護一個副本,則可以使用符號鏈接。 npm link globalnpm

全球安裝它,然後NPM鏈接咖啡腳本或NPM鏈接快遞(如果你是一個支持符號鏈接的平臺上。)然後你只需要更新全局副本更新所有的符號鏈接以及。

請注意,符號鏈接選項實際上只與手動初始化項目相關;像Yeoman這樣的發電機將始終使用本地,因爲他們遵循穀物。

+1

還要注意,npm **不會每次下載新的模塊副本安裝。它維護一個[本地緩存](https://www.npmjs.org/doc/cli/npm-cache.html)並從那裏複製文件。 (然而,它在安裝過程中會ping通註冊表以檢查更新的版本,這是一個非常小的請求。) – josh3736 2014-12-02 23:48:01

相關問題