从 nvm 到 fnm:一次 Node 包管理工具的进化之旅

前沿

在前端开发中,Node.js 的版本管理是每位开发者绕不开的问题。随着项目的复杂性提升,时常需要在多个Node版本之间来回切换。长期以来,nvm 一直是最常见的解决方案,但在实际使用中,nvm 的一些局限性也逐渐显现出来。而近几年异军突起的fnm (Fast Node Manager),以其轻量、高速、跨平台等特性,成为越来越多开发者的新宠(当然也有其他的比如:volta 、asdf 等,但综合使用下来fnm 更推荐)。而本文则将带你从nvm 出发,走进fnm 的世界,理解它们的安装过程 、使用命令 及其区别所在,帮助你完成这次的工具进化之旅。

一、什么是nvm和fnm ?

nvm(Node Version Manager)

  • 老牌 Node.js版本管理工具(使用最为广泛),提供了可靠的 Node.js 版本管理
  • 通过Bash编写,支持Unix系统(如macOS 和 Linux),也可以通过shell在Windows上使用需要衍生工具(如nvm-windos,这里是用Go编写的)

fnm(Fast Node Manager)

  • 较为新,通过Rest编写,启动和切换速度极快,以速度闻名
  • 原生支持 macOS、Linux和Windows(通俗易懂就是支持跨平台
  • 内存占用低,支持 .node-version 、.nvmrc等版本文件自动切换

二、安装方式

安装nvm

  • 在macOS/Linux的终端中使用以下命令
bash 复制代码
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

或者使用wget

bash 复制代码
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
  • 安装完成之后,在**~/.bashrc** 、~/.zshrc 中添加一下内容
bash 复制代码
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
  • 综上完成后,请在终端运行
bash 复制代码
source ~/.bashrc 或 source ~/.zshrc 使配置生效
// 执行以下命令查看安装是否成功
nvm --version

安装fnm

  • 所有系统(推荐使用curl安装)
bash 复制代码
curl -fsSL https://fnm.vercel.app/install | bash
  • 使用 Homebrew(macOS)
bash 复制代码
brew install fnm
// 可以将初始化命令添加到 .bashrc或.zshrc中
ecal "$(fnm env)"
// 安装完成后,若有如下报错
![Snipaste_2025-06-12_09-12-14.png](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/76a3d98265fd49808acddf9c5da8155e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg6YWG6YO95aSn5bid:q75.awebp?rk3s=f64ab15b&x-expires=1750295664&x-signature=7g2Pni6crlE%2BT1P%2Br8QycRkBaW4%3D)
// 则需要执行以下命令
fnm env --use-on-cd | Out-String | Invoke-Expression
  • windows 可以通过Shell安装
bash 复制代码
winget install Schniz.fnm 或 scoop install fnm 、choco install fnm
// 安装完成后需要配置环境变量(可以去网上搜一下非常多)
// 配置完环境变量后,查看是否成功
fnm --version

三、使用方法对比

操作 nvm命令 fnm命令
查看已安装版本 nvm ls fnm list
查看远程版本 nvm ls-remote fnm list-remote
安装指定版本 nvm install <版本号> fnm install <版本号>
切换版本 nvm use <版本号> fnm use <版本号>
设置默认版本 nvm alias default <版本号> fnm default <版本号>
卸载版本 nvm uninstall <版本号> fnm uninstall <版本号>
自动切换 .nvmrc 需手动执行 nvm use (也可以配置相关文件内容) 自动检测并切换

四、功能差异与优势分析

条件 nvm fnm
编写语言 Bash(Shell) Rust
启动速度 慢(依赖shell解析) 快(原生编译)
跨平台支持 macOS/Linux(原生)、window(通过第三方工具如:nvm-windows) macOS/Linux/windows(原生)
内存占用 中等 低
自动切换.nvmrc 支持 手动使用配置 自动切换
安装Node 是 是
安装npm 随node一起 随node一起
插件支持 用户群体多,社区资源充足,插件较少 官方和社区非常活跃

五、为什么推荐使用 fnm ?

  1. 极速性能:启动与切换版本几乎瞬时完成,对于频繁构建与切换项目的开发者及其友好
  2. 更好的跨平台支持:无需为 Windows 安装额外版本管理工具,一套搞定
  3. 自动切换版本 :识别 .nvmrc 、.node-version 等文件,自动切换版本
  4. 简洁配置 :安装后只需 eval "$(fnm env)" 便无需其他配置

六、最后

随着Node.js的生态环境不断演进,推动着周边工具的更新迭代。虽然 nvm 功能成熟,使用比较久,但现在开发需求下,它的速度和平台支持已经逐渐落后。而fnm 的新起,正好满足这一方面的需求,使得开发者的效率显著提高。如你还在使用 nvm 的话,不妨尝试一下 fnm叭,也许会彻底改变你的开发流程。让我们一起向着更快、更优雅的工具迈进吧~

相关推荐
陈随易3 小时前
副业搞钱点子之收入查看器
前端·后端
Profile排查笔记3 小时前
浏览器指纹逆向怎么分析:从网络请求追踪到 JavaScript 采集链
前端·人工智能·后端·自动化
hudie7654 小时前
LikeShop 二开最常改的 5 个文件(附改前改后对比)
前端·uni-app·php·个人开发
qetfw4 小时前
Bash 函数与流程控制:read、if、for、case 验证
linux·前端·javascript·bash
鬼手点金5 小时前
从 API 消息到模型 Token:Chat Template
java·前端·javascript·数据库·人工智能·深度学习·1024程序员节
Shadow(⊙o⊙)5 小时前
LangChain 自定义工具全解析:从 @tool 到 bind_tools 的完整调用链路
java·服务器·前端·1024程序员节
小poop6 小时前
HTML 基础入门:从结构到常用标签详解
前端
jiangliushi66 小时前
GPT-6.1 Sol 免费用:PowerShell 装 Codex 报“禁止运行脚本 npm.ps1”?一条命令解决
前端·gpt·npm
计算机魔术师6 小时前
日均500万亿词元,国内推理速度翻倍却仍落后国外——差距卡在哪
前端
excel6 小时前
用 Node.js 搭建一套可持续获客的 SEO 内容系统:前端工程师 30 天实战方案
前端·后端