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

Node.js 版本管理的最终答案 Volta

文章目录

    • 特点
    • 安装
      • Unix系统安装
      • Windows系统安装
    • 常用命令
      • volta fetch
      • volta install
      • volta uninstall
      • volta pin
      • volta list
      • volta completions
      • volta which
      • volta setup
      • volta run
      • volta help
    • 建议

目前对于前端项目的node 版本,我们一般会在项目 package.jsonengines 字段中声明项目所需的版本,同时采用 nvm 管理不同版本的 Nodejs 实例,但是如果要并行的项目很多,这就是一个痛点。

Volta就是为了解决这个问题而出现的,Node.js 版本管理的最终答案。

特点

Volta 采用 Rust 编写,性能非常棒。使用 Volta,你可以在手动给项目选择一个 Node 版本,然后再也不必关心它,甚至可以在不同项目目录之间任意切换,也不再需要手动在不同 Node 版本之间切换。

  • ⚡ 速度快 ⚡
  • 无缝的按项目版本切换
  • 跨平台支持,包括 Windows 和所有 Unix shell
  • 支持多个软件包管理器
  • 稳定的工具安装 — 无需在每次 Node 升级时重新安装!
  • 可扩展性钩子,用于特定站点的定制化

安装

Unix系统安装

在包括 macOS 在内的大多数 Unix 系统上,可以使用单个命令安装 Volta:

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

Windows系统安装

对于 Windows,推荐的安装 Volta 的方法是使用 winget

winget install Volta.Volta

更多内容可以去看Volta文档,目前生态肯定没那么完善,在windows系统上肯定处处碰壁,我的建议是先了解了解,之后确实有需要再去使用,当然铁头娃的话,也可以去用。

常用命令

volta 命令行二进制文件的命令参考,其语法如下:
在这里插入图片描述

volta fetch

volta fetch 这个命令用于将一个工具下载到本地机器上。它通常用于获取 Node.js 或 npm 的特定版本。

在这里插入图片描述

volta install

volta install 这个命令用于在您的工具链中安装一个工具。例如,您可以安装特定的 Node.js 或 npm 版本。

在这里插入图片描述

volta uninstall

volta uninstall 这个命令用于从您的工具链中卸载一个工具。如果您不再需要某个版本的 Node.js 或 npm,可以使用这个命令卸载它。

注意: 从 Volta 0.9.0 开始,还可以使用包管理器使用 npm uninstall --globalyarn global remove 卸载包

在这里插入图片描述

volta pin

volta pin 这个命令用于将项目的运行时或包管理器固定到特定的版本。这确保了所有团队成员在运行该项目时都使用相同的 Node.js 或 npm 版本。

注意:volta pin仅适用于节点和包管理器(例如npm或Yarn)。对于依赖项,应该使用 npm installyarn add 来更新所选版本。

在这里插入图片描述

volta list

volta list 这个命令用于显示当前的工具链。它列出了所有已安装的 Node.js 和 npm 版本。

在这里插入图片描述

volta completions

volta completions 这个命令用于生成 Volta 的自动补全脚本。这可以简化在命令行中使用 Volta 的过程。

在这里插入图片描述

volta which

volta which 命令将解包Volta的垫片并找到Volta将启动的实际二进制文件。

在这里插入图片描述

volta setup

volta setup 这个命令用于为当前用户或 shell 启用 Volta。它通常在安装 Volta 后运行,以确保 Volta 在您的环境中正确配置。

在 Unix 上,volta setup 将使用以下列表搜索配置文件脚本:

  • ~/.profile
  • ~/.bash_profile
  • ~/.bashrc
  • ~/.zshrc
  • ~/.config/fish/config.fish
  • PROFILE 环境变量的值

对于存在的每个文件,volta 安装程序将对其进行修改,以包含定义 VOLTA_HOME 的行,并将 $VOLTA_HOME/bin 添加到 PATH 环境变量中。如果当前 shell 的配置文件(使用 $SHELL 环境变量检测)不存在,则如果可能,将使用适当的内容创建该文件。

