JavaScriptに関するお知らせ

SINCE2019
>
【JS】Node.jsのバージョン管理をnodenvからvoltaに変更した理由と感想

【JS】Node.jsのバージョン管理をnodenvからvoltaに変更した理由と感想


こんにちは!ゴールデンウィークはCIに費やしました。Mizutani(@sirycity)です。CIいじるの楽しいね。

今日はNode.jsのバージョン管理ツールをnodenvからvoltaに変更した理由と、実際に変更してみた感想についてです。

Node.jsのバージョン管理ツールとは

Node.jsはいろんなバージョンがあるんだけど(超当たり前)、プロジェクトごとにバラバラのやつ使ってたりすると管理がめんどいのでバージョンを簡単に変えられるツールがよく使われます。それがバージョン管理。

有名なやつだと一昔前ならnodebrew。最近だとnodenvを使ってる人が多いんじゃないでしょうか。僕もずっとnodenvだった。でも今回voltaに変えた。

nodenvでちょっと不満だったところ

そんなに不満があったわけじゃないけどね。

M1Macでの挙動が微妙

これが最大の理由ですが、nodenvはM1Macの環境ではv15以下のバージョンをターミナルからインストールできないです。まあrosetta2でターミナル立ち上げれば問題ないけども、そこでひと手間あるのがちょっと嫌だった。

mac専用

windowsだとnodistってのを使わんといかんらしい(あんまりよく知らない)。でもmacでしか使えないってのがちょっと忌避感。いまどきクロスプラットフォームだよね!じゃあskecth使うな

バージョンの記述方法が独特

nodenvは.node-versionってファイルにバージョンが記述されてそれでバージョンが管理できるんだけど、ちょっと記述方法が独特。jsonとかyamlにしてくれないと他ツールと連携しづらい。

nodeのバージョンしか管理できない

そらnodeの管理ツールだからな。

voltaについて

voltaはNode.jsのバージョン管理ツールです。すごい新しめのやつ。Rust製。最近フロントエンド系のツールでRust製多いよね。普通にhomebrewで落とせるよ。

voltaで良かったところ

npmとかも固定できる

nodenvはnodeのバージョンは固定できるけど、nodeの中に入ってるnpmとかは管轄外。yarn使ってる場合はyarnが入ってることも明示できない。 一方voltaはnodeはこのバージョンでnpmはこのバージョンみたいにどっちも指定できる。もちろんyarnも。

どんなプラットフォームでも使える

M1対応かんぺき。windowsでも使えるよ。Linuxも大丈夫!

速い

一応CIで測ってみたら4秒くらい速くなってた。nodenvも全然速かったけどね。Rustって付いたら全部速い。

jsonで管理できる

普通にpackage.jsonで管理できる。ちょっとめんどいけどeslintとかみたいに専用の設定ファイルも作れる。もちろんこっちもjson。 んでjsonだから他ツールと連携できたりする。nodeのバージョンを参照できたり。

voltaであんまり良くなかったところ

資料が少ない

nodenvに比べて資料は少ないです。新しいツールだからしょうがないね。例えば現在インストールしているバージョン一覧とかはnodenvだとnodenv versions、voltaはvolta list allなんだけどこのコマンドですらvoltaは調べるのに一苦労。

使えない機能がある

例えば配信されてるnodeのバージョン一覧とかはnodenvだとnodenv install --listで確認できるけど、voltaにはそんな機能ない。あとnodeのバージョンをアンインストールする時もvoltaはディレクトリまで消しに行かなきゃいかん。nodenvは普通にnodenv uninstall 16.0.0でできる。まあこの辺はnode専用のnodenvと汎用的なvoltaの違いかな?

(今の所は)あんまりメリットを感じない

npmとかyarnのバージョン固定できるのは嬉しいんだけど、パッケージ管理ツールのバージョンを固定する必要が果たしてあるのかはあんまり分かってないです。特にnpmはnodeに同梱されてるしね。...勿論、固定した方が良いに決まってるんだけどね。

新しいバージョン管理ツールのサポートがいまいち

具体的にはYarn2pnpmのサポートがいまいちです。特に前者。もっとも、これらのツールが今後どうなっていくかがまだ不透明な部分もあるので現状しょうがない気もしますね。あとdenoは全くサポートなし。

さいごに

volta、まだまだ使い始めて1週間程度ですが今の所問題なく使えています。また本格的に3ヶ月くらい使ったら記事書こうかな?以上!



PREV
2021-04-29
【CSS】右寄せの方法は結局flexが一番良さそう

NEXT
2021-05-10
【CSS】Web制作でTailwindCSSを使おうとした時に起こる問題