Volta覚え書き

2023/05/15に公開

Voltaに関して

Volta - The Hassle-Free JavaScript Tool Manager

Rust製で主な機能としては以下になります。

  1. スピード ⚡
  2. プロジェクト単位のシームレスなバージョン切り替え
  3. Windows とすべての Unix シェルを含むクロスプラットフォームサポート
  4. 複数のパッケージマネージャをサポート
  5. 安定したツールのインストール- (Node のアップグレードのたびに再インストールする必要がない)
  6. サイト固有のカスタマイズのための拡張フック

動作環境

$ sw_vers
ProductName: macOS
ProductVersion: 13.3.1
ProductVersionExtra: (a)
BuildVersion: 22E772610a

インストール

早速インストールしていきます。

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

自分の環境では以下にインストールされていました。

$ which volta
/Users/xxxx/.volta/bin/volta
$ volta --version
1.1.1

通常のバージョン管理ツールの様にデフォルトを切り替える

まずは追加したいversionのnodeをインストールしてみます。

$ volta install node@14
$ volta list all       
⚡️ User toolchain:

    Node runtimes:
        v14.21.3 (default)

    Package managers:

    Packages:

v14.21.3 がインストールされた事がわかります。次に最新のversionのnodeをインストールしてみます。

$ volta install node
$ volta list all             
⚡️ User toolchain:

    Node runtimes:
        v14.21.3
        v18.16.0 (default)

    Package managers:

    Packages:

v18.16.0 がインストールされ (default) もv18に設定されています。

これを再度 v14.21.3 に戻すには、

$ volta install node@v14.21.3

の様に実行するとデフォルトがv14に設定されます。

プロジェクト毎にVersion固定

volta pinコマンドでプロジェクトの package.json にバージョンを記載に固定させます。

その為 package.json がないと以下の様にエラーが出ます。

$ volta pin node@14.21.3
error: Not in a node package.

なので適当なディレクトリを作成し、package.jsonを作成します。

$ mkdir sample
$ cd sample
$ yarn init

改めてnodeのversionを固定してみたいと思います。

$ volta pin node@14.21.3
success: pinned node@14.21.3 (with npm@6.14.18) in package.json

するとpackage.jsonに volta 項目が追加されていました。

$ cat package.json
{
  "name": "sample1",
  "packageManager": "yarn@4.0.0-rc.39",
  "volta": {
    "node": "14.21.3"
  }
}

※ちなみに、先にnpmを固定しようとすると先のnodeを固定する様なエラーが表示されます

$ volta pin npm@9.5.0
error: Cannot pin npm because the Node version is not pinned in this project.

Use `volta pin node` to pin Node first, then pin a npm version.

アンインストール方法

VoltaでNodeをアンインストールする

参考URL

【nvm】nodeのバージョン管理をnodebrewからnvmに移行する&使い方

Node.jsのバージョン管理にVoltaを推したい

Discussion