还在用nvm做node管理工具?快来试试Volta吧!

还在用nvm做node管理工具?快来试试Volta吧!

为什么会用Volta呢? 因为这段时间电脑上的yarn出了问题,yarn install之后就报错There appears to be trouble with your network connection. Retrying...,期间找了很多方法都没有解决,但是今天用Volta安装了yarn之后居然奇迹般的可以下载了,速度还特别快。虽然可以了,但依然不知道什么原因导致的。不过又可以用yarn了,开心😄~~

🥤什么是Volta

标题说 Node.js 版本控制,但你也可以做 npm/yarn 版本控制。在官方网站上,它被介绍为“无忧无虑的 JavaScript 工具管理器”。当我把项目的 Node.js 的版本控制统一到 Volta 的时候,DX 上去了很多,我感受到了 Volta 的好处。

目前没有详细解释的中文资源,所以我阅读了官方文档并酌情将其翻译成中文。 希望有大佬可以无痛阅读并介绍Volta。

🥤Volta概述

我们来看看官网介绍的三个功能。

Get Started →

⚡ Fast| 快

Install and run any JS tool quickly and seamlessly! Volta is built in Rust and ships as a snappy static binary.

快速无缝地安装和运行任何 JS 工具!Volta 内置于 Rust 并作为一个活泼的静态二进制文件提供。

Volta 是由 Rust 制作的,因此它比其他版本控制工具运行得更快。 *** 快点很好。***

⚡ Reliable| 稳固|可靠

Ensure everyone in your project has the same tools—without interfering with their workflow.

确保项目中的每个人都拥有相同的工具,而不会干扰他们的工作流程 。

这是我觉得最受益的地方。 volta pin您可以使用该命令轻松对齐项目成员的 Node.js 和 npm 版本。

我将在文章后面详细解释如何使用它,所以我先放着它。

⚡ Universal| 万能

No matter the package manager, Node runtime, or OS, one command is all you need: volta install.

无论是包管理器、Node 运行时还是操作系统,您只需要一个命令:volta install.

Windows/Mac/Linux。适用于任何操作系统。

除非每个人都在使用 Volta,否则它无法工作,因此它可以在任何操作系统上运行很重要。

🔔特点

让我们快速浏览一下这些功能。

  • 速度⚡️

  • 逐个项目的无缝版本切换

  • 跨平台支持,包括 Windows 和所有 Unix shell

  • 支持多个包管理器

  • 工具安装稳定(每次节点升级后无需重新安装)

  • 用于特定于站点的自定义的可扩展性挂钩

❣️为什么要使用 Volta?| 为什么选择Volta?

使用 Volta,一旦您选择了 Node 引擎,您就不必担心它。切换项目不需要您手动切换版本。您可以在工具链中安装 npm 软件包二进制文件,而无需定期重新安装它们或找出它们停止工作的原因。

快速设置和切换 Node 引擎

您可以获取和使用特定版本的节点。

终端


$ volta install node@14

您会立即注意到该工具的响应能力。您的开发时间很宝贵!JavaScript 开发人员应该得到一个快速的工具。🙂

当然我觉得安装很快。

协作者的可复制环境

Volta 允许您使用单个命令选择项目的节点引擎和包管理器。


~~路径/到/你的/项目~~

$ volta pin node@12

Volta 将 Node 引擎的确切版本存储在 package.json 中,因此您可以将您的选择提交给 git。从那时起,每次您在项目目录中运行 Node 时,Volta 都会自动切换到与您选择相同版本的 Node 。同样,您的合作者也可以通过在他们各自的开发机器上安装 Volta 来做同样的事情。

这就是Volta的全部意义所在。这是每个人都在使用Volta的条件,但是创建环境的人可以volta pin通过命令修复版本,其他成员可以不假思索地执行它npm install。 能省去检查版本的麻烦。

😏重新安装?

Volta 允许您将喜欢的软件包二进制文件安装为命令行工具,而不必担心会破坏您的开发项目。更好的是,这些工具在安装期间固定到特定的 Node 引擎,除非您明确指示它们,否则不会更改。


$ npm install -g surge

$ surge -h

即使使用此全局安装,也会为每个项目记住版本,因此您不必担心版本。

