nvm 是 Node.js 的多版本管理器,當你的開發環境有多個不同時代的 Node.js 專案、橫跨不同版次的 Node.js 時,nvm 就派得上用場。
Node.js 版本管理器不只有 nvm,由於 nvm 只支援 macOS 與 Linux,在 Windows 下,改用 NVS 是更好的選擇。(也可參閱另一篇〈在 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
的版號即可。
那些 default
、iojs
等等的是 alias,可以理解為標籤,default
標定的版號就是個人帳戶下預設的 Node.js 版號。
列出可安裝的 Node.js LTS 版本
$ nvm ls-remote --lts
偶數的 LTS 版本們有著更長的維護期:
看看那短小的奇數版 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
的動作。