Node.js のバージョン管理ツールに asdf を使っていたのですが VOLTA が速くて良いよとオススメされたので乗り換えてみた
⚡ VOLTA の特徴 ⚡
- Rust製で早い
- プロジェクトディレクトリに入ると自動でバージョンが切り替わる (バージョンは
package.json
に記録される) - Windows およびすべての Unix シェルを含むクロスプラットフォームのサポート
- yarn, npm などパッケージマネージャーのバージョンも固定できる
- global インストールしたパッケージもインストールしたディレクトリが記憶され、自動でバージョンが切り替わる
- インストールが簡単
asdf | fnm | VOLTA | |
---|---|---|---|
言語 | Shell | Rust | Rust |
バージョン管理 | Node.js 以外も可 | Node.js のみ | Node.js のみ |
バージョン指定 | .tool-versions , .node-version |
.node-version , .nvmrc |
package.json の独自フィールド |
cf.
- asdf vs volta - compare differences and reviews? | LibHunt
- NodeJSのバージョン管理ツールって結局どれ使えばええんや! - Qiita
- asdf vs fnm vs volta | npm trends
VOLTA のインストール
% curl https://get.volta.sh | bash # シェルの再起動 % $SHELL -l % volta -v 1.1.1
Mac では シェルを再起動するだけでパスなどの設定も不要だだった
node.js, npm は .volta
ディレクトリにインストールされる
% which node /Users/user_name/.volta/bin/node % which npm /Users/user_name/.volta/bin/npm
node のバージョンを追加
volta install node@version
でバージョンを追加できる
node.js v18.16.0 を追加する場合は下記のようになる
% volta install node@18.16.0
バージョンを省いた場合は最新の LTS がインストールされる
yarn, pnpm のインストール
% volta install yarn % volta install pnpm
Node バージョンの固定
volta pin node@{version}
で package.json
にバージョンを固定するフィールドが追加される
volta をインストールしているとディレクトリに入るとバージョンが自動に切り替わる
% volta pin node@18.16 % volta pin yarn@4
package.json
"volta": { "node": "18.16.0", "yarn": "4.0.0-rc.42" }
.node-version
の作成
チームメンバーが必ずしも全員 VOLTA を使っているとは限らないので .node-version
ファイルを作成しておくほうが安全
% node -v> .node-version
.node-version
の書き方や有効なツールについては node-version-usage に詳しいリストがある
所感
- asdf では node.js を扱う際に
asdf node <command>
とちょっと覚えにくかったのですが、VOLTA は node.js しか扱わない分コマンドがシンプルになって体験が良い - 一方バージョンの固定方法が
package.json
での独自フィールドなのでチーム全員が VOLTA を使っている場合は良いが、そうでない場合は.node-version
を合わせてリポジトリ管理するのが良さそう
おわり ₍ ᐢ. ̫ .ᐢ ₎
[参考]
- Volta - The Hassle-Free JavaScript Tool Manager
- asdf vs volta - compare differences and reviews? | LibHunt
- GitHub - shadowspawn/node-version-usage: Document current usage of .node-version file
- Node 系ツールのプロジェクト間のバージョン管理に Volta を使い始めてみた
- NodeJSのバージョン管理ツールって結局どれ使えばええんや! - Qiita
- フロントエンド開発環境: チーム開発するリポジトリで node のバージョンを揃えたい - かもメモ
- Mac M2 Git と Node.js 環境のセットアップ - かもメモ
- Uninstall asdf · Mac Install Guide