FNM 是一个用 Rust 编写的现代化、快速的 Node.js 版本管理器,比 nvm 更快,支持跨平台(Windows、macOS、Linux)。
一、安装 FNM
Windows 安装
方法 1:使用 Winget(推荐)
bash
winget install Schniz.fnm
方法 2:使用 Chocolatey
bash
choco install fnm
macOS 安装
方法 1:使用 Homebrew(推荐)
bash
brew install fnm
方法 2:使用 curl
bash
curl -fsSL https://fnm.vercel.app/install | bash
Linux 安装
方法:使用 curl
bash
curl -fsSL https://fnm.vercel.app/install | bash
二、配置环境变量
安装完成后,需要配置 shell 环境变量以启用 fnm。
Windows (PowerShell)
可以通过以下命令打开配置文件:
powershell
notepad $PROFILE
如果文件不存在,会提示是否创建,点击"是"即可。
将以下内容添加到 PowerShell 配置文件:
powershell
fnm env --use-on-cd | Out-String | Invoke-Expression
macOS/Linux (Zsh)
将以下内容添加到 ~/.zshrc:
zsh
eval "$(fnm env --use-on-cd)"
然后重新加载配置:
zsh
source ~/.zshrc
三、验证安装
安装完成后,验证 fnm 是否正确安装:
sh
fnm --version
四、基本使用
1. 安装 Node.js
bash
# 安装最新 LTS 版本
fnm install --lts
# 安装指定版本
fnm install 18.17.0
fnm install 20
fnm install 16.14.0
# 安装最新版本
fnm install latest
2. 切换 Node.js 版本
bash
# 切换到指定版本
fnm use 18.17.0
fnm use 20
# 切换到 LTS 版本
fnm use --lts
# 自动切换(基于 .node-version 或 .nvmrc 文件)
cd project-directory # 如果项目中有 .node-version 文件,会自动切换
3. 查看已安装的版本
bash
# 列出所有已安装的版本
fnm list
# 列出远程可用版本
fnm ls-remote
# 列出远程 LTS 版本
fnm ls-remote --lts
4. 设置默认版本
bash
# 设置默认使用的 Node.js 版本
fnm default 20.10.0
5. 卸载 Node.js 版本
bash
fnm uninstall 18.17.0
6. 查看当前版本
bash
node --version
npm --version
五、FNM vs NVM vs Volta 对比
以下是三个主流 Node.js 版本管理器的详细对比:
| 特性 | FNM | NVM | Volta |
|---|---|---|---|
| 速度 | ⚡ 非常快(Rust 编写) | 较慢(Shell 脚本) | ⚡ 快(Rust 编写) |
| 跨平台 | ✅ Windows/macOS/Linux | ❌ Windows 不支持(需用 nvm-windows) | ✅ Windows/macOS/Linux |
| 自动切换 | ✅ 内置 --use-on-cd |
❌ 需要额外插件 | ✅ 基于 package.json 自动切换 |
| 安装大小 | 小(单个二进制文件) | 较大 | 中等 |
| 社区成熟度 | 较新(2020年) | 非常成熟(2010年) | 中等(2019年) |
| 兼容性 | 兼容 .nvmrc 文件 | 原生支持 | 不依赖 .nvmrc |
| 包管理 | 使用 npm/yarn/pnpm | 使用 npm/yarn/pnpm | 🔥 内置包管理(Pin 功能) |
| 设计理念 | 快速版本切换 | 灵活的版本管理 | 🎯 "无缝"开发体验 |
| 全局包管理 | 传统方式 | 传统方式 | ✨ 每个项目独立缓存 |
| 配置复杂度 | 低 | 中等 | 低 |
| 企业支持 | 社区驱动 | 社区驱动 | ✅ 有商业公司支持 |
六、常见问题
1. 命令找不到
确保已正确配置环境变量并重启终端:
bash
# 检查 fnm 是否安装
fnm --version
# 重新加载配置
source ~/.zshrc # 或 ~/.bashrc
2. 权限问题(Linux/macOS)
bash
# 确保 fnm 有执行权限
chmod +x /usr/local/bin/fnm
3. 切换版本后 npm 全局包丢失
每个 Node 版本有独立的 npm 全局包目录,需要重新安装:
bash
fnm use 18.17.0
npm install -g <package-name>
4. 如何更新 FNM
bash
# 使用 winget(Windows)
winget upgrade Schniz.fnm
# 使用 brew(macOS)
brew upgrade fnm
# 重新运行安装脚本
curl -fsSL https://fnm.vercel.app/install | bash