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

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に設定する実体

(追記: 2021/02/13)

~\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がやれることに集中できるという選択のためで、そういった面もまた扱いやすさになってますね。

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

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

参考

https://volta.sh/

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