nvm-sh/nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
msitarzewski/agency-agents(已於 2026-06-30 推過),故改推第 3 名。這是什麼
nvm-sh/nvm 是一個用 POSIX 相容 shell 撰寫的 Node.js 版本管理器,核心目標很單純:讓使用者能在命令列快速安裝、切換並使用不同版本的 Node。README 的定位很明確,它是 per-user、per-shell 的工具,不是系統層級套件管理器;安裝後透過 shell profile 載入 nvm.sh,再用 nvm install、nvm use 等指令把目前 shell 的 Node 版本切到指定版本。它支援 sh、dash、ksh、zsh、bash 等環境,主要面向 Unix、macOS 與 Windows WSL,也提到 Git Bash、MSYS、Cygwin 在某些情況下可用。這種設計的好處是輕量、直覺,而且不需要為全域 npm 套件動用 sudo。
為什麼上榜
這次上榜的亮點不是「新專案」式的炫技,而是 經典基礎工具的持續需求。metadata 顯示它已有 94,483 stars,今日仍增加 22 stars;對一個成熟工具來說,這代表 Node 版本管理仍是開發者日常痛點。nvm 的差異在於它把問題收斂到 shell 層:不碰複雜 GUI,也不主張取代所有平台方案,而是用可讀的 bash script 處理多版本 Node、LTS、預設版本與環境變數。README 也花大量篇幅處理 Docker、CI/CD、macOS、Linux、WSL、Fish 不支援等邊界情境,顯示這個專案真正的價值在於 多年累積的相容性經驗,而不只是幾行安裝指令。
適合誰,可以拿來做什麼
它最適合需要在多個專案間切換 Node 版本的前端、全端、CLI 工具或自動化腳本開發者。若你的專案同時碰到 Node 20、22、24,或要跟著 LTS 版本升級,nvm 可以讓每個 shell session 選用合適版本,避免「系統 node」污染所有工作。README 也特別提示在 macOS 與 Linux 安裝後若找不到 nvm,通常需要重開終端或重新 source profile;在 Docker 非互動 shell 中,則要透過 BASH_ENV 讓 bash 自動載入設定。上手門檻不高,但使用者要理解它是 shell function,不是獨立 executable,所以驗證方式是 command -v nvm,而不是 which nvm。
上手
README 提供的安裝與驗證流程很直接,可用 curl 或 wget 執行 install script;腳本會 clone 到 ~/.nvm,並嘗試把載入片段加入 .bashrc、.bash_profile、.zshrc 或 .profile。安裝後建議用 README 指定的方式驗證:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
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"
command -v nvm
nvm install 24
nvm use 22
node -v
若不希望安裝器修改 shell 設定,可用 PROFILE=/dev/null;若在 Docker 或 CI 裡使用,README 建議用 bash、設定 NVM_DIR,並在非互動 shell 中明確 source nvm.sh。
README 重點摘要
nvm是 per-user、per-shell 的 Node 版本管理器,支援多種 POSIX shell,主要面向 Unix、macOS 與 WSL。- 安裝腳本可用 curl 或 wget,會把專案 clone 到
~/.nvm,並嘗試更新常見 shell profile。 - 驗證安裝應使用
command -v nvm;README 明確提醒which nvm不適用,因為 nvm 是 shell function。 - Docker/CI 情境需要特別處理非互動 bash,README 建議透過
BASH_ENV或 entrypoint 重新載入 nvm 環境。 - README 列出多個相容性注意事項:Fish 不受官方支援、FreeBSD 可能需從 source build,macOS 可能需要 Xcode Command Line Tools。