VoltaでNode.jsをバージョン管理する
皆さん、こんにちは。技術開発グループのn-ozawanです。
台風の名前は、あらかじめ用意された140個のアジア名を順番に用いて命名されます。
本題です。
Node.jsもしくはnpmをインストールするときにバージョン管理ツールを使うことはよくあります。ただ、Node.jsのバージョン管理ツールって沢山あって何を使えばいいのか迷ってしまいます。いろいろと検討してみた結果、Voltaを使うようになったので、今回はVoltaを紹介したいと思います。
目次
Volta
Voltaは割と最近にリリースされたNode.jsのバージョン管理ツールです。もちろん、Node.js以外にもnpmやyarnのバージョンも管理できます。同様にバージョン管理ツールと言えば、おそらく利用者が多いnvm
、軽量に動作するfnm
、Node.js以外もバージョン管理可能なasdf
などがあります。そんな中でVoltaを使い始めた理由は以下があります。
1.Windows、MacOS、Linuxの各OSに対応している
OSごとに使用するツールを使い分けるのは少し面倒です。出来れば1つのバージョン管理ツールに纏めたいです。
2.プロジェクトディレクトリに移動するだけで、自動的にバージョンを切り替えてくれるpackage.json
にNode.jsやnpmなどのバージョンを指定しておけば、特別なコマンド操作なしで自動的に切り替えてくれます。
インストール手順
インストールは以下のコマンドを実行するだけです。
$ curl https://get.volta.sh | bash
Windowsの場合は、githubのリポジトリから最新のインストーラ(*.msi
)をダウンロードしてインストールしてください。
チートシート
Node.jsをインストールする
$ volta install node # Node.jsの最新バージョンをインストール
$ volta install node@18.17.0 # Node.jsのv18.17.0をインストール
$ volta install npm # npmの最新バージョンをインストール
$ volta install npm@9.8.1 # npmのv9.8.1をインストール
Node.jsをアンインストールする
$ rm -rf ~/.volta/tools/image/node/18.17.0
Voltaのドキュメントには、volta uninstall というコマンドがあるのですが、今(2023-08-30)はまだ使えないようです(GitHubのIssue #327を参照)。なので、アンインストールするときはフォルダごと削除します。
Windowsの場合は%LOCALAPPDATA%\Volta\tools\image\node
配下にある該当バージョンのフォルダを削除すればOKです。
使用中のバージョンを確認する
$ volta list # 現在使用しているNode.jsやnpmなどのバージョンを表示する
$ volta list all # インストールしたNode.jsやnpmなどのバージョンをすべて表示する
$ volta list node # インストールしたNode.jsのバージョンを表示する
$ volta list node -c # 現在使用しているNode.jsのバージョンを表示する
使用するバージョンを指定する
既にインストール済みのバージョンをvolta install
で指定することでバージョンを切り替えることが出来ます。後述するようにpackage.json
にバージョンを指定しておけば、特別な操作なしでバージョンを切り替えることが出来ます。
そのプロジェクトで使用するバージョンを指定しておく
package.json
に以下のようにバージョンを指定しておくことで、特別な操作なしにバージョンを切り替えることが出来ます。
"volta": {
"node": "18.17.1",
"npm": "9.8.1"
}
例えば、上記をpackage.json
に記述していた場合、package.json
があるフォルダに移動して、nodeもしくはnpmのコマンドを実行するだけで、指定したバージョンで実行してくれます。もし該当バージョンをまだインストールしていない場合は、自動的にインストールした後に実行します。
おわりに
冒頭でもお話しした通り、Node.jsのバージョン管理ツールは沢山あります。それぞれに一長一短があり、これが正解、と言えるツールはないかと思います。Windowsで開発しないのであれば、利用者が多く安定しているnvm
がいいかと思います。また、既存のプロジェクトが.nvmrc
や.node-version
でバージョンを指定している場合はfnm
なども良いでしょう。自分自身の開発スタイルに合わせて選んでみてください。
ではまた。