使用 nvm 管理不同版本的 node 與 npm

原文 http://www.cnblogs.com/kaiye/p/4937191.html
主題 npm

使用 nvm 管理不同版本的 node 與 npm

補充說明:Mac 下通過 brew install nvm 所安裝的 nvm ,由於安裝路徑不同,無法正確啓用。建議使用 brew uninstall nvm 卸載掉之後,通過本文的方案重新安裝一次。


最近 NodeJS 的版本更新速度有點 Chrome 的跡象,4.0 版本沒發佈多久,又推出了 5.0 。升級 NodeJS 之後可以很方便的開始使用一些 ES6 的語言特性,但又會導致團隊內部的 mz-fis 框架無法更新,因爲它暫時只支持 v0.12 版本。於是團隊開始試用管理 node 版本的工具 nvm,試用後發現 Mac 下很好用,推薦大家儘快用起來。

nvm 是 Mac 下的 node 管理工具,有點類似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推薦是使用 nvmw 或 nvm-windows 。

以下具體說下 Mac 系統中的安裝與使用細節(Windows 系統僅供類比參考)。


一、卸載已安裝到全局的 node/npm

如果之前是在官網下載的 node 安裝包,運行後會自動安裝在全局目錄,其中

node 命令在 /usr/local/bin/node ,npm 命令在全局 node_modules 目錄中,具體路徑爲 /usr/local/lib/node_modules/npm

安裝 nvm 之後最好先刪除下已安裝的 node 和全局 node 模塊:

npm ls -g –depth=0 #查看已經安裝在全局的模塊,以便刪除這些全局模塊後再按照不同的 node 版本重新進行全局安裝

sudo rm -rf /usr/local/lib/node_modules #刪除全局 node_modules 目錄
sudo rm /usr/local/bin/node #刪除 node
cd  /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm #刪除全局 node 模塊註冊的軟鏈

二、安裝 nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash

安裝完成後請重新打開終端環境,Mac 下推薦使用 oh-my-zsh 代替默認的 bash shell。

三、安裝切換各版本 node/npm

nvm install stable #安裝最新穩定版 node,現在是 5.0.0
nvm install 4.2.2 #安裝 4.2.2 版本
nvm install 0.12.7 #安裝 0.12.7 版本
特別說明:以下模塊安裝僅供演示說明,並非必須安裝模塊
nvm use 0 #切換至 0.12.7 版本
npm install -g mz-fis #安裝 mz-fis 模塊至全局目錄,安裝完成的路徑是 /Users/<你的用戶名>/.nvm/versions/node/v0.12.7/lib/mz-fis
nvm use 4 #切換至 4.2.2 版本
npm install -g react-native-cli #安裝 react-native-cli 模塊至全局目錄,安裝完成的路徑是 /Users/<你的用戶名>/.nvm/versions/node/v4.2.2/lib/react-native-cli

nvm alias default 0.12.7 #設置默認 node 版本爲 0.12.7

四、使用 .nvmrc 文件配置項目所使用的 node 版本

如果你的默認 node 版本(通過 nvm alias 命令設置的)與項目所需的版本不同,則可在項目根目錄或其任意父級目錄中創建 .nvmrc 文件,在文件中指定使用的 node 版本號,例如:

cd <項目根目錄>  #進入項目根目錄
echo 4 > .nvmrc #添加 .nvmrc 文件
nvm use #無需指定版本號,會自動使用 .nvmrc 文件中配置的版本
node -v #查看 node 是否切換爲對應版本

五、nvm 與 n 的區別

node 版本管理工具還有一個是 TJ 大神的 n 命令,n 命令是作爲一個 node 的模塊而存在,而 nvm 是一個獨立於 node/npm 的外部 shell 腳本,因此 n 命令相比 nvm 更加侷限。

由於 npm 安裝的模塊路徑均爲 /usr/local/lib/node_modules ,當使用 n 切換不同的 node 版本時,實際上會共用全局的 node/npm 目錄。 因此不能很好的滿足『按不同 node 版本使用不同全局 node 模塊』的需求。

因此建議各位儘早開始使用 nvm ,以免出現全局模塊無法更新的問題。

當然,如果你用的是 windows 操作系統,我只能說 …… 朋友,能不能早點換個 Mac ,做一個有品位的程序猿呢:P

五、更新nvm

cd ~/.nvm && git pull
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章