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

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优维科技荣获第二届中国赛宝信息技术应用创新优秀解决方案三等奖

近日&#xff0c;“第二届中国赛宝信息技术应用创新优秀解决方案”评选活动圆满结束。优维科技所提交的《Hyperlnsight超融合持续观测解决方案》、《EasyOps一体化运维平台》从全国近300份申报方案中脱颖而出&#xff0c;荣获2023中国赛宝信息技术应用创新优秀解决方案奖。 本…

持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚

目录 一、实验 1.环境 2. GitLab 共享库新建HELM CI流水线 3.Jenkins新建HELM CI流水线 5.Jenkins构建前端项目 6.GitLab 共享库新建HELM CD流水线 7.Jenkins新建HELM CD流水线 8.HELM完成前端项目应用发布与回滚 9.Jenkins再次构建前端项目 10.HELM再次完成前端项目…

Leetcode—179.最大数【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—179.最大数 算法思想 实现代码 其中sort的lambda自定义排序策略参考自官方文档 class Solution { public:string largestNumber(vector<int>& nums) {string ans;vector<string> strs;for(auto num: …

【离散数学】——期末刷题题库(图论应用题)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

10 Vue3中v-html指令的用法

概述 v-html主要是用来渲染富文本内容&#xff0c;比如评论信息&#xff0c;新闻信息&#xff0c;文章信息等。 v-html是一个特别不安全的指令&#xff0c;因为它会将文本以HTML的显示进行渲染&#xff0c;一旦文本里面包含一些恶意的js代码&#xff0c;可能会导致整个网页发…

Leetcode 1005 K 次取反后最大化的数组和

题意理解&#xff1a; 有k次对元素取反的次数&#xff0c;要求k次取反&#xff0c;消耗完&#xff0c;且使最后的数组和最大。 解题思路&#xff1a; 采用贪心的思路来解题。则需要定义局部最优解和全局最优解。 全局最优解&#xff1a;最终的数组和最大 则我们需要保证绝对值大…

如何设计树形结构

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 前置知识&#xff1a;前…

UE5 C++(八)— 创建Actor、添加组件

文章目录 Actor和组件介绍Actor组件&#xff08;Component&#xff09; 在蓝图中创建Actor&#xff0c;添加组件在C中创建Actor&#xff0c;添加组件 Actor和组件介绍 Actor 详细介绍可以去看 Actor和几何体官方文档 还有大钊的这篇文章《InsideUE4》GamePlay架构&#xff0…

【算法与数据结构】135、LeetCode分发糖果

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题的思路是要相比较一边&#xff0c;然后在比较另外一边&#xff0c;左右两边一起比较的代码非常难写…

配置BGP的基本示例

一、组网需求&#xff1a; 需要在所有Switch间运行BGP协议&#xff0c;SwitchA、SwitchB之间建立EBGP连接&#xff0c;SwitchB、SwitchC和SwitchD之间建立IBGP全连接。 请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中&#xff0c;如果用交换机的VLAN…

谷歌手机安装证书到根目录

1、前提你已经root&#xff0c;安装好面具 2&#xff0c;下载movecert模块&#xff0c;自动帮你把证书从用户证书移动成系统证书 视频教程&#xff0c;手机为谷歌手机 https://www.bilibili.com/video/BV1pG4y1A7Cj?p11&vd_source9c0a32b00d6d59fecae05b4133f22f06 软件下…

持续集成交付CICD:基于ArgoCD 的GitOps 自动化完成前端项目应用发布与回滚

目录 一、实验 1. 环境 2. K8S master节点部署Argo CD 3.基于ArgoCD 实现GitOps &#xff08;同步部署文件&#xff09; 4.基于ArgoCD 实现GitOps &#xff08;同步HELM文件&#xff09; 二、问题 1. ArgoCD 连接K8S集群状态为 Unknown 2.ArgoCD 创建application失败 …

〖大前端 - 基础入门三大核心之JS篇(58)〗- 面向对象案例

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…

Linux(一)Linux理论

文章目录 一、Linux概述1.1 体系结构1.1.1 Linux内核1.1.2 用户态与内核态1.1.3 交换空间1.1.4 CLI和GUI 1.2 开机启动过程1.3 系统运行级别1.4 Linux进程1.4.1 Linux进程通信的方法1.4.2 Linux进程状态 二、文件2.1 Linux文件系统2.2 目录结构2.3 绝对路径和相对路径2.4 日志文…

[SWPUCTF 2021 新生赛]caidao

打开环境 这显示的就是一句话木马呗&#xff0c;直接用中国蚁剑连接&#xff0c;密码是wllm 根目录找到flag

Python Opencv实践 - 手势音量控制

本文基于前面的手部跟踪功能做一个手势音量控制功能&#xff0c;代码用到了前面手部跟踪封装的HandDetector.这篇文章在这里&#xff1a; Python Opencv实践 - 手部跟踪-CSDN博客文章浏览阅读626次&#xff0c;点赞11次&#xff0c;收藏7次。使用mediapipe库做手部的实时跟踪&…

c++输出简单日志带日期时间功能

最近项目需要简单输出日志&#xff0c;用巨大的日志类未免繁琐&#xff0c;于是写了这个简单的日志函数&#xff0c;带日期&#xff0c;MFC下可以直接使用。 直接上代码&#xff1a; template <typename T> std::string ConvertToStringS(T value) {std::stringstream …

nginx转发ingress-nginx问题记录

背景 想直接通过域名访问k8s上的服务. 想到k8s上可以直接通过ingress配置. 不过ingress默认启动的端口3xxxxx. 一般不可能让用户访问我们的服务加上端口. 所以现在要解决直接通过80端口访问ingress的问题. 方案 修改ingress-nginx端口(这个是在网上搜到的方案, 但未选择) 这…

【数据结构和算法】定长子串中元音的最大数目

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 方法二&#xff1a;滑动窗口优化版 三、代码 3.1 方法一&#xf…

Spring Boot构建项目常用注解

忙着去耍帅&#xff0c;后期补充完整.....................................