This article was translated from Japanese by AI and may contain inaccuracies. For the most accurate content, please refer to the original Japanese version.
Node.js

Node.js のバージョン管理には Volta がよい

皆さん Node.js のバージョン管理ツールには何を使っておりますでしょうか?上記の中でも私がオススメするのは [volta](https://volta.sh/) です。volta は 1.0 がリリースされたのが2020年12月と比較的新しいツールです。

皆さん Node.js のバージョン管理ツールには何を使っておりますでしょうか?私が知る限りにおいてもこれだけの選択肢が存在します。

  • nodist
  • n
  • nodebrew
  • nodeenv
  • nvm
  • volta

上記の中でも私がオススメするのは volta です。volta は 1.0 がリリースされたのが 2020 年 12 月と比較的新しいツールです。

volta には以下のような特徴があります。

  • 早いインストール:Rust で作成されているツールだけあって素早く異なるバージョンの Node.js をインストールできます
  • プロジェクトのバージョンの固定:volta により Node.js とパッケージマネージャー(npm, yarn)のバージョンをプロジェクトで固定し、ディレクトリを移動するたびにシームレスにバージョンを変更できます。

インストール

volta をインストールする間にすでに他のバージョン管理ツールを使用している場合には始めにアンインストールしておきましょう。例として、私は nodebrew を使用していたので以下コマンドでアンインストールします。

$ brew uninstall nodebrew

続いて以下コマンドで volta をインストールします。

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

私が上記コマンドを実施した際には証明書エラーが発生してしまったので変わりに以下の手順を実施しました。

  1. -k オプションを付与して curl コマンドを実行してスクリプトをローカルに落とす
$ curl -k https://get.volta.sh > volta.sh
  1. volta.sh ファイルの get_latest_relase 関数を -k オプションを付与するように修正する
  get_latest_release() {
-   curl -- slient "https://volta.sh/latest-version"
+   curl -k  --silent "https://volta.sh/latest-version"
  }
  1. volta.sh ファイルを実行する
$ chmod +x volta.sh
$ ./volta.sh

volta コマンドが使用可能か確認してみましょう。

$ volta -v
1.0.6

特定のバージョンの Node.js をインストールする

それでは volta を使用してみましょう。以下のコマンドでは 14.15.5 バージョンの Node.js をインストールします。

$ volta install [email protected]
success: installed and set [email protected] (with [email protected]) as default
$ node -v
v14.15.5

次のようにメジャーバージョンの最新をインストールすることもできます。

$ volta install node@16
success: installed and set [email protected] (with [email protected]) as default
$ node -v
v16.14.2

プロジェクトの Node.js のバージョンを固定する

volta pin コマンドを使用すればそのプロジェクトで使用する Node.js のバージョンの指定してディレクトリを移動した際に自動で指定のバージョンをインストールします。これにより、チームで使用するツールを標準化できます。

例えば、以下のようなディレクトリの構成となっていいるとします。

$ tree
.
├── project-a
│   └── package.json
├── project-b
│   └── package.json
└── project-c
    └── package.json

project-a ディレクトリに移動して volta pin コマンドにより使用するバージョンとパッケージマネージャーをこていすることができます。

$ volta pin node@12
$ volta pin yarn@1

package.json には次のように追記されます。

  "volta": {
    "node": "12.22.12",
    "yarn": "1.22.18"
  }

続いて project-bproject-c でも同様の手順でバージョンを固定します。そうすると、ディレクトリを移動するたびに Node.js のバージョンが変更されるようになります。

$ cd project-a
$ node -v
v12.22.12
$ cd ../project-b
$ node -v
v14.19.1
$ cd ../project-c
$ node -v
v16.14.2

欠点としては、プロジェクトの開発者全員が volta を使用していなければいけないところです。例えば node-version というファイルであれば複数の Node.js バージョン管理ツールに対応しています。