跳轉到內容

使用 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,刪除 nodenode_modules 相關的文件和文件夾
  • 打開 /usr/local/include,刪除 nodenode_modules 相關的文件和文件夾

如果你是使用的 brew install node 安裝的 NodeJS,那麼你還需要在終端中執行 brew uninstall node 命令來卸載

檢查你的個人主文件夾下面的所有的 local、lib 以及 include 文件夾,並且刪除所有與 node 和 node_modules 相關的文件以及文件夾

打開 /usr/local/bin 並刪除 node 可執行文件

你可能還需要在你的終端中輸入一些額外的指令:

bash
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

bash
brew install nvm

安裝多版本 node/npm

安裝4.2.2版本:

bash
nvm install 4.2.2

安裝最新的 4.2 系列的最新版本:

bash
nvm install 4.2

列出遠程服務器上所有的可用版本:

bash
nvm ls-remote

在不同版本間切換

切換到 4.2.2:

bash
nvm use 4.2.2

切換到 4.2.x:

bash
nvm use 4.2

切換到最新版:

bash
nvm use node

列出已安裝實例

bash
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:

bash
nvm install v5.0.0 --reinstall-packages-from=4.2

最後更新於: