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

文章目录

    • 特点
    • 安装
    • 常用命令
      • [volta fetch](#volta fetch)
      • [volta install](#volta install)
      • [volta uninstall](#volta uninstall)
      • [volta pin](#volta pin)
      • [volta list](#volta list)
      • [volta completions](#volta completions)
      • [volta which](#volta which)
      • [volta setup](#volta setup)
      • [volta run](#volta run)
      • [volta help](#volta help)
    • 建议

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

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

特点

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

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

安装

Unix系统安装

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

js 复制代码
curl https://get.volta.sh | bash

Windows系统安装

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

js 复制代码
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的版本

js 复制代码
volta pin node@20.16
volta pin yarn@1.19

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

js 复制代码
"volta": {
  "node": "20.16.0",
  "yarn": "1.19.2"
}

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

js 复制代码
node --version # 20.16.0
yarn --version # 1.19.2

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

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

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

相关推荐
CodeChampion5 小时前
61.基于SpringBoot + Vue实现的前后端分离-在线动漫信息平台(项目+论文)
java·vue.js·spring boot·后端·node.js·maven·idea
小王码农记6 小时前
解决npm publish发布包后拉取时一直提示 Couldn‘t find any versions for “包名“ that matches “版本号“
前端·npm·node.js
求知若饥11 小时前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs
理想不理想v1 天前
webpack最基础的配置
前端·webpack·node.js
南城巷陌1 天前
JWT认证机制在Node.js中的详细阐述
node.js·jwt认证机制·前端安全认证
理想不理想v1 天前
node.js的简单示例
node.js
yrldjsbk1 天前
使用Node.js搭配express框架快速构建后端业务接口模块Demo
node.js·express
维李设论1 天前
Node.js的Web服务在Nacos中的实践
前端·spring cloud·微服务·eureka·nacos·node.js·express
CodeChampion1 天前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis