使用 nvm 管理不同版本的 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 模塊』的需求。
卸載全局安裝的 node/npm
在官網下載的 node 安裝包,運行後會自動安裝在全局目錄,使用過程中經常會遇到一些權限問題,所以推薦按照以下方法卸載全局安裝的 node/npm。
首先,打開你 Finder,按 shift+command+G,打開前往文件夾的窗口,分別輸入下列目錄進去之後刪除 node 和 node_modules 相關的文件和文件夾:
- 打開
/usr/local/lib,刪除node和node_modules相關的文件和文件夾 - 打開
/usr/local/include,刪除node和node_modules相關的文件和文件夾
如果你是使用的 brew install node 安裝的 NodeJS,那麼你還需要在終端中執行 brew uninstall node 命令來卸載
檢查你的個人主文件夾下面的所有的 local、lib 以及 include 文件夾,並且刪除所有與 node 和 node_modules 相關的文件以及文件夾
打開 /usr/local/bin 並刪除 node 可執行文件
你可能還需要在你的終端中輸入一些額外的指令:
sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /opt/local/bin/node
sudo rm /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules安裝 nvm
brew install nvm安裝多版本 node/npm
安裝4.2.2版本:
nvm install 4.2.2安裝最新的 4.2 系列的最新版本:
nvm install 4.2列出遠程服務器上所有的可用版本:
nvm ls-remote在不同版本間切換
切換到 4.2.2:
nvm use 4.2.2切換到 4.2.x:
nvm use 4.2切換到最新版:
nvm use node列出已安裝實例
nvm ls在項目中使用不同版本的 Node
我們可以通過創建項目目錄中的 .nvmrc 文件來指定要使用的 Node 版本。之後在項目目錄中執行 nvm use 即可。
.nvmrc 文件內容只需要遵守上文提到的語義化版本規則即可
在多環境中使用npm
每個版本的 Node 都會自帶一個不同版本的 npm,可以用 npm -v 來查看 npm 的版本。全局安裝的 npm 包並不會在不同的 Node 環境中共享,因為這會引起兼容問題。它們被放在了不同版本的目錄下,例如 ~/.nvm/versions/node/<version>/lib/node_modules</version> 這樣的目錄。這剛好也省去我們在 Linux 中使用 sudo 的功夫了。因為這是用戶的主文件夾,並不會引起權限問題。
但問題來了,我們安裝過的 npm 包,都要重新再裝一次?幸運的是,我們有個辦法來解決我們的問題,運行下面這個命令,可以從特定版本導入到我們將要安裝的新版本 Node:
nvm install v5.0.0 --reinstall-packages-from=4.2