🛠️安装 Volta | 入门

现在让我们安装 Volta。

安装前最好把当前使用的Node版本控制工具去掉,但也并非必须的。

工具的删除部分(nodebrew, NVM, nodist, ...)的模式太多了,所以我就省略删除方法了。请根据自己的环境检查!

如果按照了nodebrew,可以通过参考这篇文章将其删除。

安装Volta

按照官方入门安装。

如果操作系统是 Mac / Linux(包括 WSL),您可以使用以下命令轻松安装它。


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

命令是| bash,但即使是那些使用 zsh /fish 的人也可以毫无问题地安装它。让我们照原样做吧!

我很感激通行证会自动通过。

对于 Windows,可以使用 Windows 安装程序,一路next即可

⚠️对于 Windows,使用 Volta 似乎需要一些设置,因此请按照官网的说明进行设置。但是我没有设置依旧可以使用,可以理解为开箱即用。

确认已安装

.zshrc查看shell配置文件如带有cat命令的文件等,如果写入如下路径,就OK了。

~/.zshrc


export VOLTA_HOME="$HOME/.volta"

export PATH="$VOLTA_HOME/bin:$PATH"

重新启动终端一次volta,检查是否可以使用该命令。


$ volta --version

  • 👊🏽显示Volta版本时安装完成!

✔了解 Volta

Volta 的工作是node管理JavaScript 命令行工具,例如作为 JavaScript 包的一部分提供的可执行文件npm。 与包管理器一样,Volta 会根据您当前的目录跟踪您正在处理的项目。Volta 工具链中的工具会自动检测您在使用特定版本工具的项目中,并将您引导到最适合您的工具版本。yarn

管理你的工具链

Volta 工具链管理的工具由volta install两个volta uninstall命令控制

Node安装

在工具链中安装工具时,安装的版本是该工具的默认版本。除非您在一个项目目录中工作,其中您有一个固定版本的 Node 以使用不同的版本,否则它默认为 Volta 使用的版本。

例如,您可以通过安装特定版本来选择 Node 的默认版本。


$ volta install node@14.15.5

如果您没有指定确切的版本,Volta 会选择与您的请求相匹配的适当版本。


$ volta install node@14

latest您也可以安装最新版本。此外,如果您完全省略版本,Volta 将选择并安装最新的 LTS 版本。


$ volta install node@latest

# Node@LTS

$ volta install node

当您运行任何这些命令时,由 Volta 在 PATH 环境(或 Windows 上的 Path)中提供的节点可执行文件默认自动运行所选版本的节点。

同样,您可以使用volta install npmvolta install yarn分别选择 npm 和 Yarn 包管理器的版本。这些工具使用所选节点的默认版本运行。

节点引擎固定

volta pin您可以使用命令来选择项目的 Node 引擎和包管理器的版本。


$ volta pin node@14.17

$ volta pin npm@6.14

