FNM (Fast Node Manager) 安装使用教程

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