【JS】バージョンマネージャーをVoltaからProtoに変更した話
明けましておめでとうございます。Mizutani(@sirycity)です。今年の目標は…えっと…
今日はバージョンマネージャーをVoltaからProtoに変えた話です。
バージョンマネージャーって?
プログラミング言語はバージョンごとに微妙に挙動違いますよね?なのでこのプロジェクトではこのバージョン、このプロジェクトではこのバージョン…みたいにバージョンを指定できると便利ですよね。その機能を持ったツールがバージョンマネージャーです。
有名どころ
Node.jsの場合nodenvが有名ですね。僕も最初はnodenverでした。がその後Voltaに変えました。その時の記事↓
Voltaの不満点
まあ別に全然不満があったとかじゃないんですが一応。
bunが使えない
VoltaはBun未サポート。Bun、一度使うとやめられないです。バックエンド絡まなければすぐにでもnodeから移行できますしほぼ上位互換です。うちも10月頃から本格導入しました。
ただバックエンドが絡むとまだnodeからは離れられず、あとはGatsbyみたいなBun未対応のレガシーも抱えてたりで、Volta+NodeとBunの環境が混在してることが一つの課題でした。
Voltaの開発がやばい?
やばいってのも抽象的な表現ですが見た感じ開発が停滞気味でちょっと不安…かも。pnpmサポート諦めてたり、未だにuninstallコマンドが無かったり。まあ基本機能はもう現時点で完成されてるけどね。
乗り換え候補
ってな感じでいくつか乗り換え候補を探してて、最初に考えたのがrtx。nodenvやVoltaからの移行勢はわりといるんじゃないでしょうか。ただwindows未サポートなので断念。僕はWSLかMacだけど、新しく入ってくる人のことも考えるとwinサポートは欲しかった。最近までWin未サポートのBun普通に使ってたけど
ということで白羽の矢が立ったのがProtoです。
Protoについて
まあなんてことはないバージョンマネージャーです。ポイントはNodeとBun両方サポートしてることと、全OSいけること。あとまあGoとかDenoとかPythonも一応いける。Voltaでできなかったpnpmも使えるしuninstallコマンドもあるよ。
性能的に目立ったものはないです。ごく普通。まあRust産なんで早いです。Voltaよりはちょい遅かな?でも全然いい。
Voltaからの移行について
というわけでVoltaからの移行…と言ってもそんな無いけど。についてです。
バージョン固定のファイル
Voltaはpackage.jsonに書きましたが…
"volta": {
"node": "20.0.0"
}
Protoでは.prototoolsっていう専用のファイルに書きます。
node = "20.0.0"
CI
GitHub ActionsではこうやってたVoltaのプラグインを…
- uses: volta-cli/action@v4
こう。
- uses: moonrepo/setup-toolchain@v0
with:
auto-install: true
以上です。はい。こんだけ。
懸念点
そんな無いですがわりとマイナーで開発終了しないのか不安です(Voltaから移行してきた意味)
あとvolta list allみたいな全パッケージの全バージョン見るコマンドが無かったり、 指定されてるバージョンが無い時に自動でインストールせずにエラー吐いたりするあたりがびみょいです。 これは設定でできた。でもbun使えるから全然メリットが上。
さいごに
というわけでProto、しばらくは使っていこうと思います。rtxにシェアを食われる未来が見えなくもないですが、rtxはwindowsサポートしないみたいなのでしょうがないですね。以上。
まさかの展開
ここまで書いといてなんとたった今(2024年1月4日)、rtxがmise-en-placeに名前変えました。
いや驚きすぎる。なんやねんこの名前。まあいいや。以上です。