前言
在開發過程中,經常需要切換不同版本的 NodeJS 來測試兼容性或使用特定功能。NodeJS 官方提供了多種安裝方式,包括使用 nvm、使用 brew、使用 apt 等。
如果正在使用 fish shell,可以使用 fnm (Fast Node Manager) 來安裝和管理 NodeJS,這比使用 nvm 更加快速和穩定。
使用 fnm 管理 NodeJS 版本是一個快速、高效的解決方案。它提供了簡單的命令來安裝、切換和管理不同版本的 NodeJS,特別適合需要經常切換版本的開發者。結合 pnpm 包管理器,可以獲得最佳的開發體驗。
為什麼選擇 fnm?
- 速度快: 使用 Rust 編寫,啟動速度比 nvm 快 10 倍
- 跨平台: 支援 Windows、macOS 和 Linux
- Shell 整合: 完美支援 fish、zsh、bash 等 shell
- 自動完成: 提供完整的命令自動完成功能
- 輕量級: 佔用資源少,安裝快速
安裝 fnm
Linux/macOS
1
| curl -fsSL https://fnm.vercel.app/install | bash
|
Windows
1
2
3
4
5
| # 使用 Chocolatey
choco install fnm
# 使用 Scoop
scoop install fnm
|
手動安裝
1
2
3
4
5
| # 下載最新版本
curl -fsSL https://github.com/Schniz/fnm/releases/latest/download/fnm-$(uname -s)-$(uname -m).tar.gz | tar -xzf -
# 移動到系統路徑
sudo mv fnm /usr/local/bin/
|
配置 Shell
通常已經自動添加,如果沒有,可以按照以下步驟添加。
Fish Shell
將以下內容添加到 ~/.config/fish/config.fish
:
1
2
3
| # fnm
set -gx PATH "$HOME/.local/share/fnm" $PATH
fnm env --use-on-cd | source
|
Bash/Zsh
將以下內容添加到 ~/.bashrc
或 ~/.zshrc
:
1
2
3
| # fnm
export PATH="$HOME/.local/share/fnm:$PATH"
eval "$(fnm env --use-on-cd)"
|
重新載入配置:
1
| source ~/.bashrc # 或 source ~/.zshrc
|
或者重新啟動終端。
安裝 NodeJS
查看可用版本
1
2
3
4
5
6
7
8
| # 列出所有可用的 LTS 版本
fnm list-remote --lts
# 列出所有可用版本
fnm list-remote
# 列出已安裝的版本
fnm list
|
安裝特定版本
將 24
替換為您想要安裝的 NodeJS 版本:
1
2
3
4
5
6
7
8
9
10
11
| # 安裝最新的 LTS 版本
fnm install --lts
# 安裝特定版本
fnm install 24
# 安裝最新版本
fnm install latest
# 安裝特定的小版本
fnm install 24.18.0
|
切換版本
1
2
3
4
5
6
7
8
| # 使用特定版本
fnm use 24
# 設定預設版本
fnm default 24
# 設定當前目錄的版本(會創建 .node-version 文件)
fnm use 24 --install-if-missing
|
安裝 pnpm
pnpm 是一個快速、節省磁盤空間的包管理器:
1
2
3
4
5
6
7
8
| # 啟用 pnpm
corepack enable pnpm
# 或者使用 npm 安裝
npm install -g pnpm
# 或者使用 fnm 安裝
fnm exec --using=24 npm install -g pnpm
|
驗證安裝
1
2
3
4
5
6
7
8
9
10
11
| # 檢查 NodeJS 版本
node -v
# 檢查 npm 版本
npm -v
# 檢查 pnpm 版本
pnpm -v
# 檢查 fnm 版本
fnm --version
|
常用命令
fnm 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 列出已安裝的版本
fnm list
# 移除特定版本
fnm uninstall 24
# 清理未使用的版本
fnm prune
# 顯示當前使用的版本
fnm current
# 顯示版本路徑
fnm which 24
|
版本管理
1
2
3
4
5
| # 在專案目錄中設定 NodeJS 版本
echo "24" > .node-version
# 或者使用 fnm 自動設定
fnm use 24 --install-if-missing
|
常見問題解決
1. fnm 命令未找到
確保已經正確配置 shell 配置文件,並重新載入:
1
| source ~/.bashrc # 或對應的配置文件
|
2. 權限問題
如果遇到權限問題,可以更改安裝目錄:
1
2
| export FNM_DIR="$HOME/.fnm"
curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir "$FNM_DIR"
|
3. 版本切換不生效
確保 shell 配置正確,並且重新啟動終端或重新載入配置。
4. 與現有 nvm 衝突
如果系統中已經安裝了 nvm,建議先移除:
1
2
3
| # 移除 nvm
rm -rf ~/.nvm
# 從 shell 配置中移除 nvm 相關行
|
最佳實踐
- 使用 LTS 版本: 在生產環境中使用長期支持版本
- 專案版本管理: 在每個專案目錄中創建
.node-version
文件 - 定期更新: 定期更新 fnm 和 NodeJS 版本
- 備份配置: 備份重要的 shell 配置文件