当前位置:首页 > 技术分析 > 正文内容

还在用nvm管理Node.js版本?快试试volta吧,爽

ruisui884个月前 (02-03)技术分析25

Node.js是现在前端开发离不开的编程环境,而Node.js的更新也十分频繁,尽管Node.js向下兼容,但是不同工具和项目依然存在不兼容的版本问题,于是在同一台主机安装不同版本的Node.js成了一个必不可少的操作。

长久以来,nvm就是多个Node版本切换的必备工具,主要是支持Linux和MacOS系统,不支持多系统跨平台,在Windows系统不兼容,后来又单独出了一个nvm-Windows版本才能在Windows系统使用。

不过前端的世界非常卷,如今Node.js的版本管理工具变得非常丰富,有nvm、nvs、fnm还有volta等,比如Node.js官网就展示了不同工具的使用方法。

nvm虽然很经典,但是也有不足,比如不支持在不同项目自动切换版本,也不支持同时支持不同版本,如果两个项目使用不同Node版本需要进行手动切换,在新出的Node版本工具里,有两个推荐的工具:fnmvolta,这两个都是Rust语言开发的,效率非常高,fnm还是Node.js官网推荐的方法。

那选择fnm还是选择volta呢?我的选择是volta

  • Volta可以自动安装所需的 Node.js 版本,而不需要手动管理。
  • voltafnm安装简单,fnm安装还需要修改环境变量,且在Windows系统还得修改PowerShell文件,而volta一个命令就完全安装好了,不需要再去进行任何手动设置。
  • Volta跨平台,支持Windows、Linux、MacOS、Unix,不需要手动配置环境变量。

macOS系统和Linux系统安装命令:

curl https://get.volta.sh | bash

Windows系统安装命令:

winget install Volta.Volta

Volta安装node版本方法(如18的版本,也可以指定具体的小版本号如18.20.5):

volta install node@18
  • volta不需要在项目下手动编辑.node-version版本环境变量文件,使用 volta pin node@<版本号>就可以自动修改版本配置字段到package.json,然后就自动管理Node版本了,无须手动处理任何操作,就是说这个项目只要在Volta环境下,再次打开项目也不需要进行版本切换的操作,甚至在其它装了Volta环境的电脑上也不需要手动操作,适合Git协作同步项目,一切都会由Volta进行管理,也不需要修改代码编辑器的插件或者配置项。

volta在项目目录下执行命令来使用指定版本(如使用Nodejs18):

volta pin node@18
  • volta支持node、npm/yarn/pnpm的工具管理和执行。
  • 开发工具支持,WebstormVscode终端等都支持,自动识别当前Node.js项目的版本,不需要特定配置和处理。

本来在Nodejs官网官方的下载界面只展示fnm没有展示Volta以为fnm更好,其实亲自使用下来,Volta更符合我的需求,也更简单方便。

当然Volta也有缺点,Volta安装的node环境不能使用node 16版本以后增加的corepack命令,不过这个命令我从来没用上过,可以忽略,如果真要使用这个命令可以使用 volta which node 命令查看安装位置,进入安装位置可以看到corepack命令,在那执行命令也行。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1143.html

标签: nodejs更新
分享给朋友:

“还在用nvm管理Node.js版本?快试试volta吧,爽” 的相关文章

vue项目-父页面数据变化使子页面更新的几种情况

当操作页面时候,特别是增删改操作之后,数据会有所改变,这个时候我们希望组件中的数据要和最新数据一致,就需要重新更新渲染。以下是针对几种不同情况下方式:一.子页面调用接口后重新渲染1.使用ref方式父组件中用ref=“xxx” 来声明子组件,然后通过在父组件值改变的地方来调用子组件中的方法this.$...

gitlab 分支保护设置

一、功能描述代码管理中管理,我们把稳定的分支设置为保护,可以防止其他人员误操作(例如删除,合并,推送代码等)。二、Gitlab配置步骤1 点击项目Repository标签2.点击Expand标签3.配置如下:默认master是被保护的,而且只有维护人员具有推送和合并权限。设置保护分支,这里的beta...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

前端路由简介以及vue-router实现原理

作者:muwoo 来源:https://zhuanlan.zhihu.com/p/37730038后端路由简介路由这个概念最先是后端出现的。在以前用模板引擎开发页面时,经常会看到这样http://www.xxx.com/login 大致流程可以看成这样:浏览器发出请求服务器监听到80 端口(或443...