【前端篇】Node.js 版本管理新选择:Volta,让版本切换更简单

一、概述

在前端项目开发中,Node.js 版本管理是一个不可或缺的环节。许多人可能正在使用 nvm 来管理不同项目的 Node.js 版本。然而,当项目数量增多,且每个项目对 Node.js 版本的要求各异时,手动管理版本就会变得异常繁琐。今天,我们来介绍一个新工具------Volta,它不仅提供了极速的版本切换体验,还能自动管理项目的 Node.js 版本依赖,极大降低了使用过程中的心智负担,被誉为 Node.js 版本管理的终极解决方案。

二、背景

面对多个项目对 Node.js 版本不同需求的情况,我们通常会在项目的 package.json 文件的 engines 字段中声明所需版本,并使用 nvm 管理不同版本的 Node.js 实例。在项目数量较少时,这种方法是可行的。但随着团队规模的扩大,面对数十个需要维护的项目时,手动查找、切换、安装版本将变得非常麻烦。Volta 正是为了解决这一问题而诞生的!

三、Volta 特性

以下是从 Volta 官方文档中摘录的一些特性:

官方文档: Introduction | Volta

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

使用 Volta,你可以为项目选择一个 Node 版本,之后无需再关心版本问题,甚至可以在不同项目目录间自由切换,无需手动切换 Node 版本。

四、迁移指南

1、安装 Volta

Volta 是跨平台的,不同操作系统的用户可以选择不同的安装方式:

  • Unix-like (Mac/Linux): 通过命令安装。

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

  • Windows: 可以使用 winget 安装,或者下载安装包自行安装。

    winget?install?Volta.Volta

2、基本使用

进入项目根目录,执行 volta pin node@version 命令,Volta 会在 package.json 中新增配置。将这些变更提交至 Git 仓库,其他协作者就可以自动使用指定的 Node 版本了。

3、集成 PNPM

Volta 对 pnpm 的支持目前是实验性的,但可以通过设置环境变量 VOLTA_FEATURE_PNPM=1 来启用。这样,你就可以像管理 Node 版本一样管理 pnpm 版本了。

pnpm Support | Volta

4、配置环境变量

  • Mac 系统 :在 shell 配置文件中新增一行export VOLTA_FEATURE_PNPM=1
  • Windows :在系统环境变量管理中新增VOLTA_FEATURE_PNPM变量,值为 1。

随后就可以像 pin Node 版本一样,在不同项目中固定不同的 pnpm 版本了

以 Mac 及 ZSH 为例:

code?~/.zshrc

#?新增代码:
#?手动开启volta的PNPM支持
export?VOLTA_FEATURE_PNPM=1

5、卸载 PNPM 和其他工具

卸载 pnpm | pnpm

如果之前通过独立脚本安装了 pnpm,可以直接删除 pnpm 的主目录。

rm?-rf?$PNPM_HOME

如果使用 npm 安装了 pnpm,则应使用 npm 卸载 pnpm。

npm?rm?-g?pnpm

6、安装全局工具

对于全局工具,如 Whistle,需要在卸载 pnpm 后重新使用 npm 安装。

如果类似 Whistle 等的全局工具是使用自行安装的 pnpm 管理的,则应在卸载 pnpm 后自行重新使用 npm 来安装

  • 卸载 pnpm 之前,使用pnpm list?--global列出当前安装的全局包

  • 卸载后,使用npm add --global <packageName>逐个安装即可

7、移除 nvm

如果之前安装了 nvm 等其他版本管理工具,为了避免冲突,需要手动移除。例如,卸载 nvm 的步骤如下:

  • 首先,使用nvm unload从终端中删除nvm命令并删除安装目录:

    nvm_dir=" N V M D I R : − / . n v m " n v m ? u n l o a d r m ? − r f ? " {NVM_DIR:-~/.nvm}" nvm?unload rm?-rf?" NVMDIR:− /.nvm"nvm?unloadrm?−rf?"nvm_dir"

  • 编辑~/.bashrc(或其他 shell 资源配置)并删除以下行:

    export?NVM_DIR=" H O M E / . n v m " [ ? − s ? " HOME/.nvm" [?-s?" HOME/.nvm"[?−s?"NVM_DIR/nvm.sh"?]?&&?.?"KaTeX parse error: Expected 'EOF', got '#' at position 17: ...VM_DIR/nvm.sh"?#̲?This?loads?nvm...NVM_DIR/bash_completion?]]?&&?.?$NVM_DIR/bash_completion

五、常见问题解答

  • Q:不同的目录和终端都能自动切换吗?

    • A:是的,Volta 会在进入项目目录后自动读取项目中声明的版本并主动切换。
  • Q:项目维护者没有安装 Volta 怎么办?

    • A:他们可以回退到手动查看项目的engines字段并切换版本的方式。
  • Q:项目中声明了本地未下载的 Node 版本会怎样?

    • A:Volta 会在执行 Node 相关命令时自动下载并使用该版本。
  • Q:全局移除了其他来源的 Node,遇到没有 Volta 声明的文件夹怎么办?

    • A:使用volta install node@version命令安装全局版本。
    • 使用 install 子命令安装一个全局版本,例如:

    volta?install?node@20

    node?-v?#?v20.18.0

Volta 的确是一个强大的工具,可以帮助开发者更高效地管理不同项目的 Node.js 版本,减少版本冲突和手动切换的麻烦。如果你想了解更多关于 Volta 的信息,可以访问其官方文档

相关推荐
w_312345410 分钟前
maven权威指南(读书笔记一)
java·maven
guoruijun_2012_412 分钟前
04_ok_java_websocket_端口转发_将服务器的流端口转到本地
java·服务器·websocket
Rorschach0115 分钟前
什么,不用 Tomcat 也能运行 Java web?
java·前端·tomcat
Themberfue16 分钟前
Java 网络初始 ①-OSI七层网络模型 || 网络通信 || 五元组 || 协议分层
java·网络·计算机网络
上海拔俗网络1 小时前
“视觉革命:走进可视化AI识别系统的智能世界
java·团队开发
m0_748239331 小时前
【WebDriver】浏览器驱动下载及其配置
java
YRr YRr1 小时前
通过移除 -march=native 解决 Ubuntu 20.04 程序运行“段错误 (核心已转储)”问题的详解
java·linux·ubuntu
04Koi.1 小时前
Java项目--仿RabbitMQ的消息队列--基于MQ的生产者消费者模型
java·rabbitmq·java-rabbitmq
潜意识起点1 小时前
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
java·开发语言·aigc
全栈老实人_2 小时前
社区生活超市系统|Java|SSM|JSP|
java·开发语言·tomcat·maven