nvmNode.js 的多版本管理器,當你的開發環境有多個不同時代的 Node.js 專案、橫跨不同版次的 Node.js 時,nvm 就派得上用場。

Node.js 版本管理器不只有 nvm,由於 nvm 只支援 macOS 與 Linux,在 Windows 下,改用 VoltaNVS 是更好的選擇。(也可參閱另一篇〈在 Windows 建置以 Visual Studio 為基礎的 Python / Node.js 開發環境

nvm 的問題是,文件與說明又臭又長,其實 80% 的人只用的到 20% 的功能,這裡只寫個人常用到的功能與指令。

更新 nvm

更新 nvm 與從零安裝 nvm 是同一條命令:

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

這個安裝腳本會自行判斷是新裝還是更新。

要注意網址內有 nvm 的版號,更新 nvm 時記得帶入新版號。

更新 npm

npm 是 Node.js 的套件管理器,它也是需要更新的,nvm 有專門更新 npm 的指令:

$ nvm install-latest-npm

列出系統內各 Node.js 版本

$ nvm ls

以本人的環境為例,有列出下列版本:

       v16.13.1
->     v18.16.0
default -> 18.16.0 (-> v18.16.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v18.16.0) (default)
stable -> 18.16 (-> v18.16.0) (default)
lts/* -> lts/hydrogen (-> v18.16.0)
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.21.3
lts/gallium -> v16.20.0
lts/hydrogen -> v18.16.0

看似很亂,其實大部份情況下只要關注那 default 的版號即可。

那些 defaultiojs 等等的是 alias,可以理解為標籤,default 標定的版號就是個人帳戶下預設的 Node.js 版號。

列出可安裝的 Node.js LTS 版本

$ nvm ls-remote --lts

偶數的 LTS 版本們有著更長的維護期:

Node.js Releases Schedule

來源:Node.js

看看那短小的奇數版 Node.js 19…建議都使用偶數的 LTS 版本,避免追著版號跑的窘境發生。

安裝 Node.js

安裝目前的 18.16.0 LTS 版,並且設為預設版次:

$ nvm install 18.16.0 --default

建議都使用 LTS 版本,避免追著版號跑的窘境發生。

設定預設版本

同樣的以 18.16.0 LTS 版為例:

$ nvm alias default 18.16.0

為專案指定 Node.js 版本

在專案的資料夾內,放一個 .nvmrc 檔案,在裡面寫下該專案的 Node.js 版號,例如某專案要用 18.16:

18.16

進入該專案資料夾後,執行 nvm use 即會自動切換成 .nvmrc 指定的版本。

如果在安裝 nvm 時,有設定好 shell 整合的話,應該會自動幫我們做 nvm use 的動作。