こんにちは、デザイン事業部の長谷です。
今回は、JSツールマネージャーのVoltaについてになります。個人的にVoltaはとてもシンプルで使いやすく、かつ動作が軽く便利だなと感じています。
では早速いきましょう〜

目次

  1. 概要
  2. 他ツールとの比較
  3. インストール方法
  4. 基本的な使い方
  5. 実際の使用フロー
  6. 移行ガイド
  7. まとめ
  8. 参考資料

概要

VoltaはJavaScriptエコシステムのNode.js、npm、yarnなどを管理する高速で信頼性の高いツールです。プロジェクトごとに異なるNode.jsバージョンを自動で切り替えることができ、チーム開発において一貫した環境を提供します。

Voltaの特徴

Voltaの基本情報は以下になります。

基本情報

  • 名前: Volta – The JavaScript Tool Manager
  • 開発言語: Rust
  • 対象: Node.js、npm、yarn、TypeScript等のJavaScript開発ツール
  • プラットフォーム: クロスプラットフォーム対応

Voltaを使用すると以下の問題を解決することができます。

解決できる問題

  1. プロジェクト間でのNode.jsバージョン競合 – プロジェクトAはNode.js v21 + が必要、プロジェクトBはNode.js v22 + が必要
  2. 開発チーム間での環境差分 – 開発者Aの環境と開発者Bの環境が異なる
  3. ツールバージョンの管理負荷 – 手動でのツール切り替えの手間

他ツールとの比較

機能 Volta fnm nvm asdf nodebrew
インストール方法 Unix: curl https://get.volta.sh \| bash / Homebrew(macOS/Linux) / winget(Windows) Homebrew / winget / Scoop / Chocolatey / Cargo / インストールスクリプト 公式はインストールスクリプト(curl/wget)。HomebrewのFormulaは存在するが公式サポート外 Homebrew / 事前ビルドバイナリ / go install / ソースからビルド curl -L git.io/nodebrew \| perl - setup / Homebrew
速度(公称) 高速(公式が明記) 高速(READMEが明記) 記載なし 記載なし 記載なし
設定方法 自動検出(プロジェクトの pin を自動適用) 自動切替可fnm env --use-on-cd.nvmrc / .node-version 手動切替nvm use)。シェルフック/プラグインで自動化は可能 設定ファイル.tool-versions)。legacy_version_file = yes.nvmrc / .node-version も利用可 手動nodebrew use
プラットフォーム対応 Windows / macOS / Linux Windows / macOS / Linux macOS / Linux / WSL(Windows) macOS / LinuxWSL2可、Windowsネイティブは非対応 macOS / Linux
プロジェクト固有設定 package.jsonvolta フィールド .nvmrc / .node-version .nvmrc .tool-versions(+設定で .nvmrc / .node-version なし
複数ツール管理 可能(Node・npm・Yarn・pnpm*+npmパッケージバイナリ) 不可(Nodeのみ) 不可(Nodeのみ) 可能(多言語プラグイン) 不可(Nodeのみ)

Voltaが優れている点

  • volta pinコマンドで、プロジェクトのNode.jsバージョンなどを固定可能
  • プロジェクトディレクトリに入ると自動で適切なバージョンが有効化される
  • Node.js、npm、yarn、TypeScript等を一元管理
  • Rust製で動作が高速かつ安定

インストール方法

今回はmacOSでのインストールや使い方をメインに記載します。

macOS

# Option 1: 公式スクリプト (推奨)
curl https://get.volta.sh | bash

# Option 2: Homebrew
brew install volta

# 環境変数の再読み込み
source ~/.zshrc  # または ~/.bash_profile

インストール確認

volta --version
which volta

もし volta: command not found エラーが出る場合配下のコマンドで.zshrcファイル内を編集し、パスを通す。

echo 'export VOLTA_HOME="$HOME/.volta"' >> ~/.zshrc
echo 'export PATH="$VOLTA_HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

基本的な使い方

1. Node.jsのインストール

# 最新LTSバージョンをインストール
volta install node

# 特定バージョンをインストール(以下は一例)
volta install node@v22.20.0

# インストール済みバージョンの確認
volta list node

# 現在のバージョン確認
node --v

2. プロジェクト固有のバージョン設定

以下volta pinコマンドでバージョンを固定した場合、その固定したプロジェクトを開くと自動で固定されたバージョンに切り替わります。

# プロジェクトディレクトリでバージョンを固定
cd my-project
volta pin node@v22.20.0

# npmやyarnのバージョンも固定可能
volta pin npm@v9.8.1
volta pin yarn@v1.22.19

この操作によりpackage.jsonに以下が追加されます。

{
  "volta": {
    "node": "22.20.0",
    "npm": "9.8.1",
    "yarn": "1.22.19"
  }
}

実際の使用フロー

Voltaをすでにインストールした上で、以下の流れでセットアップしておくと運用が楽になります。

1.Voltaで使用するNode.jsバージョンをインストール

 # プロジェクトで使用するNode.jsバージョンをvoltaでインストール
 volta install node@v22.20.0

 # Node.jsのLTSバージョン一覧を閲覧したい場合はcurlコマンドが便利
 curl -sL https://nodejs.org/dist/index.json | jq '[.[] | select(.lts)] | sort_by(.version | ltrimstr("v") | split(".") | map(tonumber)) | .[] | .version'

上記のコマンドでNode.jsのLTS版が昇順に表示されます。

2.volta pinでバージョンを固定

 # 使用するNode.jsバージョンを固定
   volta pin node@v22.20.0

上記のpinコマンドを使用するとpackage.jsonに以下記載が追加される。

{
 "volta": {
   "node": "22.20.0"
 }
}
  1. オンボーディング用にプロジェクトのREADMEに以下を記載
## 開発環境
 - Node.jsは、Voltaを使用し管理しています。
 - `brew install volta`または`curl https://get.volta.sh | bash`でvoltaをインストールいただく  
 - `git clone`後、`npm install`で環境構築完了

移行ガイド(nodebrewからVoltaの移行例)

1. 現在のNode.jsバージョンを確認

現状のインストールされているNode.jsのバージョンをメモっておく。

nodebrew list

2. Voltaをインストール

以下コマンドで、Voltaをインストールする。

## option1
curl https://get.volta.sh | bash

## option2
brew install volta

source ~/.bashrc  # または ~/.zshrc

3. 既存のNode.jsバージョンをVoltaで再インストール

先ほどメモをとったNode.jsのバージョンを指定してVoltaでインストールし直す。

# 例:Node.js 22.20.0を使用している場合
volta install node@v22.20.0

4. nodebrewをアンインストール

# nodebrewディレクトリを削除
rm -rf ~/.nodebrew

# PATHからnodebrewを削除(.bashrcまたは.zshrcから)
# export PATH=$HOME/.nodebrew/current/bin:$PATH の行を削除

まとめ

今回はJS管理ツールのVoltaについてまとめてました。

Voltaを導入することで以下が達成されると思います。

  • プロジェクト間でのNode.jsバージョン管理が自動化される
  • チーム開発での環境統一が簡単になる
  • 新メンバーのオンボーディングが効率化される
  • package.jsonでの設定管理により透明性が向上する

voltaコマンドでは、Node.jsのダウンロード可能バージョン一覧などを閲覧できなかったりと他の管理ツールに少し劣っている部分などもありますが、curlコマンドなどを組み合わせることにより、個人・チームどちらにおいても環境セットアップを効率化できるようになると思います。

興味がある方はぜひ使用してみてください!本記事をお読みいただきありがとうございました!

参考資料