Skip to content

用 nvm 管理 Node.js 版本:Mac 與 Windows 一次搞定

用 nvm 管理 Node.js 版本:Mac 與 Windows 一次搞定

為什麼你需要一個「Node.js 版本切換器」

不知道你有沒有遇過這種情境:今天接手一個舊專案,npm install 跑下去一堆紅字噴出來;或是跟同事一起開發,你的機器跑得好好的,他那邊卻整個壞掉。追到最後才發現——大家裝的 Node.js 版本根本不一樣。

這就像三個人約好一起組裝同一套 IKEA 家具,結果各自手上拿的是不同年份的說明書,零件對不上是遲早的事。而 nvm 要解決的,正是這個「版本對不上」的痛。

nvm 是 Node Version Manager 的縮寫,直翻就是「Node 版本管理器」。它讓你可以在同一台電腦上安裝好幾個版本的 Node.js,然後一行指令就切換過去。對需要統一環境的團隊來說,這幾乎是必裝工具。

它主要能幫你做這幾件事:

  • 在多個 Node.js 版本之間自由切換
  • 指定某個版本當作預設啟動環境
  • 把不同套件裝到對應的版本底下,彼此互不干擾

順帶一提,在 Mac 上用 nvm 還有個隱藏好處:之後跑 npm install -g 全域安裝套件時,不用再加 sudo,少了一堆權限報錯的煩惱,體驗其實比官網直接下載安裝包還順手。

接下來我會分成三段帶你走:安裝 nvm、Mac 額外的環境設定、以及最常用的幾個指令實戰。

安裝 nvm

nvm 的安裝方式依作業系統而不同,下面分別說明。

Windows

Windows 用的是另一個專案 nvm-windows,它有現成的安裝精靈,對不想碰命令列的人非常友善。

到該專案的 Releases 頁面,下載 nvm-setup 開頭的安裝檔,接著就跟一般軟體一樣「下一步、下一步」點到底即可。

裝完後打開「命令提示字元」,輸入 nvm 然後按下 Enter,如果跳出一大串指令說明,就代表安裝成功了。

macOS

Mac 沒有圖形化安裝包,改用指令搞定。打開「終端機」(Terminal)或你自己裝的 iTerm,貼上下面這行:

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

上面用 master 抓最新版即可;若想鎖定特定版號,可以到 nvm 官方 repo 把網址裡的版本換成你要的 tag。

跑完之後通常會看到一段成功訊息。但這裡有個很多人卡住的坑:你滿心歡喜輸入 nvm,卻得到一句冷冰冰的 zsh: command not found: nvm

別慌,這不是安裝失敗,而是你的終端機還不知道去哪裡找 nvm。我們得手動補一段設定讓它「認得」這個指令。

Mac 的關鍵一步:讓終端機認得 nvm

要解決上面那個 command not found,我們要把一段啟動腳本寫進命令列的設定檔。先搞清楚你用的是哪種 shell:現在新版 macOS 預設是 zsh,比較舊的環境可能是 bash。不確定的話,輸入 echo $SHELL 看一下結尾是 zsh 還是 bash 就知道了。

兩者要貼的內容其實一模一樣,差別只在寫進不同的檔案。

如果你是 zsh,編輯家目錄下的 ~/.zshrc;如果是 bash,則編輯 ~/.bash_profile(這個檔案可能不存在,先用 touch ~/.bash_profile 建一個即可)。

小提醒:這些設定檔都是隱藏檔,在 Finder 裡看不到很正常。按 Command + Shift + . 就能切換隱藏檔顯示。

用任何文字編輯器打開對應檔案,把下面這段貼到最後並存檔:

bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # 載入 nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # 載入 nvm 指令補全

存檔後關掉終端機重開(或執行 source ~/.zshrc),再輸入一次 nvm,這次就會乖乖跳出指令列表了。

常用的 nvm 指令

nvm 指令看起來很多,但說真的,日常會用到的就那幾個,其他認識一下知道有這功能就好。下面是我自己用得最頻繁的清單:

bash
nvm ls-remote          # 列出遠端所有可安裝的 Node.js 版本
nvm install 20         # 安裝指定版本(這裡裝 v20)
nvm ls                 # 列出本機已安裝的版本
nvm use 20             # 當前視窗切換到指定版本
nvm alias default 20   # 設定預設啟動版本

實戰:從安裝到切換版本

第一次裝不知道選哪個版本?建議到 Node.js 官網 挑左邊標示 LTS(長期支援) 的版本,這類版本最穩定、踩雷機率最低,適合拿來跑正式專案。

假設我們要裝 v20,直接:

bash
nvm install 20

裝完輸入 node -v 確認一下版號。接著模擬一個常見情況——團隊裡有個舊專案還跑在 v18,那就把 v18 也補上:

bash
nvm install 18

現在本機同時有兩個版本了。問題來了:每次開新視窗到底會用哪個?這時候 nvm alias default 就派上用場,它幫你釘住一個「開機預設值」:

bash
nvm alias default 18

重開終端機後跑 nvm ls,你會看到目前生效的版本是 v18,而且 default 也指向它,確認設定成功。

那如果只是臨時要切到另一個版本測一下呢?用 nvm use 就好,它只影響「當前這個視窗」,關掉就恢復預設:

bash
nvm use 20

到這裡你就完全掌握 nvm 的核心玩法了:install 裝、use 臨時切、alias default 設預設。整個流程其實不難,難的是第一次卡在 command not found 時不知道發生什麼事——而現在你已經知道怎麼解了。

環境準備好之後,就回到你的專案開心開發吧!如果手邊剛好沒有練手的小專案,也可以看看我用 JavaScript 做的小工具,例如純瀏覽器運算、不上傳資料的 QR Code Studio,拿來當作練習 Node.js 工具鏈的起點也很不錯。我們下篇文章見。