かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Node.js バージョン管理ツールを VOLTA にしてみた!

Node.js のバージョン管理ツールに asdf を使っていたのですが VOLTA が速くて良いよとオススメされたので乗り換えてみた

⚡ VOLTA の特徴 ⚡

  • Rust製で早い
  • プロジェクトディレクトリに入ると自動でバージョンが切り替わる (バージョンは package.json に記録される)
  • Windows およびすべての Unix シェルを含むクロスプラットフォームのサポート
  • yarn, npm などパッケージマネージャーのバージョンも固定できる
  • global インストールしたパッケージもインストールしたディレクトリが記憶され、自動でバージョンが切り替わる
  • インストールが簡単

cf. Introduction | Volta

asdf fnm VOLTA
言語 Shell Rust Rust
バージョン管理 Node.js 以外も可 Node.js のみ Node.js のみ
バージョン指定 .tool-versions, .node-version .node-version, .nvmrc package.json の独自フィールド

cf.

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 を合わせてリポジトリ管理するのが良さそう

おわり ₍ ᐢ. ̫ .ᐢ ₎


[参考]