Volta
別名: volta pin / ボルタ
Node.js とパッケージマネージャのバージョンをプロジェクト単位で package.json に固定し、ディレクトリに入るだけで自動的に切り替える JavaScript ツールチェーンマネージャ。
公開:
定義
Volta は Node.js と npm・Yarn・pnpm のバージョンをプロジェクトごとに固定するツールチェーンマネージャである。package.json の volta フィールドに書かれたバージョンを読み、そのディレクトリで node や npm を実行した時点で該当バージョンへ差し替える。
詳細
volta pin node@22 を実行すると package.json に固定バージョンが書き込まれ、リポジトリを共有する全員が同じ Node で動くようになる。
切り替えは PATH 上に置かれた Volta 側の実行ファイルが担うため、シェルの起動スクリプトに手を入れる必要が無く、nvm use に当たる明示的な切り替えコマンドも要らない。
ここが nvm との最大の違いである。
Node 本体を ~/.volta 配下のユーザー領域に置くため、システム所有のディレクトリへ書き込もうとして起きる権限エラーの回避策としても使える。
グローバルに入れたコマンドラインツールは、インストール時点の Node に紐づけて保存される。
よくある誤解
- nvm と併用できる: どちらも PATH の先頭に自分の実行ファイルを置く方式なので、両方入れると先に来た方が勝ち、意図しないバージョンで動くことがある。
enginesを満たしてくれる:package.jsonのenginesは要求の宣言に過ぎず、Volta のvoltaフィールドとは別物である。Node.js で engines のバージョン不一致(EBADENGINE)が出る はengines側の話であり、Volta で固定したからといってenginesの記述が変わるわけではない。
関連
Corepack は Yarn と pnpm のバージョン固定だけを担う Node.js 同梱の仕組みで、Node 本体は対象外である。
CI 側は actions/setup-node の node-version-file を使うと、ローカルの固定と揃えやすい。