はじめに
「このプロジェクトはNode.js 18系、あっちのプロジェクトは22系……」。複数のプロジェクトを掛け持ちしていると、こんな悩みにぶつかったことはありませんか。nvm useをディレクトリ移動のたびに打ち忘れて、思わぬバージョンのままビルドが失敗する。新しく入ったメンバーの環境構築に半日かかる。チームでバージョンを揃えたつもりが、いつの間にか誰かの手元だけ古いままだった――。
そんなNode.jsのバージョン管理にまつわる地味なストレスを解消してくれるのが、今回紹介するVoltaです。
Voltaとは
VoltaはRust製の高速なJavaScriptツールマネージャーです。Node.jsやnpm、Yarn、pnpmといったツールのバージョンをプロジェクトごとに自動で切り替えてくれるのが最大の特徴で、nvmのように毎回コマンドを打って切り替える必要がありません。
主な特徴
- 自動バージョン切り替え - プロジェクトのディレクトリに入るだけで、
package.jsonに記録されたバージョンのNode.jsやパッケージマネージャーが自動的に使われます - 高速な起動 - シェルの設定ファイルを毎回読み込む方式ではなく、静的バイナリの「シム(shim)」がコマンドを横取りする仕組みのため、ターミナルの起動やコマンド実行が高速です
- チーム全体での環境統一 -
package.jsonにvoltaフィールドを追加してコミットするだけで、メンバー全員が同じバージョンのツールを使う環境を簡単に共有できます - マルチプラットフォーム対応 - Windows・macOS・Linuxのいずれでも同じ使い勝手で利用できます
注意: Volta公式リポジトリでは現在「unmaintained(メンテナンス停止)」であることが明記されており、後継として
miseへの移行が案内されています。既存の利用者がすぐに困る状況ではありませんが、新規に長期利用するプロジェクトで採用する際は、この点を踏まえたうえで判断することをおすすめします。
インストール
macOS / Linux
curl https://get.volta.sh | bash
Windows
winget install Volta.Volta
インストール後、ターミナルを再起動してバージョンを確認しましょう。
volta --version
基本的な使い方
Node.jsのインストール
最新のLTS版をインストールする場合は、バージョンを指定せずに実行します。
volta install node
特定のバージョンを指定することもできます。
volta install node@22.5.1
プロジェクトへのバージョン固定(pin)
プロジェクトのディレクトリでvolta pinを実行すると、そのバージョンがpackage.jsonに記録されます。
cd my-app
volta pin node@22.5.1
volta pin npm@10.8.1
実行後、package.jsonには以下のようなvoltaフィールドが追加されます。
{
"name": "my-app",
"version": "1.0.0",
"volta": {
"node": "22.5.1",
"npm": "10.8.1"
}
}
この状態でリポジトリをコミットしておけば、他のメンバーがVoltaをインストール済みの環境でcd my-appするだけで、自動的に同じバージョンのNode.jsとnpmが使われるようになります。
インストール済みツールの確認
volta list all
実践的なユースケース
新メンバーのオンボーディングを簡略化する
チームのリポジトリにvoltaフィールドが設定されていれば、新しく参加したメンバーはVoltaをインストールしてリポジトリをcloneするだけで、環境構築が完了します。「READMEに書かれたバージョンを手動でインストールしてもらう」といった手順が不要になり、オンボーディングの手間を大きく減らせます。
複数プロジェクトを横断する開発
フロントエンドとバックエンドで異なるNode.jsバージョンを使っているような場合でも、それぞれのディレクトリにvolta pinしておけば、cdだけで意識せずに正しいバージョンへ切り替わります。
cd ~/projects/legacy-app # Node.js 18系が自動的に使われる
node -v
# v18.20.4
cd ~/projects/new-app # Node.js 22系が自動的に使われる
node -v
# v22.5.1
CI環境でのバージョン統一
CIのセットアップスクリプトでVoltaをインストールしておけば、package.jsonのvoltaフィールドを参照して自動的に正しいバージョンが使われるため、ローカル環境とCI環境でのバージョンのズレを防ぐことができます。
curl https://get.volta.sh | bash
export PATH="$HOME/.volta/bin:$PATH"
npm ci
npm test
まとめ
Voltaは、package.jsonにバージョン情報を記録しておくだけでNode.jsやパッケージマネージャーのバージョンを自動的に切り替えてくれる、シンプルで実用的なツールです。nvm useの打ち忘れや、メンバー間でのバージョンのズレといった地味な悩みから解放してくれます。
一方で、公式にはメンテナンス停止が明言されており、後継ツールとしてmiseが案内されている点は留意しておく必要があります。既にVoltaを使っているプロジェクトであれば急いで乗り換える必要はありませんが、これから新規に導入する場合は、miseも含めて比較検討したうえで選択するとよいでしょう。