きっかけ
Nodeのバージョン管理を選定するにあたり、Voltaについて調べたので、そのことをまとめておきます。
Voltaのここがすごい!
Voltaは以下の3点において優れています。
①速い
②堅実
③ユニバーサル
詳しくみていきましょう。
①速い
Volta は Rust 製であるため、他のバージョン管理ツールより動作が高速です。
②堅実
Voltaはバージョンを固定することができます。
package.jsonに記録されていて、共同開発者がgitからインストールするとその固定されたバージョンがインストールされ、プロジェクト単位での切り替えを自動で行なってくれます。
ただし、共同開発者がVoltaをインストールしている場合に限ります。
③ユニバーサル
Windows・Mac・Linux。どの OS でも作動します。
バージョンの固定って何??
①、③については説明は特に必要ないかと思うので、以下では②について詳しく掘り下げていきます。
volta pinコマンドを使用することで、各プロジェクトディレクトリ内でNodeとnpm(パッケージマネージャー)のバージョンを固定できます。
Nodeのバージョンを固定
$ volta pin node@14.17
npmのバージョンを固定
$ volta pin npm@6.14
そしてその切り替えを自動で行なってくれるのです。
グローバルvsローカル
ここでは、Voltaにおいてグローバルとローカル、どっちが優先されるのかについて話していきます。
Case1: Nodeの場合
結論から言うと、ローカルが優先されます。
基本的にはデフォルト(グローバル)のNodeのバージョンが使用されるのですが、プロジェクトディレクトリ内において、指定がある場合は、そちらが優先されます。
Case2: npmパッケージの場合
こちらも結論から言うと、ローカルが優先されます。
typescriptを例にして説明します。
TypeScript がグローバルインストールしてあったとします。
※npm や yarn でグローバルインストールしても Volta 管理下になる
$ volta install typescript
or
$ npm install -g typescript
or
$ yarn global add typescript
$ tsc --version # 4.4.4
しかし、後々、とあるプロジェクトでは違うバージョンをローカルでインストールしていた場合、
そのプロジェクトに移動した際には、ローカルバージョンが自動的に使われます。
$ cd /path/to/project-using-typescript-3.9.4
$ tsc --version # 3.9.4
ちなみに、グローバルインストールした npm パッケージは、インストール時のデフォルトバージョンである Node.js と関連付けられます。
npm パッケージを、グローバルバージョンとして使用する際は、この関連付けられた Node.js が使われるようになっているようです。
$ volta list all
⚡️ User toolchain:
.
.
.
Packages:
typescript@4.4.4 (default)
binary tools: tsc, tsserver
platform:
runtime: node@16.13.0
それぞれのインストール方法
Voltaを使ってみたくなってきたでしょうか。
では、以下の3つのインストール方法について以下で解説します。
- Voltaのインストール
- Nodeのインストール
- パッケージマネージャーのインストール
Voltaのインストール
それでは Volta をインストールしましょう。
手順は以下の2つです。
- Nodeバージョン管理ツールの削除
- Voltaのインストール
Nodeバージョン管理ツールの削除
Voltaをインストールする前に、現在使用中のNodeバージョン管理ツールを削除してください。
使用するツールによって削除方法が異なるので、各々使用しているツールに応じて調べてみてください。
Voltaのインストール
公式のドキュメントに従い、インストールを行います。
Mac・Linux(WSL 含む)であれば、以下のコマンドで簡単にインストール可能です。
以下のコマンドを実行しましょう。
$ curl https://get.volta.sh | bash
bashとなっていますが、zsh・fish を使用されている方でも問題なくインストール可能です。
自動でパスも通してくれます。
Nodeのインストール方法
特定のバージョンをインストールする場合は以下のコマンドを実行します。
$ volta install node@14.15.5
正確なバージョンを指定しなかった場合は、Volta はリクエストに一致する適切なバージョンを選択します。
# 14系の安定版がインストールされる
$ volta install node@14
@latestで最新版をインストールできます。
# 最新バージョンをインストールする
$ volta install node@latest
バージョンを完全に省略すると、Volta は最新の LTS リリースを選択しインストールします。
# NodeのLTSリリースがインストールされる
$ volta install node
パッケージマネージャー(npm、yarn)のインストール
パッケージマネージャーのインストールを行う場合は、以下のコマンドを実行してください。
volta install npm
volta install yarn
インストールは、選択したノードのデフォルトバージョンを使用して実行されます。
Volta のコマンドについて
最後に、Voltaのコマンド一覧を置いておきます。(公式コマンドリファレンスはこちら)
# 利用方法
volta [FLAGS] [SUBCOMMAND]
# FLAGS
--verbose # 詳細な診断を有効にします
--quiet # 不要な出力を防ぎます
-v, --version # Voltaの現在のバージョンを表示します
-h, --help # ヘルプ情報を表示します
# SUBCOMMANDS
fetch # ローカルマシンにツールをフェッチ(取り込み)します
install # ツールをツールチェーンにインストールします
uninstall # ツールをツールチェーンからアンインストールします
pin # プロジェクトのランタイムやパッケージマネージャーを固定します
list # カレントツールチェーンを表示します
completions # Voltaコンプリートを生成します
which # Voltaが呼び出す実際のバイナリを特定します
setup # 現在のユーザー/シェルに対してVoltaを有効にします
help # メッセージまたは指定されたサブコマンドのヘルプを表示します
volta list
中でもよく使うコマンドである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 listは、そのプロジェクトで使用されるツールのバージョンを確認してくれます。
volta list allは、Volta で管理しているツールを一覧で見ることができます。