fnm 安裝與常用指令完整教學 | 比 nvm 快 40 倍的 Node.js 版本管理器

2026/04/18

用了 nvm 這麼久,直到打開終端機等了三秒 shell 才載入,才知道原來版本管理器也可以很慢。fnm 是同一件事的 Rust 版本——快得幾乎感覺不到它在。

fnm 是什麼,為什麼值得換

fnm(Fast Node Manager) 是用 Rust 寫的 Node.js 版本管理器,指令設計和 nvm 幾乎一模一樣,但啟動速度快了 40 倍以上。

跨平台(macOS、Windows、Linux)、支援 .nvmrc.node-version——就是 nvm 的平替,但不會拖慢你的終端機。


安裝 fnm

macOS(推薦用 Homebrew)

brew install fnm

Linux / macOS(腳本安裝)

curl -fsSL https://fnm.vercel.app/install | bash

Windows

# Winget
winget install Schniz.fnm

# 或 Scoop
scoop install fnm

# 或 Chocolatey
choco install fnm

升級 fnm

# macOS
brew upgrade fnm

# 其他系統(--skip-shell 避免重複寫入設定檔)
curl -fsSL https://fnm.vercel.app/install | bash -s -- --skip-shell

Shell 設定(必做,否則指令不生效)

安裝完 fnm 本體只是第一步——還要讓 shell 認識它,自動版本切換才能運作。

Zsh(.zshrc

eval "$(fnm env --use-on-cd --shell zsh)"

Bash(.bashrc

eval "$(fnm env --use-on-cd --shell bash)"

Fish(~/.config/fish/conf.d/fnm.fish

fnm env --use-on-cd --shell fish | source

PowerShell

fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

--use-on-cd 這個參數很關鍵——加了之後,進入有 .nvmrc.node-version 的目錄,版本會自動切換,完全不用手動 fnm use


常用指令一覽表

安裝 Node.js

指令說明
fnm install <版本號>安裝特定版本,例如 fnm install 20.11.0
fnm install --lts安裝最新 LTS 版本
fnm install latest安裝最新版本

切換版本

指令說明
fnm use <版本號>切換到指定版本
fnm use --lts切換到最新 LTS
fnm use latest切換到最新版本
fnm default <版本號>設定全域預設版本

查詢版本

指令說明
fnm listfnm ls列出本機已安裝的所有版本
fnm list-remotefnm ls-remote列出所有可安裝的遠端版本
fnm current顯示目前使用的版本
node -v確認 Node.js 版本
fnm --version顯示 fnm 本身版本

移除版本

指令說明
fnm uninstall <版本號>移除指定版本

補全設定

fnm completions --shell zsh   # 輸出 Zsh 補全腳本
fnm completions --shell bash
fnm completions --shell fish
fnm completions --shell powershell

專案版本鎖定:.node-version

進到任何專案目錄前,可以用一行指令把目前版本寫進 .node-version

node --version > .node-version

之後只要 shell 設定了 --use-on-cd,進這個目錄就會自動切版本——不用再想「這個專案跑哪個 Node?」


fnm vs nvm:快在哪

比較項目fnmnvm
語言RustShell Script
Shell 啟動速度極快(< 1ms)慢(~100ms+)
跨平台macOS / Linux / WindowsmacOS / Linux
自動版本切換--use-on-cd✅ 需額外設定
支援 .nvmrc
支援 .node-version❌ 原生不支援
指令相容性幾乎與 nvm 一致

nvm 沒有壞,但如果你的終端機每次開啟都要等一秒多,那個時間是 nvm 在 source shell script。fnm 的 Rust binary 啟動幾乎是零感知。


FAQ

Q:fnm 和 nvm 的指令差很多嗎? 幾乎一樣。fnm installfnm usefnm ls 的邏輯和 nvm 完全對應,大部分人切換過來不需要重新學習。

Q:現有的 .nvmrc 可以繼續用嗎? 可以。fnm 同時支援 .nvmrc.node-version,不需要修改現有專案的設定。

Q:nvm 安裝的版本可以移過來嗎? 不行直接移,但可以用 fnm install 重新安裝同版本。因為兩者的儲存路徑不同,全域 package 也需要重裝。

Q:fnm defaultnvm alias default 是一樣的東西嗎? 是的,功能相同——設定沒有 .node-version.nvmrc 時預設啟用哪個版本。

Q:Windows 上可以用嗎? 可以,是 fnm 比 nvm 明顯強的地方之一。nvm 在 Windows 上需要另外裝 nvm-windows,fnm 原生跨平台。


移除 fnm

刪掉 ~/.fnm 資料夾,再把 shell 設定檔(.zshrc.bashrc 等)裡加進去的那行 eval "$(fnm env ...)" 移除就完成了。


換 fnm 的成本幾乎是零——指令相容、設定一行、速度直接感受到。如果你的終端機還在等 nvm 載入,現在是個好時機。