作为前端/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之前,建议先做好以下准备,避免冲突:

  1. 如果之前安装过nvm,无需卸载(可共存),但建议暂时关闭nvm的自动激活(避免版本切换冲突);

  2. 如果本地已安装Node.js(非nvm管理),建议先卸载,避免版本混乱;

  3. 确保你的终端正常运行(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已安装的版本,迁移步骤非常简单:

  1. 先按照上面的方法安装fnm,并完成配置;

  2. 执行以下命令,让fnm识别nvm已安装的版本: fnm import --from nvm

  3. 导入完成后,执行 fnm ls,就能看到nvm之前安装的所有版本,直接切换使用即可;

  4. (可选)如果想彻底卸载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版本,把更多时间花在开发上吧!如果在使用过程中遇到其他问题,欢迎在评论区留言交流~

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