nvm 是什麼?新手必看的 Node.js 版本管理工具指南

更新日期: 2025 年 3 月 22 日

在學習和開發 Node.js 應用時,你可能會遇到一個問題:不同專案需要使用不同版本的 Node.js

這時候,如果你每次都手動安裝或切換 Node.js 版本,不僅麻煩,還可能導致環境錯亂。

這就是 nvm(Node Version Manager) 存在的意義!

本篇文章將帶你了解 nvm 是什麼,它的主要功能,以及如何在你的開發環境中安裝和使用它,幫助你輕鬆管理 Node.js 版本!


什麼是 nvm?為什麼要使用它?

nvm 是什麼?

nvm(Node Version Manager,Node.js 版本管理器)是一款 專門用來管理 Node.js 版本的命令列工具

對於開發者來說,它是一個 極為實用的工具,能夠幫助你 安裝、切換、管理 不同版本的 Node.js,而不影響系統內建的 Node.js 版本或其他應用程式的運行。

在開發環境中,許多專案可能會 依賴不同版本的 Node.js,例如:

  • 舊專案可能使用 Node.js 14,但新專案可能需要 Node.js 18 才能運作。
  • 團隊開發時,成員之間可能需要 統一 Node.js 版本,以避免出現相容性問題。
  • 有些 Node.js 的新功能或 API 只適用於特定版本,測試時需要頻繁切換不同版本。

如果沒有 nvm,你可能需要手動下載並安裝 Node.js,然後透過修改系統環境變數來切換版本,這樣不僅 繁瑣且容易出錯。而有了 nvm,你只需輸入簡單的指令,就能 快速安裝、切換或移除 Node.js 版本,大幅提升開發效率。

為什麼要使用 nvm?nvm 的四大優勢

nvm 之所以廣受開發者歡迎,是因為它能有效解決 Node.js 版本管理的痛點,並提供許多方便的功能。以下是 nvm 的四大優勢:

1. 輕鬆切換 Node.js 版本

不同專案可能需要不同版本的 Node.js,例如:

  • A 專案需要 Node.js 14,但 B 專案需要 Node.js 18
  • 你可能需要測試新功能,短時間內切換不同的 Node.js 版本。

如果手動安裝和卸載不同版本的 Node.js,會相當麻煩,且容易發生衝突。有了 nvm,切換版本變得非常簡單,只需輸入:

nvm use 18.16.0

瞬間就能切換到 Node.js 18.16.0,無需重新安裝,開發體驗更加順暢!

2. 避免全域衝突,保護系統環境

當你在 系統層級(全域) 安裝 Node.js 時,系統會在 /usr/local/bin/(Linux/macOS)或 C:\Program Files\nodejs\(Windows)中存放 Node.js 可執行檔和 npm 套件。

這樣做可能會產生以下問題:

  • 系統預裝的 Node.js 無法輕易變更,影響其他應用程式的運作。
  • 開發環境與正式環境不一致,可能導致程式在本機可運行,但部署到伺服器時卻出錯。
  • 安裝/移除不同版本的 Node.js 會覆蓋系統設定,造成環境不穩定。

使用 nvm 時,所有 Node.js 版本 都會被安裝在使用者的 nvm 目錄內(例如 ~/.nvm),而不會影響系統本身。這意味著你可以:

✅ 安裝多個版本的 Node.js 而不互相干擾。
✅ 在不同專案之間自由切換 Node.js 版本,而不影響整個系統。

3. 快速安裝與移除 Node.js 版本

nvm 讓你能夠隨時安裝、移除或更新不同版本的 Node.js,無需手動下載安裝檔或修改環境變數。例如:

安裝 Node.js 最新的 LTS 版本(長期支援版):

nvm install --lts

安裝特定版本的 Node.js(例如 18.16.0)

nvm install 18.16.0

查看目前已安裝的版本

nvm list

移除不再需要的 Node.js 版本(例如 16.13.0)

nvm uninstall 16.13.0

這些操作 只需要一行指令,大幅節省時間,讓你專注在開發上,而不是浪費時間處理環境設定!

4. 提升開發效率,確保團隊環境一致

在團隊開發時,確保所有成員都使用相同的 Node.js 版本 非常重要,否則可能會導致:

  • 某些成員使用新版 API,但其他成員的舊版環境不支援,導致程式出錯。
  • 依賴的 npm 套件可能與不同的 Node.js 版本不相容,造成運行錯誤。
  • 在本機開發時沒問題,但部署到伺服器卻出錯,因為環境不同。

