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私が上記コマンドを実施した際には証明書エラーが発生してしまったので変わりに以下の手順を実施しました。
-kオプションを付与してcurlコマンドを実行してスクリプトをローカルに落とす
$ curl -k https://get.volta.sh > volta.shvolta.shファイルのget_latest_relase関数を-kオプションを付与するように修正する
  get_latest_release() {
-   curl -- slient "https://volta.sh/latest-version"
+   curl -k  --silent "https://volta.sh/latest-version"
  }volta.shファイルを実行する
$ chmod +x volta.sh
$ ./volta.shvolta コマンドが使用可能か確認してみましょう。
$ 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.jsonproject-a ディレクトリに移動して volta pin コマンドにより使用するバージョンとパッケージマネージャーをこていすることができます。
$ volta pin node@12
$ volta pin yarn@1package.json には次のように追記されます。
  "volta": {
    "node": "12.22.12",
    "yarn": "1.22.18"
  }続いて project-b、project-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 バージョン管理ツールに対応しています。
