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

ops/2024/11/20 22:59:47/

文章目录

目前对于前端项目的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_40">volta fetch

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

在这里插入图片描述

volta_install_45">volta install

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

在这里插入图片描述

volta_uninstall_49">volta uninstall

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

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

在这里插入图片描述

volta_pin_55">volta pin

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

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

在这里插入图片描述

volta_list_61">volta list

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

在这里插入图片描述

volta_completions_65">volta completions

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

在这里插入图片描述

volta_which_69">volta which

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

在这里插入图片描述

volta_setup_74">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_91">volta run

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

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

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

在这里插入图片描述

volta_help_102">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好像也有一些问题,具体没仔细看是啥。


http://www.ppmy.cn/ops/135346.html

相关文章

lua调用C语言函数,在函数中进行类型检查

使用lua_is*函数族进行检查(除了lua_type之外的另一种方式) Lua C API提供了一系列lua_is*函数,如lua_isnumber、lua_isstring、lua_isboolean等,用于检查栈上元素的类型。示例代码如下,假设我们有一个C函数&#xff0…

Deep-Live-Cam -面部交换、视频深度伪造

文章目录 一、关于 Deep-Live-Cam免责声明 二、安装(Windows/Nvidia)安装(手动)基本安装(CPU) GPU加速(可选)CUDA执行提供商(Nvidia)CoreML执行提供商&#x…

Linux系统Centos设置开机默认root用户

目录 一. 教程 二. 部分第三方工具配置也无效 一. 教程 使用 Linux 安装Centos系统的小伙伴大概都知道,我们进入系统后,通常都是自己设置的普通用户身份,而不是 root 超级管理员用户,导致我们在操作文件夹时往往爆出没有权限&am…

Java 设计模式 详解

在Java开发中,设计模式是一种常见的、成熟的解决方案,用于应对特定的设计问题和复杂性管理。以下是一些常用的设计模式,它们可以分为三类:创建型模式、结构型模式和行为型模式。 一、创建型模式 创建型模式主要负责对象的创建&a…

Android开发实战班 - Android开发基础之 Kotlin语言基础与特性

Kotlin 是一种现代化的编程语言,由 JetBrains 开发,现已成为 Android 官方支持的开发语言。相比于 Java,Kotlin 提供了更简洁、安全和高效的语法特性,极大地提升了开发效率。本章节将深入讲解 Kotlin 的基础语法和核心特性&#x…

Windows配置域名映射IP

一、找到 hosts 文件 打开 C:\Windows\System32\drivers\etc 二、添加hosts文件修改、写入权限 右击hosts文件,点击属性 -> 安全 -> Users -> 编辑 -> Users -> 添加修改、写入权限 -> 确定 -> 确定 进入常规,将只读属性关闭 三、…

【NodeJS】Node.js是什么?能做什么?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 中级 🙉八股文专题:剑指大厂,手撕 J…

qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能

一、前言 主要功能如下: 1.实现文件夹的下载和删除,网上很多资料都是单独对某个路径的文件操作的,并不能对文件夹操作 2.实现目标机中含中文名称自动转码,有些系统编码方式不同,下载出来的文件会乱码 3.实现ftp功能…