為了解決這個問題,nvm 允許開發者在專案目錄內建立一個 .nvmrc 檔案,指定該專案應該使用的 Node.js 版本。例如:

echo "18.16.0" > .nvmrc

當其他團隊成員下載這個專案時,只需輸入:

nvm use

nvm 會自動讀取 .nvmrc,並切換到對應的 Node.js 版本,確保整個團隊環境一致,避免版本不匹配的問題! 🚀


nvm 是如何運作的?

nvm(Node Version Manager)能夠讓開發者在同一台電腦上輕鬆安裝、切換不同版本的 Node.js,而不影響系統內的其他應用程式。

它的核心原理是透過「修改環境變數」來達到 Node.js 版本的管理與切換,而不是同時安裝多個 Node.js 版本並讓它們共存於系統中。

簡單來說,nvm 並不會修改或影響系統層級的 Node.js,而是透過 Shell 指令來動態變更 Node.js 的執行環境

當你切換 Node.js 版本時,nvm 並不會真正地「移除」或「重新安裝」Node.js,而是調整系統內的 PATH 變數,讓系統指向 nvm 所管理的特定 Node.js 版本路徑。

nvm 的核心機制:如何管理 Node.js 版本?

1. Node.js 版本的存放方式

當你透過 nvm 安裝 Node.js 時,nvm 並不會將它安裝到系統的標準安裝目錄(例如 /usr/local/bin/C:\Program Files\nodejs\),而是將所有安裝的 Node.js 版本存放在 nvm 專屬的目錄內

不同作業系統的 nvm 目錄位置可能有所不同:

  • Linux/macOS~/.nvm/versions/node/
  • Windows(使用 nvm-windows)C:\Users\你的使用者名稱\AppData\Roaming\nvm\

舉例來說,假設你安裝了以下三個版本的 Node.js:

~/.nvm/versions/node/v14.21.3/
~/.nvm/versions/node/v16.20.0/
~/.nvm/versions/node/v18.16.0/

這三個版本會各自存放在不同的目錄中,互不影響。

2. 如何切換 Node.js 版本?環境變數的運作

nvm 的 關鍵技術 在於它如何動態切換 Node.js 版本,而這完全是透過 修改環境變數(Environment Variables) 來達成的。

當你執行 nvm use 18.16.0 時,nvm 會做兩件事情:

  1. 更新 PATH 變數
    • 在 macOS / Linux 上,nvm 會動態調整 PATH,將 /Users/你的使用者名稱/.nvm/versions/node/v18.16.0/bin 設定為優先使用的路徑。
    • 在 Windows 上,nvm 會修改 C:\Users\你的使用者名稱\AppData\Roaming\nvm\nodejs\,指向 v18.16.0
  2. 建立軟連結(symbolic link)或別名
    • nvm 會將 nodenpm 這些指令對應到所選的版本,讓你的 Shell 知道應該執行哪個 Node.js 版本。
    • 當你輸入 node -v 時,系統會根據 PATH 找到當前啟用的 Node.js 版本,而不是全域安裝的版本。

這樣一來,當你切換 Node.js 版本時,實際上 並沒有安裝新版本或移除舊版本,而是單純地讓系統指向不同的 Node.js 版本目錄,這也是為什麼切換版本的速度可以非常快!

範例:切換 Node.js 版本時,PATH 變數的變化

執行 nvm use 14.21.3 前:

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

