2013-01-22 340 views

回答

207

可以使用--prefix選項:

mkdir -p ./install/here/node_modules 
npm install --prefix ./install/here <package> 

包(S)將被安裝在./install/here/node_modules。需要mkdir,因爲npm可能會選擇層次結構中較高層的已存在的node_modules目錄。 (見npm documentation on folders

+43

看起來你必須在這個替代目錄中包含package.json文件,如果你使用--prefix選項。有沒有辦法在當前目錄中安裝package.json並安裝到備用目錄? – 2015-06-04 19:30:23

+2

@fractal查看我對此的回答 – HerrSerker

+6

@coundy有沒有一種方法可以指定'npm install'的路徑(沒有包名稱)?我直接找到了這個,但是然後npm在'{prefix}'中查找'package.json'。我的目標是能夠將'packages.json'放在項目根目錄下,同時將所有軟件包安裝在'{project root}/{project webroot}'中。 – automatix

25

documentation它說: 與全局選項使用前綴選項在一起:

前綴配置默認到安裝點的位置。在大多數系統上,這是/usr/local。在windows上,這是node.exe二進制文件的確切位置 。在Unix系統上,它是上一級的,因爲節點通常安裝在{前綴}/bin /節點而不是 {前綴} /node.exe

當設置了全球標誌時,npm將這些東西安裝到此前綴中。 未設置時,它使用當前軟件包的根目錄或當前工作目錄(如果不在軟件包中)。

(他們重點)

所以在你的根目錄下,你可以用

npm install --prefix <path/to/prefix_folder> -g 

安裝,它會安裝node_modules文件夾複製到該文件夾​​

<path/to/prefix_folder>/lib/node_modules 
+1

你不能在全球範圍內安裝'需要'軟件包,你能嗎? – Pavlo

+2

@Pavlo這有幫助嗎? http://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package – HerrSerker

+1

你應該將其添加到答案。 – Pavlo

13

由於npm版本3.8.6,您可以使用

npm install --prefix ./install/here <package> 

安裝在指定的目錄下。即使node_modules目錄已存在於較高層級中,NPM也會自動創建node_modules文件夾。 您也可以在當前目錄中package.json,然後使用--prefix選項指定的目錄中安裝它:

npm install --prefix ./install/here 

注:NPM榮譽,你已經通過--prefix選項指定的路徑。按照npm documentation on folders解決,只有當npm install在沒有--prefix選項的情況下使用時。

+1

這似乎並不奏效,我總是得到''無法安裝<當前目錄>:缺少包名' –

+1

@TiborBlenessy假設您正在討論第二個安裝聲明。請確保你的當前目錄中有一個有效的package.json文件。如果它仍然不起作用,請讓我知道你的npm版本。這些步驟用於使用指定的npm版本。而且,如果他們不再這樣做,我會喜歡深入探索並找到根本原因,也許我會想出一個替代方案。 –