比 nvm 更好用的 node 版本管理工具 Volta

作者:JiKun

原文:https://juejin.cn/post/7275608678828916755

什麼是 Volta?

Volta 是一種管理 JavaScript 命令行工具的便捷方式。

volta 的特點:

爲什麼選擇 Volta?

使用 Volta,您可以一次選擇 Node 引擎,然後不再擔心它。您可以在項目之間切換,而不必手動切換 nodejs 版本。你可以在工具鏈中安裝 npm 二進制包,而不必定期重新安裝它們,或者弄清楚它們停止工作的原因。

快速設置和切換 Node 版本

獲取並使用特定版本的 Node:

volta install node@14

您應該立即注意到該工具的響應速度有多快。您的開發時間是寶貴的 JavaScript 開發人員應該擁有時髦的工具。

爲合作者提供可複製的環境

Volta 允許你用一個命令爲一個項目選擇節點引擎和包管理器:

volta pin node@12

Volta 將 Node 引擎的準確版本保存在 package.json,這樣你就可以把你的選擇提交給 git。從那時起,每次在項目目錄中運行 Node 時,Volta 都會自動切換到您選擇的同一版本 的 Node。類似的。所有的合作者都可以通過在他們的開發機器上安裝 Volta 來做同樣的事情。

Install and forget

Volta 還允許您將最喜歡的二進制包作爲命令行工具安裝,而不必擔心它們會干擾您的開發項目。更好的是,這些工具在安裝時被固定到特定的 Node 引擎上,除非您顯式地告訴它們,否則它們不會更改。這意味着一旦一個工具工作了,它就會繼續工作。

npm install -g surge
surge -h

安裝 Volta

在安裝 Volta 前, 如果有使用其它的 nodejs 管理工具 / nodejs,可以提前卸載(非必須)。

Unix 安裝

在大多數 Unix 系統 (包括 macOS) 上,您可以使用一個命令安裝 Volta:

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

對於 bash[1], zsh[2] 和 fish[3],這個安裝程序將自動更新控制檯啓動腳本。如果您希望防止修改控制檯啓動腳本,請參閱跳過 Volta 設置。要手動配置你的 shell 使用 Volta,編輯你的控制檯啓動腳本如下:

Windows 安裝

對於 Windows,下載並運行 Windows 安裝程序 [4] 並按照說明操作。

Volta 的功能依賴於創建符號鏈接,所以你必須:

  • 啓用開發者模式 5

  • 以提升的權限運行 Volta(不推薦)

Windows 下的 linux 子系統

如果您在 Linux 的 Windows 子系統中使用 Volta,請遵循上面的 Unix 安裝指南。

使用 Volta

Volta 的工作是管理 JavaScript 命令行工具,如 node、npm、yarn 或作爲 JavaScript 包的一部分發布的可執行文件。

與包管理器類似,Volta 會根據當前目錄跟蹤您正在處理的項目 (如果有的話)。Volta 工具鏈中的工具會自動檢測您所處的項目是否使用特定版本的工具,併爲您路由到正確的工具版本。

管理您的工具鏈

您可以使用兩個命令控制由 Volta 工具鏈管理的工具: Volta installVolta uninstall

安裝 node 引擎

要將工具安裝到工具鏈中,需要設置該工具的默認版本。Volta 將始終使用這個默認值,除非您在一個已配置 Volta 使用不同版本的項目目錄中工作。當您選擇默認版本時,Volta 也會將該版本下載到本地緩存中。

例如,您可以選擇 node 的確切版本作爲默認版本:

volta install node@14.15.5

你不需要指定一個精確的版本,在這種情況下,Volta 會選擇一個合適的版本來匹配你的請求:

volta install node@14

你也可以指定最新版本,或者甚至完全不選擇版本,Volta 將選擇最新的 LTS 版本:

volta install node

一旦您運行了這些命令中的一個,在您的 PATH 環境 (或 Windows 中的 PATH) 中由 Volta 提供的節點可執行文件將在默認情況下自動運行您選擇的 node 版本。

同樣地,你可以使用 volta install npmvolta install Yarn 分別選擇 npm 和 Yarn 包管理器的版本。這些工具將使用您選擇的 Node 的默認版本運行。

安裝二進制包

使用 Volta,使用包管理器全局安裝命令行工具也會將其添加到工具鏈中。例如,vuepress[6] 包包含一個同名的可執行文件:

yarn global add vuepress

當您將一個包安裝到工具鏈上時,Volta 會獲取當前的默認 Node 版本,並將該工具固定到該引擎上 (有關更多信息,請參閱包二進制文件 [7])。Volta 不會改變工具的固定引擎,除非你更新工具,無論如何。這樣,您就可以確信您安裝的工具不會在您背後更改。