将Volta保存到`package. JSON:


"volta":  { 

"node":  "14.17.3", 

"npm":  "6.14.13" 

}

这样,使用 Volta 进行项目开发的每个人都将自动获得与json设置的相同版本。

使用项目工具

node和包管理器可执行文件不是工具链中唯一的智能工具。工具链中的包二进制文件也可以识别当前目录并尊重当前项目结构。

例如,安装 Typescript 包会将编译器可执行文件 ( tsc) 添加到工具链中。


$ npm install --global typescript

根据您参与的项目,此可执行文件将切换到您项目中选择的 TypeScript 版本。


cd /path/to/project-using-typescript-3.9.4

tsc --version # 3.9.4

cd /path/to/project-using-typescript-4.1.5

tsc --version # 4.1.5

如您所见,不仅 Node 和 npm / Yarn 等包管理器,而且通过它们安装的包二进制文件都受到 Volta 的监控。因此,它会自动切换每个项目的版本。

安全便利

Volta 的工具链会跟踪您的位置。因此,您使用的工具将始终优先考虑您正在处理的项目的设置。这意味着您在切换项目时不必担心更改已安装软件的状态。

此外,每次运行工具时,Volta 都会覆盖跟踪,使 npm 或 Yarn 脚本永远不会知道工具链的内容。

结合这两个特性,Volta 解决了全局封装的问题。换句话说,Volta 提供了全局包安装的便利,但没有危险。

例如,npm i -g typescript您可以安全地安装 TypeScript,tsc并享受直接从控制台调用它的便利。

💡Volta 命令

volta命令行二进制参考如下。(点此查看官方命令参考)


The JavaScript Launcher ⚡

    To install a tool in your toolchain, use `volta install`.

    To pin your project's runtime or package manager, use `volta pin`.

USAGE:

    volta [FLAGS] [SUBCOMMAND]

FLAGS:

        --verbose   

            Enables verbose diagnostics

        --quiet     

            Prevents unnecessary output

    -v, --version   

            Prints the current version of Volta

    -h, --help     

            Prints help information

SUBCOMMANDS:

    fetch          Fetches a tool to the local machine

    install        Installs a tool in your toolchain

    uninstall      Uninstalls a tool from your toolchain

    pin            Pins your project's runtime or package manager

    list          Displays the current toolchain

    completions    Generates Volta completions

    which          Locates the actual binary that will be called by Volta

    setup          Enables Volta for the current user/shell

    help          Prints this message or the help of the given subcommand(s)

Volta常用命令介绍

最后,我想介绍一些常用的命令。

volta install

volta install设置工具的默认版本。如果未缓存本地指定的版本,请从该工具中获取它。

如何使用volta install [FLAGS] <tool[@version]>

上面说明了安装时指定版本的方法,但总结如下。


# 安装指定版本的node

$ volta install node@14.17.3 

# 安装特定版本中的稳定的node版本

$ volta install node@14 

# 安装LTS版本的node

$ volta install  node 

# 安装最新版本的node

$ volta install node@latest

volta pin

volta pin``package.json该命令更新项目文件以使用所选版本的工具。

此命令只能用于节点和包管理器(npm / Yarn)。

使用方法是volta pin [FLAGS] <tool[@version]>


# node版本固定

$ volta pin node@14.17

# npm版本固定

$ volta pin npm@6.14

# or volta pin yarn@1.19

在项目目录中执行上述volta pin命令时,package.json将写入以下设置。


{

  ...,

+ "volta": {

+  "node": "14.17.3",

+  "npm": "6.14.13" //or "yarn": "1.19.2"

+ }

}

通过与您的团队共享此package.json内容,例如在 GitHub 上,每个人都可以使用相同版本的 Node 或 npm。

例如,假设您在package.json一个项目中运行了上述设置。如果 npm 的版本缓存在 本地机器上,将显示。 如果它没有缓存在本地机器上,它将从安装开始,并在安装完成时显示。npm -v

6.14.13``6.14.13

6.14.13``6.14.13

这样,如果你本地有那个版本,它会自动切换到那个版本,否则它会从版本安装开始。

这很方便,而且npm install即使你运行它而不用担心版本,版本也会自动对齐,所以package-lock.json不会有任何差异。(npm 6系和7系package-lock.json的内容很不一样。)

volta list

volta list该命令检查并显示包含已安装 Node 运行时、包管理器和二进制文件的包。

如何使用volta list [FLAGS] [OPTIONS] [tool]

volta list该命令的用法总结如下。


# 使用方法

volta list [FLAGS] [OPTIONS] [tool]

# Flags

-c, --current # 显示当前活动工具

              # 此标志为缺省设置

-d, --default # 显示默认工具

    --verbose # 启用高级诊断

    --quiet  # 防止不必要的显示

-h, --help    # 显示帮助信息

# OPTIONS

--format <format>  # 指定输出格式

                    # 有效值为`human`or`plain`

                    # 默认值为`human`,否则为`plain`



# ARGS

<tool>  # 指定要列出的工具(node,npm,yarn或其他二进制文件)

        # 指定all以显示所有内容

volta list您可以查看该项目中使用的工具的版本。

volta list all现在您可以看到 Volta 管理的工具列表。

💬概括

写了这么长的一句话,希望大家能明白Volta的魅力。

我认为这对于主要开发 JavaScript 的人来说是最好的解决方案。

我们相信您使用 Volta 的人越多,您就越能享受到它的好处,所以请考虑将它介绍给您的开发团队。

🙏感谢您阅读到最后。再见。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容