Link and Motivation Developers' Blog

リンクアンドモチベーションの開発者ブログです

nodeのバージョン管理ツールをvoltaに決めました【2022年5月現在】

こんにちは、リンクアンドモチベーションでアプリケーション開発をしております。岡田です。

普段は新規のプロダクト開発で主にフロントエンドの開発をしております。

以前に記事も書いてますのでよろしければこちらも御覧ください。

link-and-motivation.hatenablog.com

先日、広木さんのこの様な記事が公表されました。 僕もテックブログの運営をしていますが、肩肘張らず普段の思考をテックブログに落としていこうと思います。

newspicks.com


さて、現在僕は新規のプロダクト開発に携わっています。しかしまだまだ、プロダクトもチームもプロセスも黎明期です。 ライブラリのアップデートをしようと色々触っていたら、チームでnodeのversionも管理していなかったので、まずはここからだなと思いnodeのversion管理をすることになりました。

そこで諸々選定したのでそれを記載したいなと思います。

きっかけ

dependabotくん 「ライブラリのバージョン上げてね〜〜。色々溜まってるよ〜〜」
岡田 「dependabotくんがいっぱいPR作っちゃうし、ライブラリのバージョン上げていくか〜」
岡田 「まずnodeのバージョンいくつだっけ??」
岡田 「??どこにもまとまってなかったっけ??前のPJTはnodebrew使ってたのにな。。。」
岡田 「.node-versionはありそう。けど、自分が使ってるversionと違うものが書かれてるな。。。」
岡田「これはまとまってなさそうだな...」

開発者の環境を合わせて開発していくために、まずはnodeのバージョン管理ツールを入れることを決めました。

方針

  • 開発者は基本的にMac OSなので、Macで動作するもの
  • 使用しているversionを.node-versionやpackage.jsonなどのコードに残すことが出来るか
  • メンテナンスされているかどうか
  • 動作がサクサクしてストレスフリーかどうか

ぐらいの観点で見ていこうかと思っていました。

version管理ツール比較

名前 version管理方法 最終commit年 言語 メモ
nvm .nvmrc ◯ 2022年 shell githubのスター多い。結構人気。
n .node-version ◯ 2022年 shell インタラクティブに変更できそう。ワクワク。
volta package.json ◯ 2022年 Rust Rustで書かれてて動作が早いらしい。名前もかっこいい。
asdf .node-vesion ◯ 2022年 shell .tool-versionsに書いたらいろいろなversion管理できそう。変な名前。
nodenv .node-version △ 2020年 shell 聞いたことあるけど、メンテされてなさそう?
fnm .node-version ◯ 2022年 Rust READMEの動き早!!良い感じ!?fast node manegerって名前なんだ。
nvs .node-version ◯ 2022年 JavaScript インタラクティブに操作できるのか!面白そう!
nodebrew ✕ ローカル ◯ 2022年 Perl 前のPJTでも使ってたけど、version管理はコマンド操作をREADMEに書いてたな。

.node-versionpackage.jsonを使って、version管理できるツールが多いことを知りました。。。

現段階では

でまだまだ絞りきれていません。

実行速度

では次に、それぞれの言語を見ていきましょう。

殆どが、shellで書かれていますが、voltafnmはRustでかかれてそうです。

実際の操作感もこちらの2つのほうが早そうなので、こちらの2つに絞りました。

今のチームにない新たな、ツールを導入するという際に重いものよりは比較的軽いものを導入するほうが受け入れやすいかなと思ったからです。

どこでversion管理するのか

チームの現状としてツールによって管理してこなかったというのもありました。 しかし、.node-versionファイルはあるのにversion管理されてこなかった。という現実もありました。

そこで、思い切って今回はpackage.jsonで管理しているvoltaに乗り換えることを決めました!!

実際に導入してからも非常に動作も早く、気に入っております。

詳しい導入手法はこちらに書いてありますので、ぜひご参照ください!

Introduction | Volta

おわりに

この様なツールを選定するのはあまり経験としてなかったですが、チームのみんなに相談しつつ、選定基準と必要な背景を明確にすることが大事かなと思いました!!

この記事がどなたかの役にたてば嬉しいです。