こんにちは、デザイン事業部の長谷です。
今回は、JSツールマネージャーのVoltaについてになります。個人的にVoltaはとてもシンプルで使いやすく、かつ動作が軽く便利だなと感じています。
では早速いきましょう〜
目次
概要
VoltaはJavaScriptエコシステムのNode.js、npm、yarnなどを管理する高速で信頼性の高いツールです。プロジェクトごとに異なるNode.jsバージョンを自動で切り替えることができ、チーム開発において一貫した環境を提供します。
Voltaの特徴
Voltaの基本情報は以下になります。
基本情報
- 名前: Volta – The JavaScript Tool Manager
- 開発言語: Rust
- 対象: Node.js、npm、yarn、TypeScript等のJavaScript開発ツール
- プラットフォーム: クロスプラットフォーム対応
Voltaを使用すると以下の問題を解決することができます。
解決できる問題
- プロジェクト間でのNode.jsバージョン競合 – プロジェクトAはNode.js v21 + が必要、プロジェクトBはNode.js v22 + が必要
- 開発チーム間での環境差分 – 開発者Aの環境と開発者Bの環境が異なる
- ツールバージョンの管理負荷 – 手動でのツール切り替えの手間
他ツールとの比較
機能 | 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 / Linux(WSL2可、Windowsネイティブは非対応) | macOS / Linux |
プロジェクト固有設定 | package.json の volta フィールド |
.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" } }
- オンボーディング用にプロジェクトの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コマンドなどを組み合わせることにより、個人・チームどちらにおいても環境セットアップを効率化できるようになると思います。
興味がある方はぜひ使用してみてください!本記事をお読みいただきありがとうございました!