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 [email protected]
volta pin [email protected]

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

相关推荐
程序员拂雨21 分钟前
Next.js 知识框架总结
node.js
哎哟喂_!2 小时前
Node.js 循环依赖问题详解:原理、案例与解决方案
前端·chrome·node.js
Coding的叶子2 小时前
Node.js 安装 + React Flow 快速入门:环境安装与项目搭建
react.js·node.js·react flow·fgai·react agent
GISer_Jing5 小时前
编译原理AST&以Babel为例进行解读、Webpack中自定义loader与plugin
前端·webpack·node.js
GISer_Jing5 小时前
Webpack中Compiler详解以及自定义loader和plugin详解
前端·webpack·node.js
码农捻旧7 小时前
解决Mongoose “Cannot overwrite model once compiled“ 错误的完整指南
javascript·数据库·mongodb·node.js·express
低代码布道师10 小时前
第五部分:第二节 - Node.js 核心模块:厨房里的基本工具
node.js
赵大仁16 小时前
Deno、Bun、Node.js 性能对比与选型指南
node.js
青苔猿猿21 小时前
node版本.node版本、npm版本和pnpm版本对应
前端·npm·node.js·pnpm
Adorable老犀牛1 天前
安装npm:npm未随Node.js一起安装
npm·node.js