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

在项目中使用Volta控制node版本

在项目中使用Volta控制node版本

前端的技术很多年前就已经是井喷的状态了,基本每一年都有技术的迭代,而node作为前端基石之一也是一年一个样,这就导致了不同年代的版本使用不同的项目会经常出问题,高版本的node无法用于老的项目。之前大家的解决方案都是nvm,这里我给大家推荐一下Volta

一、为什么会需要Volta

起初Volta只是我电脑安装nvm有问题的替代方案,但在使用过程中我认为Volta是nvm的完美替代者,它能很好的解决一些nvm的痛点。

1.不同的项目需要频繁的切换node版本

假设我们有三个项目,一个是老的项目,一个是需要迁移的新的项目,还有一个是组件库或者别的什么项目,这三个项目是不同时期的产物,假设老的项目版本要求是node@14,新的项目是node@16,组件库的要求是node@18,这样我们在启动这些项目的时候就需要频繁的切换node的版本。

Volta就不会出现这种情况,当我们使用下面的命令时:

$ volta pin node@14

在项目的package.json文件中会出现如下配置:

  "volta": {"node": "14.21.3"}

Volta会自动选择你指定的大版本下的最优版本,有了这个配置后Volta会自动使用这个版本去运行该项目无需手动切换node版本。

2.统一管理node版本,无需保存对应项目的node版本记录

如果使用nvm进行node版本管理,我们需要清楚的知道项目所使用的node版本,所以一般会将node版本写在readme中,但是很难保证所有公司的每个项目都是按规范来的,而当我们使用Volta管理node版本的时候我们会将node版本限制在package.json中,这更像是一种强规范。

3.可以单独设置npm版本

npm一般都是和node绑定的,下载node的时候也会将对应版本的npm下载下来,所以nvm只能通过切换node版本来切换npm版本,而Volta可以单独设置npm的版本。

$ volta install npm@6.14.8
$ volta install yarn@1.19.2

但是需要注意的是,包管理器npmyarn都是基于node的包管理器,所以限制它们版本前必须先限制node的版本

$ volta pin node@16.20.2
$ volta pin yarn@1.19.2
$ volta pin npm@6.14.8 

生成的限制如下:

  "volta": {"node": "16.20.2","yarn": "1.19.2","npm": "6.14.8"}

二、Volta的优缺点

优点
  1. 使用rust构建,速度快
  2. 跨平台
  3. 可以强制指定node版本
  4. 全局安装的包和node版本相关联,不同版本之间的包会有隔离
缺点
  1. 对pnpm的兼容性不太好
  2. 社区支持有限,可能会出现未知问题
  3. Volta对32为node的支持可能会有些问题

三、Volta的常用命令

$ volta install node # 下载最新版本的node
$ volta install node@16.20.2 # 下载指定node
$ volta install node@14 # 下载指定大版本下的node
$ volta uninstall node@16.20.2 # 卸载指定node
$ volta pin node@16.20.2 # 限制项目node版本
$ volta list all # 查看volta下载的所有内容
$ volta list node # 查看volta下载的node

如果需要查看其他所有命令可以直接键入

$ volta

命令行会出现Volta所支持的所有命令。

四、Volta的安装

1.下载

[Volta中文网站](Volta (jikun.dev))和Volta官网都有如何下载安装的步骤,这里给出下载链接https://github.com/volta-cli/volta/releases/download/v1.1.1/volta-1.1.1-windows-x86_64.msi。

2.安装

下载Volta后我们双击安装,一直next即可,需要注意的是Volta无法更改安装目录,默认会安装在C盘,其实此时Volta安装后就可以使用了,但是可能会有人觉得在C盘有点膈应,所以我们可以手动移动Volta文件夹到其他盘,这其实有点像Google Chrome。

3.文件夹移动

直接在C盘中找到Volta文件夹,然后直接将整个文件夹剪切到其他盘中。剪切后使用Volta应该会出现Volta不是一个命令的问题,所以这个时候我们需要更改一下环境变量。

4.设置环境变量

打开环境变量设置,首先新建用户环境变量和系统变量,两个变量变量名和值都是一样的,变量名为**VOLTA_HOME,值为剪切后的Volta文件夹路径,我这里是D:\Volta**

然后在用户变量和系统变量中找到Path,然后新建点击新建并输入**%VOLTA_HOME%**

当然如果最开始安装Volta的时候如果给予了权限那么Volta应该是有默认的环境变量的,那么我们将上面新建的操作更改为替换默认的Volta环境变量即可。

需要注意的是:有人可能在最开始就有设置node的环境变量,如果Volta的环境变量在node的环境变量后面那么我们使用node的时候默认还是会走的node而不是Volta下载的node

如果我们在cmd中键入Volta出现如下显示时代表Volta就可以正常使用了

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【css】html 标初始化CSS样式(初学者必看)
  • VUE之重定向redirect
  • flutter 导出iOS问题3
  • PyTorch 统计属性-Tensor基本操作
  • ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的MPAM
  • android 异屏同显二.
  • 方差,标准差,CPK指标数据分析 (使用SQL做数据分析)
  • Mongodb使用$<identifier>过滤更新数组元素
  • 高通Android开关机动画踩坑简单记录
  • 【QT】QSettings读取中文乱码
  • 小程序外卖开发中的关键技术与实现方法
  • Android WebSocket长连接的实现
  • winhttp劫持dll
  • 文字悬停效果
  • PCIE的吞吐量如何计算和记忆诀窍?
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 08.Android之View事件问题
  • 10个最佳ES6特性 ES7与ES8的特性
  • 2017-09-12 前端日报
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • idea + plantuml 画流程图
  • Java,console输出实时的转向GUI textbox
  • markdown编辑器简评
  • miaov-React 最佳入门
  • spring-boot List转Page
  • 第2章 网络文档
  • 给新手的新浪微博 SDK 集成教程【一】
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 如何设计一个比特币钱包服务
  • 事件委托的小应用
  • AI算硅基生命吗,为什么?
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​如何在iOS手机上查看应用日志
  • !$boo在php中什么意思,php前戏
  • #DBA杂记1
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (WSI分类)WSI分类文献小综述 2024
  • (备份) esp32 GPIO
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (简单) HDU 2612 Find a way,BFS。
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)