用 NVM 管理 Node.js 版本

認識 Node.js,在 Linux / Windows / Mac 任何作業系統安裝 NVM 來管理 Node.js 版本。

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境,可以讓 JavaScript 在伺服器端運行,並且可以使用 NPM 等 Package Manager 來安裝第三方套件。現代的網頁前端開發也離不開使用 node.js 的 package,例如透過 Vite 建立本地開發伺服器與打包專案。

Node.js 的版本更新速度很快,因此我們需要一個工具來管理 Node.js 的版本,避免不同專案需要使用不同版本的 Node.js 時造成問題。

本文版本現況(2026-08 更新)

  • 安裝腳本已更新為 nvm v0.40.7。
  • Node.js 目前的 Active LTS 是 24.x(Krypton),22.x(Jod)已進入 Maintenance LTS。 新專案請裝 24.x —— 下方步驟裡的 22.11.0 請自行換成 24.19.0(或你要的版本), 指令本身完全相同。截圖是撰文當時錄的,畫面上仍顯示 22.11.0。
  • 只裝 Node 一種執行環境的話,現在有比 nvm 更快的選擇 —— 見文末的選型建議。

以 Ubuntu 安裝 NVM

  1. 下載 install script
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash

在 Linux 執行 nvm 安裝指令後的終端機輸出

  1. 設定環境變數
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. 查看最新的 Node.js LTS 版本
nvm ls-remote

nvm ls-remote 列出可安裝的 Node.js 版本

  1. 安裝最新的 Node.js LTS 版本
nvm install 22.11.0

nvm install 22.11.0 的安裝過程輸出

系統會自動將這個版本設定為預設

  1. 確認 node, npm 的版本
node -v
npm -v

在 Linux 以 node -v 與 npm -v 確認版本

以 Windows 安裝 NVM

  1. 開啟 PowerShell 並執行以下指令
winget search nvm

winget search nvm 的搜尋結果

我們要的是 CoreyButler.NVMforWindows

  1. 下載並安裝 NVM
winget install CoreyButler.NVMforWindows

winget 安裝 NVM for Windows 的過程NVM for Windows 安裝完成的提示

  1. 看到 Successfully installed 後,重新開啟終端機並執行以下指令
nvm -v

nvm -v 顯示 NVM for Windows 的版本 有出現版本號表示安裝成功

  1. 安裝最新的 Node.js LTS 版本
nvm install lts

nvm install lts 安裝 Node.js LTS 版本 這邊顯示我們安裝的版本是 22.11.0,我們指定它為預設版本

  1. 啟用指定的版本
nvm use 22.11.0

nvm use 22.11.0 切換 Node.js 版本

  1. 完成後,可以檢查 node 跟 npm 的版本
node -v
npm -v

在 Windows 確認 node 與 npm 版本

以 MacOS 安裝 NVM

  1. 開啟終端機並執行以下指令
brew install nvm
  1. 建立 nvm 的目錄
mkdir ~/.nvm
  1. 設定環境變數
nano ~/.zshrc

在檔案最後加入以下內容

export NVM_DIR="$HOME/.nvm"
export NVM_HOME="/opt/homebrew/opt/nvm"
[ -s "$NVM_HOME/nvm.sh" ] && \. "$NVM_HOME/nvm.sh"

在 macOS 設定檔加入 nvm 載入設定後的終端機畫面

按下 Ctrl + O 儲存後按下 Enter,再按下 Ctrl + X 退出

  1. 重新載入設定
source ~/.zshrc
  1. 確認 nvm 是否安裝成功
nvm -v

在 macOS 確認 nvm 版本 有出現版本號表示安裝成功

  1. 查看最新的 Node.js LTS 版本
nvm ls-remote

在 macOS 執行 nvm ls-remote 的版本清單

  1. 安裝最新的 Node.js LTS 版本
nvm install 22.12.0

系統會自動將這個版本設定為預設

  1. 確認 node, npm 的版本
node -v
npm -v

在 macOS 確認 node 與 npm 版本

常用指令列表

  • nvm ls:列出所有已安裝的 Node.js 版本
  • nvm ls-remote:列出所有可安裝的 Node.js 版本
  • nvm install <version>:安裝指定的 Node.js 版本
  • nvm use <version>:啟用指定的 Node.js 版本
  • nvm alias default <version>:設定預設的 Node.js 版本
  • nvm uninstall <version>:移除指定的 Node.js 版本
  • node -v:查看目前使用的 Node.js 版本

不一定要用 NVM

nvm 是最多教學引用的那一個,但它是 shell script 實作,每開一個 shell 都要付一次載入成本。 只裝 Node 的話,現在有更快的選擇。

工具實作適合什麼情況
nvmshell script教學與文件最多;團隊已經在用就沿用,沒必要為了換而換
fnmRustnvm 的直接替代品,快很多,而且原生支援 Windows(nvm 本身不支援,Windows 上那個是另一個同名專案)。讀同樣的 .nvmrc
VoltaRust把版本釘在 package.json 裡,整個團隊自動落在同一版。適合「不想靠人記得切版本」的專案
miseRust一次管多種語言執行環境,另外還管環境變數與任務。專案不只有 Node 時才划算

選的時候只有兩個問題要回答:

  1. 你只管 Node,還是管很多種執行環境? 只有 Node → fnm 或 Volta;多種 → mise。
  2. 版本要由人切,還是由專案決定? 由人切 → fnm;由專案決定 → Volta(釘在 package.json) 或在 repo 放 .nvmrc 配合 fnm 的自動切換。

從 nvm 換過去的成本很低:fnm 與 mise 都讀 .nvmrc,既有專案不用改檔案。 所以如果你現在正因為 shell 啟動變慢而困擾,這個遷移大概是投報率最高的一個。

反過來說——如果 nvm 現在沒有造成你任何問題,那就不用換。版本管理工具是基礎設施, 基礎設施換掉的收益必須大於整個團隊重新學一次的成本,而「比較快」通常不夠。