Nodeのバージョン管理ツールVOLTA⚡

2021/03/22に公開

WindowsのNodeバージョン管理を探して三千里

みなさんWindowsのNodeのバージョン管理ってどうしてますか?

私はNodistを使っていたのですが、WSL環境と相性が悪い(npmのコンフィグが一部Windowsのパスと混在して壊れた)ので、ひとまずWinもLinuxも同じ管理ツールがないものか、と探していたところ、VOLTAがRustで書かれていて早いしマルチプラットホームだぞ、ということで使用してみました。

VOLTA Install

残念ながら新進気鋭なためか、MS開発の新進気鋭のパッケージ管理ツールWingetや毎度おなじみChocolateyには対応していません。

そういうわけでGitHubからインストールしよう。.msiファイルで良いでしょう。

今回入れたバージョンは1.0.1。メジャー昇格おめでとう。みたいなタイミング。

Node Install

他のNodeバージョン管理ツールに付いているような現在のNodeのリストをババーンと列挙するコマンドはないようです。

NodeのLTSをインストールもしくは別バージョンからセット

C:\>volta install node

Nodeの最新版をインストールもしくは別バージョンからセット

C:\>volta install node@latest

インストールする際とバージョンをセットする際、どちらもinstallで行うのがシンプルで漢らしい感あります。

Yarnの最新版をインストールしたい

C:\>volta install yarn@latest

npmやYarn、pnpmあたりのツールもinstallコマンドでインストール可能。

(npmはnodeと共にインストールされます)

現在インストール済みのNode(とツールチェーン)を確認するとき

C:\>volta list all

プロジェクトでバージョン指定するPin止め

C:\Project>volta pin node@10.15

pinってのがモダンなツールっぽいおしゃれ感あります。

このコマンドを使用するとpackage.jsonにvolta向け設定が記載されます。

voltaを使用しているメンバーがこのプロジェクトをデプロイする際、自動で指定したバージョンがインストールされ、使用される仕組みです。自然な流れでいいですね。

この指定方法、そろそろNodeパッケージ管理ツール界わいで合わせてもらいたいよねー、とか思っちゃう今日この頃。

インストールしちゃったnodeのアンインストール

C:\Project>volta uninstall node
error: Uninstalling node is not supported yet.

helpには「The tool to uninstall, e.g. node, npm, yarn, or <package>」って書いてあるけど、現状アンインストールできないようです。

アンインストール手段はあってGitHubでサポートされてました
サマって訳すと、

~/.volta/tools/image/node/ (Windows上は%LOCALAPPDATA%\VOLTA\tools\image\node)配下のバージョン番号ディレクトリーを消せばおk

という感じで。

WebStormへの登録

(追記:2022/05/18)
WebStorm2022.1からVoltaの機能が強化され、pnpm等のツールパス ~/.volta/bin/pnpm に対応しました。
下記のimage配下の実体への設定は不要になっています。

https://www.jetbrains.com/webstorm/whatsnew/2022-1/#:~:text=will work%2C too.-,Support for Volta,-In this release

(追記:2021/06/29)

~\AppData\Local\Volta\tools\image\packages\pnpm\node_modules\pnpm

WebStormでpnpm等のパッケージ管理ツールのパスを設定するとき、自動で読み取ります。
また、WebStormはコマンドラインを自動生成するとき、bin/pnpm.jsを実行します。そのため、自動で抽出してきたパスの場所がずれると動作しません。

VOLTAが設定するグローバルなツールのパスは ~/.volta/bin/pnpm です。
このファイルの中身はコマンドが書いてあり、実質的にはショートカット的な働きになっています。そして、このファイルの配下にはpnpm.jsは存在しないのです。

上記のパスはpnpmの例ですが、他のツールの場合もpackages配下を確認してください。

まとめ

使用感としては軽快で扱いやすいです。

VOLTAはシンプルなコマンド体系です。そのため大量のコマンドを覚える必要はなく、VOLTAがやれることに集中できるという選択のためで、そういった面もまた扱いやすさになってますね。

気に入ったので、しばらくはWindowsとWSL共にVOLTA使っていきます。

VOLTAの現場からは以上でーす。

参考

https://volta.sh/
https://github.com/volta-cli/volta

Discussion