还在用nvm?来试试更快的node版本管理工具——fnm
前言
📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步!
🍅 个人主页:南木元元
目录
什么是node版本管理
常见的node版本管理工具
fnm是什么
安装fnm
macOS和Linux系统
使用脚本
手动安装
Windows系统
fnm的使用
安装和卸载
查看版本
使用指定版本
设置别名
结语
什么是node版本管理
Node.js是一个开源的、跨平台的 JavaScript 运行时环境,允许我们将js代码运行在服务端,在前端开发中具有十分重要的地位。
在计算机上安装 Node.js 时,通常会直接到nodejs官网进行下载安装,但是这会存在两个问题:
- node的版本迭代是很快的,必须定期检查更新是否可用,并且每次有更新可用时,都必须卸载旧版本重新安装新版本的node,会浪费时间和精力。
- 一台电脑上不能同时安装不同版本的node,这在某些情况下是个问题,例如,某个项目依赖于Node v16,而另一个应用使用Node v18
。
这就需要我们使用node版本管理工具,实现轻松地在node版本之间进行切换。
常见的node版本管理工具
如今市场上其实存在很多的node版本管理工具,比如nvm、n、nvs等,其中当属nvm最为流行。记得在2021年的时候,我也写过一篇nvm的安装和使用,时过境迁,nvm虽好,但是也有一些缺点:
- 下载
Node版本,速度较慢。 - 无法跨平台,在
window环境需要nvm-windows库,并且这个库不受官方支持。
而这些,fnm——也就是我们今天的主角,都能很好地解决。
fnm是什么
🚀 快速简单的 Node.js 版本管理器,用 Rust 构建。
下图来自fnm官网:

fnm的特点是:
- 跨平台支持(macOS、Windows、Linux)
- 使用 Rust 编写,速度快。
- 单文件,轻松安装,即时启动。
安装fnm
macOS和Linux系统
使用脚本
fnm团队捆绑了一个安装脚本,使下载软件变得轻而易举,终端使用如下命令一键安装:
curl -fsSL https://fnm.vercel.app/install | bash
此外,我们还可以自行安装。
手动安装
可以直接 brew install fnm安装:
brew install fnm
但需要配置Shell环境:
# 若自行安装,则需手动添加到 .zshrc 或 .bashrc
eval "$(fnm env --use-on-cd)"
Windows系统
Windows可以通过Winget、Scoop、Chocolatey等工具来安装:

也可以直接去发布页面下载对应的exe文件。

然后也需要配置对应的命令行环境。具体的安装过程还是比较繁琐的,这里就不展开了,可以参考文档或Windows上使用fnm安裝Node.js。
完成后,终端中输入fnm验证是否安装成功。
fnm
出现下面这个界面:

代表我们已经成功安装了!
注意:Windows安装比较麻烦,所以Windows建议使用Linux on Windows with WSL2,能避免非常多的问题,或者继续用nvm-windows。
fnm的使用
安装和卸载
安装指定版本的node:
fnm install 16.12.0
安装最新版本的node:
fnm install --latest
安装LTS版本的node:
fnm install --lts
使用uninstall来卸载指定版本的node:
fnm uninstall 16.12.0
查看版本
查看所有可下载的Node版本:
fnm ls-remote

查看本地安装的node版本:
fnm list

