【前端篇】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 的信息,可以访问其官方文档

相关推荐
csgo打的菜又爱玩7 分钟前
数仓整体架构和建模架构
java·大数据·开发语言·架构
翱翔的苍鹰9 分钟前
多Agent智能体系统设计思路
java·python·深度学习·神经网络·机器学习·tensorflow
小花10 分钟前
java后端框架之spring
java·开发语言·spring
小王不爱笑13212 分钟前
Spring Boot 配置文件核心用法与加载优先级
java·spring boot·后端
小北方城市网18 分钟前
Spring Cloud Gateway 动态路由进阶:基于 Nacos 配置中心的热更新与版本管理
java·前端·javascript·网络·spring boot·后端·spring
橙露20 分钟前
Docker 容器化运维:镜像优化、容器编排与持久化存储方案
java·运维·docker
码农阿豪22 分钟前
SpringAI 实战:构建智能问答系统全流程解析
java·人工智能
a努力。28 分钟前
Spring Boot 4 全面拥抱 Jackson 3
java·运维·开发语言·spring boot·后端·spring·jenkins
那我掉的头发算什么29 分钟前
【Spring】从0到1掌握Spring MVC应用分层
java·后端·spring·mvc
打工的小王36 分钟前
Spring Boot(二)模版引擎
java·spring boot·后端