几乎前端都用过node版本管理工具nvm,但可能你没听说过fnm, fnm全称是 Fast Node Manager,就是一款用来管理电脑上 Node.js 版本的工具,简单说就是帮你在不同 Node 版本之间快速切换,解决项目依赖版本冲突的问题,主打一个快、轻、跨平台。
一、背景:为什么会出现fnm?
做前端、Node开发的都知道,不同项目依赖的 Node 版本不一样,老项目可能要 Node14,新项目要 Node20,总不能装了卸、卸了装吧?于是就有了 Node 版本管理工具。
但之前主流的工具都有槽点:nvm 启动慢、切换卡顿,Windows 系统适配还拉胯;n 工具只适配 Mac/Linux,Windows 用不了,而且两者都有点笨重,占内存、响应慢。
fnm 就是为了解决这些痛点诞生的开源工具,开发者就是想做一个跨平台、启动秒响应、操作简单的版本管理器,让大家切换 Node 版本不用等,全系统都能用。
二、技术框架:fnm靠什么做到又快又稳?
fnm 的底层逻辑很纯粹,没有花里胡哨的冗余设计,核心技术点用大白话讲就是这几点:
-
语言底层:Rust 编写:Rust 是出了名的运行快、占内存小,编译后是原生二进制文件,启动、切换版本都是毫秒级,比老工具的脚本运行快十几倍,这是它“快”的核心原因。
-
轻量无依赖:整个工具就是单个文件,不用额外装其他运行环境,下载安装一步到位,不占磁盘空间,也不会拖慢系统。
-
跨平台原生适配:完美支持 Mac、Windows、Linux 三大系统,连 WSL(Linux子系统)也能无缝兼容,不用像 nvm 那样在 Windows 上折腾兼容层。
-
环境变量切换机制:通过修改系统环境变量来切换 Node 版本,不改动系统原有配置,切换后立即生效,也不会污染全局环境。
-
智能缓存+版本锁定:下载过的 Node 版本会缓存起来,下次不用重复下载;还支持项目目录锁定版本,进文件夹自动切对应 Node,不用手动切换。
三、相关对比:fnm和nvm、n比,优势在哪?
直接做通俗对比,一看就懂,不用记复杂参数:
| 工具 | 优点 | 缺点 | 适合人群 | 相关文档 |
|---|---|---|---|---|
| fnm | 极速响应、跨平台全兼容、轻量无依赖、支持目录自动切版本、内存占用极低 | 生态比nvm小一点,但日常功能完全够用 | 全平台开发者,追求效率、嫌老工具慢的人 | fnmnode.com |
| nvm | 生态成熟、教程多、功能全面 | 启动慢、切换卡顿、Windows适配差、占内存 | 习惯老工具、只在Mac/Linux开发的人 | nvmnode.com |
| n | 操作简单、轻量 | 不支持Windows,功能单一 | 纯Mac/Linux开发者,只做基础版本切换 |
总结:日常开发选fnm就够了,全平台通用、速度拉满,没什么硬伤。
四、使用方法:零基础上手,几步搞定
fnm 操作极其简单,全程命令行搞定,记几个常用命令就行,不用复杂配置。
1. 安装fnm(各系统通用)
Windows(PowerShell运行):
winget install Schniz.fnm
Mac/Linux(终端运行):
curl -fsSL https://fnm.vercel.app/install | bash
安装完关闭重启终端,输入fnm --version,显示版本号就是装好了。
2. 常用核心命令(记这几个就够)
-
查看可安装的Node版本:
fnm list-remote(能看到所有官方Node版本) -
安装指定Node版本(比如装20.10.0):
fnm install 20.10.0 -
安装最新LTS稳定版:
fnm install --lts -
查看本地已装的Node版本:
fnm list -
切换到指定Node版本:
fnm use 20.10.0 -
设置默认Node版本(开机自动用):
fnm default 20.10.0 -
项目目录锁定版本(进文件夹自动切):
fnm use 20.10.0 --project -
卸载不用的Node版本:
fnm uninstall 20.10.0
3. 日常使用流程
-
安装fnm → 装需要的Node版本
-
打开项目文件夹,用
fnm use切对应版本,或直接锁定项目版本 -
后续打开项目自动切换,不用重复操作
小提示:fnm 完全兼容 npm、yarn、pnpm 这些包管理器,切换Node版本后,对应的包管理器也会自动适配,不用额外配置。