当前位置: 首页 > article >正文

【前端篇】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="${NVM_DIR:-~/.nvm}"
nvm unload
rm -rf "$nvm_dir"
  • 编辑~/.bashrc(或其他 shell 资源配置)并删除以下行:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $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 的信息,可以访问其官方文档。


http://www.kler.cn/a/393223.html

相关文章:

  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • 建筑施工特种作业人员安全生产知识试题
  • 容器技术在DevOps中的应用
  • 若依笔记(八):芋道的Docker容器化部署
  • 【学习笔记】数据结构(七)
  • Java 堆内存管理详解:`-Xms` 和 `-Xmx` 参数的使用与默认内存设置
  • OpenGL 进阶系列07 - 阴影贴图(shadowmap )
  • 【深度学习】使用硬件加速模型训练速度
  • Scala可变List
  • MySQL —— MySQL基础概念与常用功能介绍
  • VScode下脚本被禁止运行的原因及解决方案
  • python 怎么在模块和文件夹名称不一致的情况下,安装自己的模块
  • 物联网设备研究——分配推理负载的联合学习方法
  • Android Studio 中三方库依赖无法找到的解决方案
  • 算法和数据结构 目录
  • 使用 VS Code 远程连接时解决 OpenSSL 版本不匹配及权限问题
  • 接口返回的结构体里包含图片(做图片预览)
  • ubuntu内核更新导致的nvidia cuda驱动失效问题
  • 第十九章 TCP 客户端 服务器通信 - 数据包模式
  • 测试体系与测试方案设计
  • 320页PDF | 集团IT蓝图总体规划报告-德勤(限免下载)
  • 基于物联网的家庭自动化系统:使用网络映射器和MQTT协议
  • LuaJIT源码分析(六)语法分析
  • Linux编程:基于 Unix Domain Socket 的进程/线程间通信实时性优化
  • 小程序入门到实战(二)-----基础知识部分1.0
  • ssm079基于SSM框架云趣科技客户管理系统+jsp(论文+源码)_kaic