[Node翻译]用Volta管理多个节点版本(比nvm更好)

4,065 阅读5分钟

本文由 简悦SimpRead 转码,原文地址 dev.to

近年来,Javascript的工具和生态系统有了很大的飞跃。已经有很多.......

越来越多的人加入到这个行列中来。

近年来,Javascript的工具和生态系统有了一个很大的飞跃。在我们开发和运送数字产品的方式上发生了很多变化。今天,我们将讨论和学习如何在不同的项目中无痛地管理多个Node版本。

有一些有用的工具,如nvm、snm等,它们实现了Volta提供的管理Node多个版本的相同目的。但Volta更胜一筹,我们将学习如何以及为什么你应该为你即将到来的项目选择Volta。

什么是Volta?

Volta,"无忧的JavaScript工具管理器",是一个简化JavaScript环境管理的开源项目。

Volta( volta.sh/ )是一个使用Rust构建的命令行工具,帮助我们管理Node.js版本。它是用Rust构建的,以静态二进制文件的形式发货,可以在Windows和所有*nix shells上运行。

Volta使全局安装成为JavaScript工具体验的一流部分,使其使用起来既方便又安全。

Volta采用了一种设置后就可以忘记的方法。你 "锁定 "我们的项目所需的Node版本,Volta会在你工作时自动切换到该版本,而不需要你做任何操作。你可以同时打开多个项目,每个项目都有自己的、不同版本的Node,同时运行。

这听起来不是很好吗?😃

我们只需要在我们的项目上使用声明式语法指定工具配置,而Volta会处理战术细节,按照你的喜好适当地建立环境。为了加快执行速度,Volta会尽可能地从本地缓存中提供项目。

现在让我们来看看我们如何在我们的项目中实现这一点。

安装

我们有几种方法可以为我们选择的操作系统安装Volta。这里我们将介绍大多数基于Unix的系统。

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

上述脚本将二进制文件安装在~/.volta,并将~/.volta/bin添加到你的系统路径中的~/.bash_profile、~/.profile和 ~/.bashrc。

export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"

这就是全部内容! 我们现在可以开始使用Volta来管理我们的Node.js。

使用Volta

现在我们的机器上已经安装了Volta。我们可以通过以下命令使用Volta安装node。

# Install node
volta install node
# or we can install a specific node version
volta install node@17

在这些命令之后,只要我们打开终端,就可以使用node。如果我们希望Volta总是为你的活动包加载指定版本的node,我们可以使用pin。

volta pin node@17.0.0

这个命令将把我们的pin版本存储在我们项目文件夹下的package.json中。如果我们看一下我们的package.json文件,它看起来像这样

"volta": {
  "node": "17.0.0"
}

每次我们导航到这个项目时,我们总能发现上述节点的指定版本已经安装好,并为我们准备好了。Volta会自动将你的活动节点版本设置为被钉住的任何版本。

我们甚至可以使用Volta安装和钉住全局包,如yarn或npm,以确保你的团队中的每个人都在使用相同版本的全局包。

volta install npm
volta pin npm

下面是我们的package.json看起来像什么😍

"volta": {
  "node": "17.0.0",
  "npm": "8.0.0"
}

Volta vs nvm

nvm的存在是为了处理Node.js的版本,Volta比nvm好的地方在于它要求我们在切换项目时总是运行命令(nvm的使用)或者在我们的shell中添加助手。相反,Volta可以处理node版本,并且可以在我们的package.json文件中设置一个默认的版本来加载。

你觉得npm或yarn怎么样?如果你在纠结于package-lock.json的版本变化,因为开发人员从npm v6转移到v7?

NVM不会自动将你的活动节点版本切换到你的钉住的版本。你必须运行nvm use或者安装另一个叫AVN的软件包。AVN通常需要2到6秒来切换节点的版本。但是,Volta会自动做到这一点,而且通常不到一秒钟 😱。

Volta为我们提供了所有的保障,我们把这个工具钉在我们的项目中,所以我们将永远使用这个版本。这也适用于node版本或npm/yarn版本。

最后的想法

在这个快节奏的技术野火中保持更新真的很令人生畏。在不断更新的库的基础上构建应用程序会增加我们开发过程的复杂性。

Volta保护我们的环境不受诸如 "曾经工作过 "或 "在我的本地机器上工作过 "等问题的影响,给我们提供我们需要的控制和自动化,以确保环境每次都是以我们想要的方式配置的。

今天,不同的其他语言已经为javascript生态系统做出了慷慨的贡献,以加快产品构建过程。纵观当前的趋势,我们可以看到Rust已经成为提高Javascript部署体验的主要贡献者。以下是一些由Rust驱动的JavaScript工具的明显例子。

  • Volta(volta.sh/) "只是一个版本管理器 "是用Rust编写的。
  • Deno(deno.land/) 用Rust和v8引擎编写的。
  • Rome (rome.tools/) 用于JavaScript的Linter、编译器、捆绑器等,TypeScript是用Rust重写的。
  • SWC(swc.rs/) 用Rust编写的typecript和javascript编译器库。
  • Parcel 2(parceljs.org/) 一个零配置的构建工具正在使用SWC将其编译器转向Rust。

从上面的趋势和观察中,我们可以看到正在发生的事情。随着这些对JavaScript生态系统的贡献,我们正在为我们美好的未来建立一个更快的、可靠的、可扩展的开发环境。

👨💻 编码愉快!


www.deepl.com 翻译