likes
comments
collection
share

node版本管理工具,npm/yarn管理工具

作者站长头像
站长
· 阅读数 22

还在用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 的人越多,您就越能享受到它的好处,所以请考虑将它介绍给您的开发团队。

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