管理您的項目

Volta 允許團隊或協作者社區標準化他們在項目中使用的開發工具。

固定 Node 引擎

volta pin 命令允許您爲項目選擇 Node 引擎和包管理器版本:

volta pin node@12.20
volta pin yarn@1.19

Volta 會把這個放在你的 package.json,這樣你就可以把你選擇的工具提交到版本控制:

"volta"{
  "node""12.20.2",
  "yarn""1.19.2"
}

這樣,每個使用 Volta 在項目上工作的人都會自動獲得您選擇的相同版本。

node --version # 12.20.2
yarn --version # 1.19.2

使用項目工具

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

安全方便

因爲 Volta 的工具鏈總是跟蹤你在哪裏,它確保你使用的工具總是尊重你正在做的項目的設置。這意味着您不必擔心在項目之間切換時更改已安裝軟件的狀態。

更重要的是,當 Volta 運行一個工具時,它會覆蓋它的軌跡,確保你的 npm 或 Yarn 腳本永遠不會看到你的工具鏈中有什麼。

這兩個特性的結合意味着 Volta 解決了全局包的問題。換句話說,Volta 爲您提供了全局包安裝的便利,但沒有危險。

例如,你可以使用 npm i -g typescript 安全地安裝 TypeScript,並享受直接調用 tsc 的便利無需擔心項目的包腳本可能意外地依賴於您的機器的全局狀態。

Pnpm 支持

對 pnpm 的支持目前是實驗性的。要啓用該功能,請確保環境變量 VoLTA_FEATURE_PNPM 設置爲 1。在 Windows 上可以添加到環境變量中。在 Linux/Mac 上,您可以在配置文件腳本中設置該值 (例如 .bash_profile.zshrc 或類似的腳本)。

已知的限制

全局安裝:目前不支持全局安裝 (例如 pnpm install -g),並且會導致錯誤。

遷移:目前還沒有自動遷移功能,因此如果您以前將 pnpm 作爲 Volta 全局文件安裝,則需要通過調用 Volta install pnpm 手動重新安裝它。在啓用支持並重新安裝之前,您可以通過 volta uninstall pnpm 卸載之前安裝的 pnpm 包。一旦切換到本機 pnpm 支持,由於目前缺乏卸載實現,可能無法通過調用相同的命令來刪除孤立的舊 pnpm 包。

Volta 命令

Volta 1.1.1
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
    run            Run a command with custom Node, npm, pnpm, and/or Yarn versions
    help           Prints this message or the help of the given subcommand(s)

volta fetch 將工具緩存到本地機器以供離線使用

volta install 設置工具的默認版本

volta uninstall 從工具鏈中卸載工具

volta pin 固定項目的運行時或包管理器

volta list 顯示當前工具鏈

volta completions 命令補全

volta which 查看 volta 安裝的工具的目錄

volta setup 爲當前用戶 / shell 啓用 volta

volta run 運行帶有自定義 Node、npm、pnpm 和 / 或 Yarn 版本的命令

volta help 輸出幫助信息

結束語

如果你在工作中遇到有多個項目使用不同版本的 nodejs,就來試試Volta吧!

參考資料

[1]

https://www.gnu.org/software/bash/: https://link.juejin.cn?target=https%3A%2F%2Fwww.gnu.org%2Fsoftware%2Fbash%2F

[2]

https://www.zsh.org/: https://link.juejin.cn?target=https%3A%2F%2Fwww.zsh.org%2F

[3]

http://fishshell.com/: https://link.juejin.cn?target=http%3A%2F%2Ffishshell.com%2F

[4]

https://github.com/volta-cli/volta/releases/download/v1.1.1/volta-1.1.1-windows-x86_64.msi: https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fvolta-cli%2Fvolta%2Freleases%2Fdownload%2Fv1.1.1%2Fvolta-1.1.1-windows-x86_64.msi

[5]

https://learn.microsoft.com/zh-cn/windows/apps/get-started/enable-your-device-for-development#accessing-settings-for-developers: https://link.juejin.cn?target=https%3A%2F%2Flearn.microsoft.com%2Fzh-cn%2Fwindows%2Fapps%2Fget-started%2Fenable-your-device-for-development%23accessing-settings-for-developers

[6]

https://www.npmjs.com/package/vuepress: https://link.juejin.cn?target=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fvuepress

[7]

/reference/advanced/packages#pinned-node-version: /reference/advanced/packages#pinned-node-version

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/gMdMGgWjP_pXgNr4uS3mtw