2015-11-14 57 views
1

我正在通過MEAN堆棧開發PDF。每次創建節點應用程序時安裝軟件包

每當我需要創建一個新的API時,他們會要求在packages.json文件中添加所需的包並運行npm install

例子:

{ 
    "name": "node-api", 
    "main": "server.js", 
    "dependencies": { 
    "morgan": "~1.5.0", 
    "express": "~4.10.3", 
    "body-parser": "~1.9.3", 
    "mongoose": "~3.8.19", 
    "bcrypt-nodejs": "0.0.3" 
    } 
} 

然後做終端:

npm install 

所以,如果我創造新的API,然後再說API2我需要做同樣的,所有的包都爲node_modules再次下載:

我的問題是:我們不能在本地下載和存儲這些軟件包,只要我們需要它們就可以使用,就像我們在Python或C++中一樣,而不是每次下載aga在。

+0

在第一個'npm install'和每個後續'npm install'(當您更新版本或依賴關係時)之後,您可以簡單地將'node_modules'文件夾複製到您的磁盤存儲器中。 – activatedgeek

+0

然後如果我添加新的軟件包並執行npm install,它是否會選擇性下載軟件包,但不可用? – smartsn123

回答

0

您可以使用g標誌安裝全局包。例如:npm install -g <package_name>
如果您想要安裝具有特定版本的全局包:npm install -g <package_name>@<version>

但是你必須明白,每個應用程序都需要一個特定版本的軟件包,這就是爲什麼能夠安裝合適版本的兼容版本來運行它是非常有用的。在Python中,我們使用例如virtualenv。

例如,應用程序A可能有3個共同的應用程序B包,但這些包的版本並不相同,因爲A應用程序的包版本不能兼容運行B應用程序。那爲什麼,你必須安裝每個應用程序的所有軟件包npm install

+0

這是一個糟糕的壞習慣! – activatedgeek

+2

這就是我所說的。請閱讀我的anwser ...我只是解釋如何安裝一個globaly包,以及爲什麼重要的是不要那樣做...... –

0

每個應用程序都有一個列出所有依賴關係的「packages.json」文件,所以我認爲smartsn123是正確的,最好有一個全局存儲庫,而不是爲每個應用程序創建一個本地存儲庫,並使用「packages.json」全球回購。 當您注意到某些依賴項中有一個node_modules文件夾時,它變得更糟。

相關問題