当前位置: 首页 > news >正文

还在用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。

结语

🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏✍️评论支持一下博主~  

相关文章:

  • 【C语言】自定义类型——枚举、联合体
  • 【Android Studio】各个版本下载地址
  • Springboot访问html页面
  • ansible在ubuntu下的安装和使用
  • Android Studio: 解决Gradle sync failed 错误
  • Opencv 入门三(视频滑动条窗口)
  • app设置为HomeLauncher后,如果进行adb install安装,界面会黑屏问题排查记录
  • SVN搭建指导
  • c语言:求算数平均数|练习题
  • 机器学习之逻辑回归,一文掌握逻辑回归算法知识文集
  • 回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)
  • 【HarmonyOS开发】ArkUI实现下拉刷新/上拉加载
  • drf知识--01
  • 隐藏通信隧道技术——防御SSH隧道攻击的思路
  • QT GUI代码大全(MainWindow, QFile, QPainter, QGraphicsItem/Scene/View)
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • avalon2.2的VM生成过程
  • CentOS7简单部署NFS
  • codis proxy处理流程
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Lsb图片隐写
  • magento2项目上线注意事项
  • nginx 负载服务器优化
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • supervisor 永不挂掉的进程 安装以及使用
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 程序员该如何有效的找工作?
  • 飞驰在Mesos的涡轮引擎上
  • 和 || 运算
  • 如何使用 JavaScript 解析 URL
  • 设计模式走一遍---观察者模式
  • 微信小程序填坑清单
  • 延迟脚本的方式
  • 原生JS动态加载JS、CSS文件及代码脚本
  • mysql面试题分组并合并列
  • Prometheus VS InfluxDB
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 交换综合实验一
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​批处理文件中的errorlevel用法
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (70min)字节暑假实习二面(已挂)
  • (8)STL算法之替换
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (三十五)大数据实战——Superset可视化平台搭建
  • .apk 成为历史!
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验