告别nvm!fnm 极简入门教程:轻量高效管理Node.js版本
摘要:fnm(Fast Node Manager)是一款基于Rust开发的Node.js版本管理工具,相比传统的nvm具有更快速度、跨平台支持和更简单的配置等优势。本文详细介绍了fnm的安装方法(支持Windows/macOS/Linux)、常用命令(安装/切换/卸载版本、项目锁定等)、从nvm迁移的步骤以及常见问题解决方案。fnm完全兼容nvm命令,能自动识别.nvmrc文件,开发者可以无缝切换
作为前端/Node开发者,版本管理工具是必备神器——毕竟不同项目可能依赖不同版本的Node.js,轻则报错、重则项目跑不起来。此前大家常用nvm,但随着fnm的崛起,越来越多开发者选择“弃nvm用fnm”,核心原因就一个:更快、更轻、更省心。
今天就带大家从零上手fnm,从安装到熟练使用,再到nvm迁移,一篇搞定所有,新手也能快速上手!
一、为什么选fnm?(比nvm强在哪)
在说用法之前,先解答大家最关心的问题:为什么要放弃nvm,选择fnm?
fnm(Fast Node Manager)是用Rust编写的Node.js版本管理工具,主打“轻量、快速、跨平台”,对比nvm的优势非常明显:
-
速度碾压:Rust编写,启动、安装、切换版本的速度比nvm快好几倍,尤其是安装多个版本时,差距肉眼可见;
-
跨平台兼容:完美支持Windows、macOS、Linux,不像nvm在Windows上需要依赖WSL或额外安装,新手也能轻松适配;
-
命令兼容:大部分常用命令和nvm一致,从nvm迁移过来几乎不用记新命令,无痛过渡;
-
配置简单:无需复杂的环境变量配置,一键安装+简单初始化,就能直接使用;
-
体积小巧:安装包极小,不占用过多内存,运行无负担。
简单说:如果你嫌nvm慢、配置麻烦,或者需要跨平台使用,fnm绝对是最优解;即使是新手,也能快速上手,不用踩版本管理的坑。
二、前置准备(必看)
在安装fnm之前,建议先做好以下准备,避免冲突:
-
如果之前安装过nvm,无需卸载(可共存),但建议暂时关闭nvm的自动激活(避免版本切换冲突);
-
如果本地已安装Node.js(非nvm管理),建议先卸载,避免版本混乱;
-
确保你的终端正常运行(Windows推荐PowerShell,macOS/Linux推荐Terminal、iTerm2)。
三、fnm安装教程(跨平台,一步到位)
fnm支持三大系统,每种系统的安装方式都很简单,大家根据自己的系统选择对应方法即可。
1. Windows系统(推荐PowerShell)
Windows有两种安装方式,优先推荐winget(系统自带包管理器),简单快捷:
# 方式1:winget安装(推荐,无需手动配置)
winget install Schniz.fnm
# 方式2:scoop安装(已安装scoop的用户)
scoop install fnm
安装完成后,关闭当前终端,重新打开,输入 fnm --version,如果能显示版本号,说明安装成功。
2. macOS/Linux系统
两种安装方式,curl一键安装最便捷,适合大多数用户:
# 方式1:curl一键安装(推荐)
curl -fsSL https://fnm.vercel.app/install | bash
# 方式2:Homebrew安装(macOS用户,已安装brew)
brew install fnm
安装完成后,需要将fnm添加到shell配置(让终端每次启动都能识别fnm命令),执行以下命令即可:
# 适用于bash/zsh(大多数用户)
echo 'eval "$(fnm env --use-on-cd)"' >> ~/.bashrc # bash用户
# 或
echo 'eval "$(fnm env --use-on-cd)"' >> ~/.zshrc # zsh用户(如oh-my-zsh)
# 适用于fish终端
echo 'fnm env --use-on-cd | source' >> ~/.config/fish/config.fish
配置完成后,重启终端,输入 fnm --version,显示版本号即为安装成功。
四、fnm核心用法(新手必记,和nvm几乎一致)
fnm的命令设计非常友好,大部分常用命令和nvm完全相同,新手不用刻意记,用几次就熟练了。下面整理了最常用的10个命令,覆盖日常90%的使用场景。
1. 查看fnm版本(验证安装)
fnm --version
2. 安装指定版本的Node.js
可以安装具体版本(如20.12.0),也可以安装大版本(如20),fnm会自动安装该大版本下的最新稳定版:
# 安装Node.js 20(最新稳定版)
fnm install 20
# 安装具体版本(如20.12.0,适合项目固定版本)
fnm install 20.12.0
# 安装最新版Node.js
fnm install latest
# 安装最新LTS版(长期支持版,推荐生产环境使用)
fnm install lts
3. 切换Node.js版本
切换分为“临时切换”(仅当前终端生效)和“永久切换”(全局默认生效):
# 临时切换:仅当前终端使用Node 20(关闭终端后失效)
fnm use 20
# 永久切换:设置全局默认版本为Node 20(所有终端生效)
fnm default 20
4. 查看已安装的Node.js版本
fnm ls
执行后会显示所有已安装的版本,当前使用的版本会有标记(*)。
5. 卸载不需要的Node.js版本
对于不常用的版本,可以直接卸载,释放空间:
# 卸载Node 18版本
fnm uninstall 18
# 卸载具体版本(如18.17.0)
fnm uninstall 18.17.0
6. 查看当前使用的Node.js版本
fnm current
也可以直接用 node -v 查看当前Node版本,npm -v 查看npm版本。
7. 项目级版本锁定(重点!避免版本冲突)
这是fnm非常实用的功能,和Volta的项目锁定类似,能让不同项目使用不同的Node版本,无需手动切换。
# 进入项目目录后,执行以下命令,锁定当前项目的Node版本
fnm use 20 --local
# 或简写
fnm local 20
执行后,会在项目目录下生成一个 .nvmrc 文件(和nvm兼容),里面记录了该项目对应的Node版本。下次进入该目录时,fnm会自动切换到这个版本,再也不用手动切换版本了!
8. 取消项目级版本锁定
# 进入项目目录,执行以下命令,删除本地锁定
fnm local --unset
9. 查看可安装的Node.js版本
如果不知道有哪些可用版本,可以查看官方所有可安装的版本:
fnm ls-remote
10. 升级fnm本身
# 升级fnm到最新版本
fnm self-update
五、nvm迁移到fnm(无痛过渡,无需重新安装版本)
如果你之前用的是nvm,不用担心重新安装所有Node版本,fnm可以直接复用nvm已安装的版本,迁移步骤非常简单:
-
先按照上面的方法安装fnm,并完成配置;
-
执行以下命令,让fnm识别nvm已安装的版本:
fnm import --from nvm -
导入完成后,执行
fnm ls,就能看到nvm之前安装的所有版本,直接切换使用即可; -
(可选)如果想彻底卸载nvm,按照nvm的卸载教程操作即可,卸载后fnm的使用不受任何影响。
Tips:迁移后,之前nvm设置的全局版本、项目级 .nvmrc 文件,fnm都能直接识别,完全不用重新配置。
六、常见问题排查(新手必看)
使用过程中可能会遇到一些小问题,这里整理了最常见的3个问题及解决方案,帮你快速避坑。
问题1:终端输入fnm,提示“command not found”
原因:fnm的环境变量没有配置成功。
解决方案:重新执行“安装步骤”中的shell配置命令,然后重启终端;如果还是不行,检查是否输错了配置命令(比如zsh用户误写为.bashrc)。
问题2:切换版本后,node -v显示的还是旧版本
原因:可能是之前手动安装过Node.js,或者nvm的自动激活没有关闭,导致版本冲突。
解决方案:卸载手动安装的Node.js,关闭nvm的自动激活(删除nvm配置中关于自动激活的语句),然后重启终端,重新切换版本。
问题3:安装Node版本时,速度很慢或失败
原因:默认使用官方源,国内网络访问较慢。
解决方案:配置国内镜像(淘宝源),执行以下命令:、
# 配置淘宝镜像(临时生效)
fnm install 20 --mirror https://npm.taobao.org/mirrors/node/
# 配置淘宝镜像(永久生效)
echo 'export FNM_NODE_MIRROR=https://npm.taobao.org/mirrors/node/' >> ~/.bashrc # bash用户
# 或
echo 'export FNM_NODE_MIRROR=https://npm.taobao.org/mirrors/node/' >> ~/.zshrc # zsh用户
七、总结
fnm作为nvm的替代工具,凭借“轻量、快速、跨平台、命令兼容”的优势,已经成为越来越多开发者的首选。无论是新手还是老开发者,都能快速上手,轻松解决Node.js版本管理的痛点。
核心总结:
-
新手入门:安装→配置→用fnm install安装版本→fnm use切换版本;
-
团队协作/多项目:用fnm local锁定项目版本,避免冲突;
-
nvm迁移:一键导入已安装版本,无痛过渡。
从今天开始,抛弃繁琐的nvm,用fnm高效管理Node.js版本,把更多时间花在开发上吧!如果在使用过程中遇到其他问题,欢迎在评论区留言交流~
更多推荐



所有评论(0)