在 Windows 上,volta 设置将修改 User Path 环境变量以包含填充码目录 (%LOCALAPPDATA%\Volta\bin)

在这里插入图片描述

volta run

volta run 这个命令的主要用途是在不改变全局 Node.js 环境的情况下,运行特定版本的 Node.js

  • 任何没有直接指定版本的工具都将由 Volta 的常规上下文检测确定其版本,使用项目中的固定版本或默认版本。
  • –no-yarn 标志允许您覆盖该决定,并强制在运行命令时环境中不包含任何 yarn。同样,–bundled-npm 标志允许您强制 npm 使用与 Node 捆绑的版本并忽略任何自定义版本。
  • 还可以使用 --env NAME=value 选项指定要传递给命令的自定义环境变量。

注意:版本设置必须位于要运行的命令之前。命令之后的任何内容都将被视为参数,Volta 不会读取

在这里插入图片描述

volta help

打印 Volta 的帮助信息

在这里插入图片描述

建议

个人觉得目前保持观望,并且watch,生态并没那么完善,盲目使用会遇到很多问题。

就比如使用它设置项目的nodejs跟yarn的版本

volta pin node@20.16
volta pin yarn@1.19

volta会在package.json生成对应配置

"volta": {"node": "20.16.0","yarn": "1.19.2"
}

然后这个项目使用volta的人都会获得相同的版本

node --version # 20.16.0
yarn --version # 1.19.2

但是你怎么能保证所有人都安装volta呢,除非特别规范的团队可以做到,开发工具ide等等的统一,不然没使用volta的人还是得自己手动安装,

而且volta跟nvm是有冲突的,你必须先把nvm相关的东西卸载干净了再去使用

还有就是使用pnpm好像也有一些问题,具体没仔细看是啥。

相关文章:

Node.js 版本管理的最终答案 Volta

文章目录 特点安装Unix系统安装Windows系统安装 常用命令volta fetchvolta installvolta uninstallvolta pinvolta listvolta completionsvolta whichvolta setupvolta runvolta help 建议 目前对于前端项目的node 版本,我们一般会在项目 package.json 的 engines 字…...

蓝桥杯每日真题 - 第11天

题目:(合并数列) 题目描述(14届 C&C B组D题) 解题思路: 题意理解:给定两个数组,目标是通过若干次合并操作使两个数组相同。每次合并操作可以将数组中相邻的两个数相加&#xff…...

Vue vs React:两大前端框架的区别解析

在现代前端开发中,Vue.js 和 React.js 是两个最受欢迎的框架和库。我们常常面临选择它们的困惑。虽然这两者在本质上都是为了构建用户界面而设计的,但它们在设计理念、使用方式和生态系统等方面有着显著的区别。今天,我们将通过深入分析这两个…...

【树莓派raspberrypi烧录Ubuntu远程桌面登入树莓派】

提示:本文利用的是Ubuntu主机和树莓派4B开发板,示例仅供参考 文章目录 一、树莓派系统安装下载前准备工作下载安装树莓派的官方烧录软件imagerimager的使用方法 二、主机与树莓SSH连接查看数梅派IP地址建立ssh连接更新树莓派源地址 三、主机端远程桌面配…...

c# 调用c++ 的dll 出现找不到函数入口点

今天在调用一个设备的dll文件时遇到了一点波折,因为多c 不熟悉,调用过程张出现了找不到函数入口点,一般我们使用c# 调用c 文件,还是比较简单。 [DllImport("AtnDll2.dll",CharSet CharSet.Ansi)]public static extern …...

LInux——环境基础开发工具使用(正在更新中...)

