- Volta とは
- インストール
- volta install で Node エンジンを導入する
- volta list で現在のツールチェーンを一覧する
- volta pin でバージョンを固定する
- コマンドラインツールのグローバルなインストール
- まとめ
Volta とは
- 数ある Node バージョン管理ツールの一つ
- 2020年12月にVolta1.0がリリースされ、現在のバージョンは v1.1.1 で比較的新しい
- Rust 製で早い
- package.json の内容を読み、自動でバージョン切り替えを行う
- node や yarn のバージョンをプロジェクト毎に固定できる
- グローバルパッケージを安全に使うことができる
インストール
他の Node バージョン管理ツールを使っている場合は、あらかじめアンインストールしておきましょう。
公式インストーラ(*nix)
公式のインストーラでは、*nix系OSの場合以下でインストールできます。
$ curl https://get.volta.sh | bash
インストールが完了すると、初期化ファイル .bash_profile
.bashrc
.zshrc
.profile
.config/fish/config.fish
に以下が追加されます。
export VOLTA_HOME="$HOME/.volta" export PATH="$VOLTA_HOME/bin:$PATH"
自身でパスを追加する場合は、--skip-setup
フラグを付けてインストールすることで初期化ファイルの変更をスキップできます。
$ curl https://get.volta.sh | bash -s -- --skip-setup
初期化ファイルの変更をスキップした場合には、必要な初期化ファイルを自身で編集します。
インストールが完了すれば、~/.volta/bin
に以下の shim が配備されます。
node
npm
npx
yarn
shim は、API 呼び出しを透過的にインターセプトして処理を適切にリダイレクトするライブラリです。これらの shim により node などへの操作を適切なバージョンへ切り替える作りとなっています。
なお、アンインストールは以下のように .volta
を削除するだけです。
$ rm -rf ~/.volta
その後、初期化ファイル .bash_profile
.bashrc
.zshrc
.profile
.config/fish/config.fish
に追加されたパスの設定を削除します。
インストール後のバージョン確認は以下のようになります。
$ volta --version 1.0.5
Homebrew
Mac の場合は brew でインストールできます。
$ brew install volta
brew でのインストールではパスの追加が行われません。
以下のコマンドでパスの追加を行うことができます。
$ volta setup
自身行う場合は、必要な初期化ファイルに以下を追加します。
export VOLTA_HOME="$HOME/.volta" export PATH="$VOLTA_HOME/bin:$PATH"
私の環境では、 .zshrc
から .profile
を読み込んでいるため、 .profile
にパスの設定を追加しました。
Winget
winget が提供されているので、以下でインストールできます。
> winget add Volta.Volta
winget install
でも同様です(add
は install
のエイリアスです)。
なお、winget で導入した際も、開発者モードの設定などした方が良いので、続く「公式インストーラ(Windows)」の内容も参照してください。
公式インストーラ(Windows)
Windows の場合は以下からインストーラをダウンロードしてインストールします。
https://github.com/volta-cli/volta/releases
Volta はシンボリックリンクを使うため、Windows の開発者モードでの利用が推奨されています。
開発者モードは、「設定」-「更新とセキュリティ」のサイドメニューから「開発者向け」を選択し、「開発者モード」を ON にします。
インストーラは、システム環境変数のパスに C:\Program Files\Volta\
を追加し、ユーザ環境変数のパスに C:\Users\<user>\AppData\Local\Volta\bin
を追加します。
C:\Program Files\Volta
には以下の shim が配備されます。
node
npm
npx
yarn
shim は、API 呼び出しを透過的にインターセプトして処理を適切にリダイレクトするライブラリです。これらの shim により node などへの操作を適切なバージョンへ切り替える作りとなっています。
インストール後のバージョン確認は以下のようになります。
$ volta --version 1.0.5
volta install で Node エンジンを導入する
Volta のインストールが完了したら、Volta から Node をインストールします。
最新のLTS 版の Node を導入するには以下のようにします。
$ volta install node success: installed and set node@14.18.1 (with npm@6.14.15) as default $ node -v v14.18.1
install
という名前ですが、このコマンドは、ツールのデフォルトバージョンを設定するコマンドです。もしツールがダウンロード済みでない場合は、フェッチを行い、続いてツールのデフォルトバージョンを設定します。
つまり、ローカルに導入済みかどうかにかかわらず install
を行えば、そのバージョンが有効になる、ということです。
バージョンを指定する場合は、以下のような指定が可能です。
$ volta install node@latest $ volta install node@16.11.1 $ volta install node@16
パッケージマネージャも同様に install できます。
$ volta install yarn success: installed and set yarn@1.22.15 as default $ volta install npm success: installed and set npm@8.0.0 as default
volta list で現在のツールチェーンを一覧する
導入済みの Node ランタイム、パッケージマネージャなどを一覧するには以下のようにします。
$ volta list all
Volta で管理しているツールの一覧を以下のように確認できます。
⚡️ User toolchain: Node runtimes: v14.18.1 v15.14.0 v16.11.1 (default) Package managers: Yarn: v1.22.15 (default) Packages: typescript@4.4.4 (default) binary tools: tsc, tsserver platform: runtime: node@16.11.1 package manager: npm@built-in
現在のディレクトリ(プロジェクト)に応じた、有効なNode ランタイム、パッケージマネージャを確認する場合は以下となります。
$ volta list
現在のプロジェクトで使用されるツールの一覧を確認できます。
⚡️ Currently active tools: Node: v16.11.1 (current @ /<path_to_project>/package.json) npm: v8.0.0 (default) Yarn: v1.22.15 (current @ /<path_to_project>/package.json) Tool binaries available: tsc, tsserver (current @ /<path_to_project>/package.json)
package.json に記載のあるバージョンが自動的に選択されます。つまり、明示的な切り替え操作が不要になります。
Node や Yarn のバージョン固定には、続く pin
を使います。
volta pin でバージョンを固定する
volta pin コマンドは、選択したバージョンのツールを使用するように、現在のプロジェクトの package.json
ファイルを更新します。
npm init
されたプロジェクトでバージョンを固定するには以下のようにします。
$ volta pin node@16
これにより、当該プロジェクトの package.json
に以下のエントリが追加されます。
"volta": { "node": "16.11.1", "yarn": "1.19.2" }
package.json
によりバージョンが固定されるため、(Voltaを使っている)チームメンバが、ことなるバージョンで作業することがなくなります。
プロジェクトのディレクトリで作業すれば、Volta が自動的に package.json
の定義に従ったバージョンを選択してくれます。
コマンドラインツールのグローバルなインストール
以下のように TypeScript をグローバルにインストールした場合を考えます。
$ npm install -g typescript
Volta は、この時の Node エンジンを記憶し、ツール実行時の Node エンジンのバージョンが固定されます。
volta list all
の内容で確認できます。
Packages: typescript@4.4.4 (default) binary tools: tsc, tsserver platform: runtime: node@16.11.1 package manager: npm@built-in
グローバルにコマンドラインツールをインストールしていても、個別のプロジェクトで npm install typescript
としてインストールされたツールは、その package.json
に定義されたバージョンが自動的に選択されます。
そのため、Volta はグローバルパッケージの利用を安全に行うことができます。
まとめ
Node バージョン管理ツールである Valta を紹介しました。
バージョンの切り替えを明示的に行う必要がなく、package.json
の定義に従ったバージョンが自動的に選択されるため、hassle-free な管理ツールです。
特に、チームで開発している場合は、何も考えずともバージョンが固定できるため、他のバージョン管理ツールと比較して、良い選択肢だと思います。