nvm-node.js管理器

課外工具安裝-nvm-node.js管理器

nvm 是 Node.js 的版本管理器 (version manager),可在同一台主機上安裝多個版本的 Node.js 環境,因為不同專案可能會使用不同的 Node.js 版本,那就需要透過一個版本管理器來切換不同的 Node.js 版本。

安裝 NVM

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

安裝此腳本會將nvm repo clone~/.nvm,並且將 source line 新增至你的profile設定 ( ~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc ):

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

寫入應用

source ~/.nvm/nvm.sh

測試一下nvm是否有安裝成功:

❯ nvm --version
0.34.0

⛔⛔⛔注意:

使用 nvm 時,不需要sudo即可使用npm -g全域安裝模組,所以與其執行 sudo npm i -g,不如執行 npm i -g
若你有 ~/.npmrc,請確保裡面不包含任何prefix的設定 (因為與 nvm 不相容)
你可以 (但不應該) 保留以前在 “系統” 安裝的 Node.js,但 nvm 只對你的使用者帳戶 (用於安裝 nvm 的使用者帳戶) 可用。可能會導致版本不 match,因為其他使用者會使用 /usr/local/lib/node_modules/*,而使用者帳戶會使用 ~/.nvm/versions/node/vX.X.X/lib/node_modules/*

察看可用的安裝版本

nvm ls-remote --lts

綠色字表示有透過nvm安裝過

利用 NVM 安裝 Node.js

如果有指定版本,可以在後面加上版號。

nvm install node 
# 或
nvm install 8.9.1

查看目前安裝了哪些版本

nvm ls

❯ nvm ls
->     v14.19.3
         system
default -> v14 (-> v14.19.3)
node -> stable (-> v14.19.3) (default)
stable -> 14.19 (-> v14.19.3) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/gallium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.20.0 (-> N/A)
lts/gallium -> v16.16.0 (-> N/A)

有些版本的文字是紅色或是顯示 N/A,就代表該版本未在電腦安裝。

切換 Node.js 版本

nvm use v14.19.3

如果切換的目標版本還沒安裝,nvm 會提醒你要安裝。

透過 nvm 安裝 Node.js 時,nvm 會將不同的 Node.js 版本儲存在 ~/.nvm/versions/node/vX.X.X,然後再修改 $PATH,將指定版本的 Node.js 路徑加入:

nvm current
v10.16.3
echo $PATH             
/home/titan/.nvm/versions/node/v10.16.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

use v12.13.1
nvm current
v12.13.1
echo $PATH             
/home/titan/.nvm/versions/node/v12.13.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

在 nvm 的各個 Node.js 版本安裝的全域套件都會在各自版本的目錄內安裝,所以在切換至新安裝的 Node.js 版本後需要重新安裝,也因為如此,不同版本間的套件就不會有衝突問題。

察看目前使用版本

❯ nvm current
v14.19.3

直接執行 Node.js

nvm run node


❯ nvm run node

┌─────────────────────────────────────────────────────────────────┐
│                     npm update check failed                     │
│               Try running with sudo or get access               │
│              to the local update config store via               │
│ sudo chown -R $USER:$(id -gn $USER) /Users/huangxiaopei/.config │
└─────────────────────────────────────────────────────────────────┘
Running node v14.19.3 (npm v6.14.17)

┌─────────────────────────────────────────────────────────────────┐
│                     npm update check failed                     │
│               Try running with sudo or get access               │
│              to the local update config store via               │
│ sudo chown -R $USER:$(id -gn $USER) /Users/huangxiaopei/.config │
└─────────────────────────────────────────────────────────────────┘
Welcome to Node.js v14.19.3.
Type ".help" for more information.
>

如果要跳出:

> .exit

指定要執行的 Node.js 版本

nvm exec 版號 node

察看 Node.js 的安裝路徑

nvm which 版號