1.软件包管理器 Linux下安装软件的方案: 1. 源代码安装 2. rpm包安装 3. 包管理器安装 --- yum/ apt (此图片来自于比特就业课课件) 1.1 操作生态系统 好的操作系统定义: 生态环境好 不同的操作系统根本是生态不同(…...

linux 内核asmlinkage关键字总结

1,看一下asmlinkage的定义 CPP_ASMLINKAGE __attribute__((regparm(0))) GCC中使用__attribute__((regparm(n)))指定最多可以使用n个寄存器(eax, edx, ecx)传递参数,n的范围是0~3,超过n时则将参数压入栈中(…...

⚡️如何在 React 和 Next.js 项目里优雅的使用 Zustand

前言 你是否曾感觉在 React 中管理状态简直是一场噩梦?如果你已经厌倦了不停地处理 props、context 和 hooks,那么现在是时候认识 Zustand 了。Zustand 是一个轻量级的状态管理库,它简化了你处理应用状态的方式。在这篇文章中,我…...

Pinpoint(APM)进阶--Pinot指标采集(System Metric/Inspector)

接上文 Pinpoint使用Pinot进行指标数据存储,Pinot流摄入需要Kafka 本文详解Kafka和Pinot的安装部署,以及Pinpoint的指标采集 Pinot 简介 Apache Pinot是一个实时分布式OLAP数据存储,专为低延迟、高吞吐量分析而构建,非常适合面…...

Mysql:使用binlog的一些常用技巧

1、如何查看binlog的存放路径 show variables like log% 执行结果: 2、如何清除binlog (1)按时间清除 purge binary logs before ‘2023-06-5 10:12:00’ (2)按文件文件名清除 purge binary logs to ‘mybinlog.0000…...

Electron 项目启动外部可执行文件的几种方式

Electron 项目启动外部可执行文件的几种方式 序言 在开发 Electron 应用程序时,有时需要启动外部的可执行文件(如 .exe 文件)。这可能是为了调用系统工具、运行第三方软件或者集成现有的应用程序。 Electron 提供了多种方式来启动外部可执行…...

前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)

文章目录 1. npm (Node Package Manager)2. Yarn (Yarn Package Manager)3. pnpm4. Bower5. Parcel总结 前端开发中常用的包管理器主要有以下几个: 1. npm (Node Package Manager) 简介: npm 是 Node.js 的默认包管理器,也是最广泛使用的包…...

Linux入门:环境变量与进程地址空间

一. 环境变量 1. 概念 1️⃣基本概念: 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里&#x…...

【Jenkins实战】Windows安装服务启动失败

写此篇短文,望告诫后人。 如果你之前装过Jenkins,出于换域账号/本地帐号的原因想重新安装,你大概率会遇上一次Jenkins服务启动失败提示: Jenkins failed to start - Verify that you have sufficient privileges to start system…...

web实操5——http数据详解,request对象功能

http请求数据 现在我们浏览器f12的那些是浏览器给http格式数据整理之后便于我们阅读的。 原始的http格式信息: 就是按照一定格式和符号的字符串: 请求行:格式如下图 请求头:一个个key,value数据,用,分割…...

C# 如何动态加载程序集

程序集的加载,默认是从当前目录下查找,如果当前目录查找不到,然后再去系统目录中查找,依然查找不到就会从环境变量中查找,如果依然找不到,则会抛出一个异常 FileNotFoundException。 托管代码中&#xff0…...

前端基础的讲解-JS(10)

作用域链 通过上节作用域我们知道,当我们声明一个函数时,程序会生成一个独立的作用域,如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域;根据 内部函数可以访问外部函数变量 的这种机制,用链…...

JNI整理总结

JNI JNI基础 JNI基础 JNI,java native interface,即java本地接口,是java调用本地化方法的接口,是为java编写本地方法,为jvm嵌入本地应用程序的标准化接口。首要目标是在给定的平台上采用java通过JNI调用本地化方法&am…...

aws中AcmClient.describeCertificate返回值中没有ResourceRecord

我有一个需求,就是让用户自己把自己的域名绑定我们的提供的AWS服务器。 AWS需要验证证书 上一篇文章中我用php的AcmClient中的requestCertificate方法申请到了证书。 $acmClient new AcmClient([region > us-east-1,version > 2015-12-08,credentials>[/…...

Spring Task详细讲解

✨Spring Task简介 Spring Task 是 Spring 提供的轻量级定时任务工具,也就意味着不需要再添加第三方依赖了,相比其他第三方类库更加方便易用。可以按照约定的时间自动执行某个代码逻辑。 使用场景: 信用卡每月还款提醒银行贷款每月还款提醒…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...