如上,我本地安装了14、16、18三个版本的node。
使用指定版本
设置全局默认版本:
fnm default 16.12.0
在当前Shell使用指定版本:
fnm use 16.12.0
设置别名
如果我们本地有很多项目,此时,我们就可以借助alias来为特定版本的Node起一个别名,不需要记住多个 Node版本。语法如下:
fnm alias <version> <name>
比如:
fnm alias 16.12.0 my-project
上面的命令将my-project别名分配给Node版本16.12.0。
结语
🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏、✍️评论,支持一下博主~
相关文章:
还在用nvm?来试试更快的node版本管理工具——fnm
前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 什么是node版本管理 常见的node版本管理工具 fnm是什么 安装fnm …...
【Hadoop精讲】HDFS详解
目录 理论知识点 角色功能 元数据持久化 安全模式 SecondaryNameNode(SNN) 副本放置策略 HDFS写流程 HDFS读流程 HA高可用 CPA原则 Paxos算法 HA解决方案 HDFS-Fedration解决方案(联邦机制) 理论知识点 角色功能 元数据持久化 另一台机器就…...
企业需要哪些数字化管理系统?
企业需要哪些数字化管理系统? ✅企业引进管理系统肯定是为了帮助整合和管理大量的数据,从而优化业务流程,提高工作效率和生产力。 ❌但是,如果各个系统之间不互通、无法互相关联数据的话,反而会增加工作量和时间成本…...
【vue】开发常见问题及解决方案
有一些问题不限于 Vue,还适应于其他类型的 SPA 项目。 1. 页面权限控制和登陆验证页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的。如果一个页…...
飞天使-k8s知识点3-卸载yum 安装的k8s
要彻底卸载使用yum安装的 Kubernetes 集群,您可以按照以下步骤进行操作: 停止 Kubernetes 服务: sudo systemctl stop kubelet sudo systemctl stop docker 卸载 Kubernetes 组件: sudo yum remove -y kubelet kubeadm kubectl…...
ZooKeeper 集群搭建
文章目录 ZooKeeper 概述选举机制搭建前准备分布式配置分布式安装解压缩并重命名配置环境配置服务器编号配置文件 操作集群编写脚本运行脚本搭建过程中常见错误 ZooKeeper 概述 Zookeeper 是一个开源的分布式服务协调框架,由Apache软件基金会开发和维护。以下是对Z…...
Meson:现代的构建系统
Meson是一款现代化、高性能的开源构建系统,旨在提供简单、快速和可读性强的构建脚本。Meson被设计为跨平台的,支持多种编程语言,包括C、C、Fortran、Python等。其目标是替代传统的构建工具,如Autotools和CMake,提供更简…...
【大模型AIGC系列课程 5-2】视觉-语言大模型原理
重磅推荐专栏: 《大模型AIGC》;《课程大纲》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经验分享,旨在…...
震惊!难怪别人家的孩子越来越聪明,原来竟是因为它
前段时间工作调动给孩子换了个新学校,刚开始担心她不能适应新学校的授课方式,但任课老师对她评价很高,夸她上课很专注。 为了训练孩子的专注力,作为家长可没少下功夫,画画,下五子棋等益智游戏的兴趣班没少…...
Linux操作系统(UMASK+SUID+SGID+STICK)
UMASK反掩码 如何查看反掩码:直接在终端窗口运行 umask root用户反掩码:0022 普通用户反掩码:0002 UMASK的作用:确定目录,文件的缺省权限值 以root身份创建目录,观察目录的9位权限值 以root身份创建普通文件…...
Java 中单例模式的常见实现方式
目录 一、什么是单例模式? 二、单例模式有什么作用? 三、常见的创建单例模式的方式 1、饿汉式创建 2、懒汉式创建 3、DCL(Double Checked Lock)双检锁方式创建 3.1、synchronized 同步锁的基本使用 3.2、使用 DCL 中存在的疑…...
【C语言】自定义类型之联合和枚举
目录 1. 前言2. 联合体2.1 联合体类型的声明2.2 联合体的特点2.3 相同成员的结构体和联合体对比2.4 联合体大小的计算2.4 判断当前机器的大小端 3. 枚举3.1 枚举类型的声明3.2 枚举类型的优点3.3 枚举类型的使用 1. 前言 在之前的博客中介绍了自定义类型中的结构体,…...
使用Mosquitto/python3进行MQTT连接
一、简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。 …...
JavaWeb笔记之前端开发HTML
一、引言 1.1HTML概念 网页,是网站中的一个页面,通常是网页是构成网站的基本元素,是承载各种网站应用的平台。通俗的说,网站就是由网页组成的。通常我们看到的网页都是以htm或html后缀结尾的文件,俗称 HTML文件。 …...
通过IP地址定位解决被薅羊毛问题
随着互联网的普及,线上交易和优惠活动日益增多,这也为一些不法分子提供了可乘之机。他们利用技术手段,通过大量注册账号或使用虚假IP地址进行异常操作,以获取更多的优惠或利益,这种行为被称为“薅羊毛”。对于企业和平…...
Leetcode 122 买卖股票的最佳时机 II
题意理解: 已知:一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格 如何哪个时间点买入,哪个时间点卖出,多次交易,能够收益最大化 目的:收益最大化 解题思路: 使用贪心…...
音频文件合成
音频文件合成 音频文件合成 http://ffmpeg.org/download.html https://blog.csdn.net/u013314786/article/details/89682800 http://www.360doc.com/content/19/0317/01/10519289_822112563.shtml https://chaijunkun.blog.csdn.net/article/details/116491526?spm1001.210…...
20231220将NanoPC-T4(RK3399)开发板的Android10的SDK按照Rockchip官方挖掘机开发板编译打包刷机之后启动跑飞
20231220将NanoPC-T4(RK3399)开发板的Android10的SDK按照Rockchip官方挖掘机开发板编译打包刷机之后启动跑飞 2023/12/20 17:19 简略步骤:rootrootrootroot-X99-Turbo:~/3TB$ tar --use-compress-programpigz -xvpf rk3399-android-10.git-20210201.tgz rootrootro…...
vivo 容器平台资源运营实践
作者:vivo 互联网服务器团队 - Chen Han 容器平台针对业务资源申请值偏大的运营问题,通过静态超卖和动态超卖两种技术方案,使业务资源申请值趋于合理化,提高平台资源装箱率和资源利用率。 一、背景 在Kubernetes中,容…...
ASP.NET Core面试题之Redis高频问题
🎈🎈在.NET后端开发岗位中,如今也少不了、微服务、分布式、高并发高可用相关的面试题🎈🎈 👍👍本文分享一些整理的Redis高频面试题🎉 👍👍机会都是给有准备…...
计算机毕业设计springboot基于的养老平台的设计与实现 SpringBoot架构下智慧养老综合服务系统的设计与实现 基于Java的社区养老数字化管理平台开发
计算机毕业设计springboot基于的养老平台的设计与实现(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。我国正加速步入老龄化社会,老年人口规模持续扩大,传…...
AutoGen Studio中的强化学习应用:智能决策系统开发
AutoGen Studio中的强化学习应用:智能决策系统开发 1. 引言 想象一下,你正在构建一个智能决策系统,需要让多个AI代理协同工作,像一支训练有素的团队一样做出复杂决策。传统方法需要大量编码和调试,但现在有了AutoGen…...
流水线设计避坑指南:什么时候该用?深度怎么选?看完这篇就懂了
流水线设计实战决策:吞吐率与硬件成本的黄金分割点 在芯片设计和FPGA开发领域,流水线技术就像一把双刃剑——用得好可以大幅提升系统性能,用得不当则可能造成资源浪费甚至引入新的瓶颈。我曾在一个图像处理芯片项目中,因为错误估计…...
认知雷达基础概念与核心理念总结
一、认知雷达的基础概念与核心理念认知雷达是一种全新的雷达技术范式,由 Haykin 和 Guerci 提出,借鉴了与知识相关的心理能力和认知过程的特性,核心理念是通过发射机与接收机之间持续且协调的反馈,让传感器算法根据实际运行环境和…...
Cherry Studio集成火山方舟模型实战:从接入到性能调优全解析
最近在项目中尝试将火山方舟的模型集成到 Cherry Studio 里,整个过程踩了不少坑,也总结了一些经验。今天就来和大家分享一下从接入到性能调优的完整实战过程,希望能帮到有同样需求的开发者。 1. 背景与痛点:为什么集成过程让人头疼…...
基于ChatGPT GPTs的AI辅助开发实战:从零构建智能代码生成器
背景痛点:传统开发流程中的效率瓶颈 作为一名开发者,我们每天都在与代码打交道。但你是否也经常遇到这些令人头疼的场景? 需求理解偏差:产品经理用自然语言描述了一个复杂功能,你花了大半天时间反复沟通,…...
OpenClaw性能监控:GLM-4.7-Flash响应延迟可视化方案
OpenClaw性能监控:GLM-4.7-Flash响应延迟可视化方案 1. 为什么需要监控OpenClaw性能 上周三凌晨两点,我被一阵急促的报警声惊醒。手机屏幕上显示着OpenClaw任务队列积压的警告——我的自动化内容发布流程卡在了"生成摘要"环节。这已经是本月…...
SpringBoot 仓储信息管理系统设计:基于效率提升的毕业设计实战
在准备毕业设计时,很多同学会选择开发一个仓储信息管理系统。这个选题很经典,因为它能综合运用数据库、Web开发、业务逻辑等多种知识。但我也发现,很多同学做出来的系统,功能虽然齐全,却常常忽略了“效率”这个关键点。…...
告别格式烦恼!3个让视频播放丝滑的小妙招
周末窝在沙发上追剧,结果播放器突然弹出"格式不支持"的提示;精心拍摄的旅行vlog想分享给朋友,却发现文件太大传不过去——这些视频格式的小麻烦,是不是让你头疼过?其实掌握几个实用技巧,就能让视…...
5个维度解析pymatgen:高效实用的材料科学计算与分析工具
5个维度解析pymatgen:高效实用的材料科学计算与分析工具 【免费下载链接】pymatgen Python Materials Genomics (pymatgen) is a robust materials analysis code that defines classes for structures and molecules with support for many electronic structure c…...