(假設系統內建的 Node.js 是 v12.18.3

執行 nvm use 14.21.3 後:

echo $PATH
/Users/你的使用者名稱/.nvm/versions/node/v14.21.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

現在,當你輸入 node -v,系統會執行 /Users/你的使用者名稱/.nvm/versions/node/v14.21.3/bin/node,而不是內建的 v12.18.3

這就是 nvm 運作的核心機制!

.nvmrc 檔案:專案級別的 Node.js 版本管理

除了手動切換 Node.js 版本外,nvm 也允許你在專案目錄中建立一個 .nvmrc 檔案,來 指定該專案應該使用的 Node.js 版本

如何設定 .nvmrc

在專案根目錄內執行以下指令,將當前的 Node.js 版本記錄到 .nvmrc

node -v > .nvmrc

這樣,.nvmrc 內就會存放一個版本號,例如:

18.16.0

當你進入該專案目錄時,只需執行:

nvm use

nvm 會自動讀取 .nvmrc 並切換到對應的 Node.js 版本,確保每位開發者在該專案內使用相同的環境,減少版本不相容的問題。


nvm 與 nvm-windows 的差異

雖然 Windows 也有 nvm,但 Windows 版的 nvm(nvm-windows)與 Linux/macOS 版本的 nvm 有一些不同,主要差異如下:

特性Linux/macOS 版 nvmWindows 版 nvm-windows
安裝目錄~/.nvm/C:\Users\你的使用者名稱\AppData\Roaming\nvm\
設定檔.bashrc、.zshrcsettings.txt
軟連結方式ln -s 符號連結直接修改 PATH
是否支援 .nvmrc✅ 支援❌ 不支援
預設全域 npm 套件保留✅ 支援❌ 不支援

由於 Windows 版的 nvm-windows 不支援 .nvmrc,所以 Windows 用戶在不同專案之間切換時,必須手動輸入 nvm use 版本號,而不能自動讀取 .nvmrc


如何安裝 nvm?

nvm 主要支援 Windows、macOS 以及 Linux,不同系統的安裝方式會稍有不同,以下是詳細安裝步驟。

Windows 安裝 nvm

在 Windows 系統上,nvm 的官方版本 nvm-windows 與 Linux/macOS 的 nvm 有些不同,但功能相同。

步驟:

  1. 下載安裝程式
  2. 執行安裝程式
    • 雙擊 nvm-setup.exe,依照指示完成安裝。
  3. 確認安裝是否成功
    • 打開 命令提示字元(cmd)或 PowerShell,輸入: nvm version
    • 若出現 nvm 版本號,即代表安裝成功!

macOS / Linux 安裝 nvm

在 macOS 和 Linux 上,可以使用 cURL 或 Wget 來安裝 nvm。

步驟:

  1. 使用 cURL 安裝(推薦): curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
  2. 或使用 Wget 安裝wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
  3. 啟動 nvm
    • 安裝完成後,重新啟動終端機(Terminal),或者執行以下指令以載入 nvm: source ~/.bashrc # 適用於 Ubuntu 或其他 Linux 系統 source ~/.zshrc # 適用於 macOS Zsh source ~/.bash_profile # 另一種 macOS 常見的 Shell 設定
  4. 確認安裝是否成功nvm --version
    • 若成功顯示版本號,表示 nvm 已安裝完成!

如何使用 nvm?

安裝好 nvm 之後,你就可以開始使用它來管理 Node.js 版本了。以下是幾個常用的 nvm 指令。

查看可用的 Node.js 版本

要查看所有可安裝的 Node.js 版本,可以執行:

nvm list-remote

這會顯示所有官方支援的 Node.js 版本,你可以從中選擇需要的版本來安裝。

安裝指定版本的 Node.js

例如,安裝 Node.js 18.16.0

nvm install 18.16.0

若要安裝最新的 LTS(長期支援版):

nvm install --lts

切換 Node.js 版本

當你安裝了多個版本的 Node.js,可以使用以下指令來切換:

nvm use 18.16.0

如果想設定 預設版本,可以使用:

nvm alias default 18.16.0

這樣下次開機時,nvm 會自動載入該版本的 Node.js。

查看已安裝的 Node.js 版本

nvm list

這會顯示本機已安裝的 Node.js 版本,以及當前正在使用的版本。

移除不需要的 Node.js 版本

如果你想刪除某個 Node.js 版本,例如 16.13.0,可以執行:

nvm uninstall 16.13.0

常見問題與解決方法

nvm 指令找不到?

  • 可能是安裝完成後,nvm 尚未正確載入。試試執行: source ~/.bashrc 或者重新啟動終端機。

為什麼 nvm 無法安裝特定版本的 Node.js?

  • 檢查是否打錯版本號,或使用 nvm list-remote 確認該版本是否可用。
  • 若遇到權限問題,可嘗試 sudo 或確認安裝目錄的權限。

為什麼切換版本後,仍然顯示舊版本的 Node.js?

  • 嘗試關閉終端機並重新開啟,或執行: hash -r 以更新 Shell 中的記錄。

結論

nvm 是一個強大且實用的工具,讓開發者能夠輕鬆管理 Node.js 版本,避免版本衝突的問題。

對於經常開發不同專案的工程師來說,nvm 是必備工具之一。

現在就動手安裝 nvm,開始享受無痛管理 Node.js 版本的便利吧! 🚀

Similar Posts