2012-08-27 126 views
13

我可以使用npm在全局範圍內安裝多個版本的node模塊嗎?如何安裝同一個node.js模塊的多個版本?

+0

您可能可以使用Node的版本管理器來實現此目的:https://github.com/isaacs/nave – mikefrey

+0

您將如何處理這個問題?要求嗎?運行? – Vinz243

+0

@Freyday,https://github.com/isaacs/nave是有趣的知道,但在我看來,允許輕鬆交換(和組合?)'_nodejs_的多個版本,而不是Q所要求的:'node _module_'s',這裏'全局地使用npm'。那麼你錯過了Q的'模塊'部分?或者,如果沒有,請詳細說明您所看到的解決方案(我也希望爲此提供解決方案),理想情況下,作爲自己對此Q的答案(包括Wiki模式),如果其他人也可以通過編輯擴展答案。謝謝。 –

回答

1

目前不是。

(相關:您可以安裝節點與NVM(節點版本管理器使用)多個版本:https://github.com/creationix/nvm

+1

我認爲被問到的問題是關於安裝特定節點模塊的多個版本。 NVM的設計不是讓您安裝節點運行時的多個版本嗎? –

+0

很對,會更新答案 –

3

我不認爲這是一個(好)的方式來做到這一點。

但是,我猜你的用例是這樣的:你有兩個項目,需要不同版本的全局安裝包。

對於這樣的情況,我通常避免在全局安裝軟件包,並在本地安裝它們(不包括-g)。例如,如果你想安裝「摩卡」包某一項目的具體舊版本,你會(即我們不使用-g這裏需要注意。)做

cd ~/src/myproject 
npm install --save-dev [email protected]^1.0.0 

然後調用它像所以:

./node_modules/.bin/mocha 
1

雖然有可能,但如果不編寫自己的腳本來管理它,可能會很難維護。爲此,我假定您正在使用MacOS或Linux,並且已安裝節點/usr/local/bin

當您安裝全局模塊時,npm會將模塊及其依賴項放置在安裝節點的相同位置。通常/usr/local/lib/node_modules,然後在/usr/local/bin中爲該模塊創建一個符號鏈接。

例如,您要安裝nodemon,所以您運行npm install -g nodemon。 NPM安裝nodemon到/usr/local/lib/node_modules/nodemon並創建在/usr/local/bin/nodemon一個符號鏈接指向/usr/local/lib/node_modules/nodemon/bin/nodemon.js

讓我們假設你剛安裝[email protected],但由於某些原因,你還需要[email protected]

讓他們都安裝了一次,但沒有衝突,你也許能夠:

  1. 重命名目錄從nodemon nodemon的現有副本nodemon18
  2. 使用創建一個新的nodemon18符號鏈接ln -s /usr/local/bin/nodemon18 /usr/local/lib/node_modules/nodemon/bin/nodemon.js(不要忘記使其可執行文件)
  3. 安裝[email protected]通過npm install -g [email protected]

現在,從您的終端運行nodemon將運行[email protected]並運行nodemon18將運行[email protected]

YMMV。我真的不建議這樣做。

相關問題