きっかけ
NodeJSのバージョン管理ツールってめちゃめちゃ種類ありますよね!
結局一番良いのはどれなんや!
気になったのでまとめてみました。
ちなみにパッケージマネージャーについては、こちらで詳しく書きましたので、関心がある方は、ぜひご覧ください。
ツール選定条件
1. macOSとWindowsに対応しているかどうか
どちらのOSも使用する可能性を考慮して。
2. 使用しているバージョンを.node-version などのドキュメントに残せるかどうか
運用保守の観点を踏まえて、誰でも再現可能にするため。
3. プロジェクトに追従して自動でNode.jsのバージョンが変更される
様々なプロジェクトを移動する機会が多い可能性を考慮して。
以下の7つのツールを検討します。
検討ツール
- nvm
- n
- nodenv
- nodebrew
- fnm
- asdf
- Volta
各ツールの比較
以下7つのツールの比較をします。
nvm
GitHubURL: https://github.com/nvm-sh/nvm
概要
-
GitHubスター数: 62k
-
最終リリース: 10月14日
条件を満たしているか
-
macOSやLinuxでは問題なし。WindowsではWSLなどを使うと問題なく動作する。
-
.nvmrcに記述される。
-
avnという別ツールを使うか、シェルスクリプトを記述する必要がある。
特徴
- かなり前から存在するツールで、GitHubのスター数が一番多いバージョン管理ツール。
- どのツールよりもドキュメントが豊富で、メンテナンスもしっかりされている。
- 特別な理由がない限りはこのツールを使うのが良さそう。
n
GitHubURL: https://github.com/tj/n
概要
-
GitHubスター数: 16.9k
-
最終リリース: 2022年7月16日
条件を満たしているか
-
npmの環境があれば問題なし。macOSの場合はbrewでも導入できる。
-
.n-node-versionや.node-version、.nvmrcに記述される。
-
nvmと同様にavnという別ツールを使う必要がある。
特徴
macOSの場合は直接brewから導入できる。
Windows等それ以外の場合は、一度npmが使用できる環境を導入した後にnpm installをして導入する必要がある。
nodenv
GitHubURL: https://github.com/nodenv/nodenv
概要
-
GitHubスター数: 1.9k
-
最終リリース: 2020年7月20日
条件を満たしているか
-
macOS準拠。Windowsで同等の機能を扱うためにnodistが必要。
-
.node-versionに記述される。
-
該当のバージョンがダウンロードされている場合にはすぐ使える。そうでない場合はインストールを自分で実行する必要がある。
特徴
-
anyenv + nodenvで環境構築している人が多い。
-
Windowsにて同様の操作をする場合に必要なnodistというバージョン管理ツールの最終リリースが2019年3月とかなり前。
nodebrew
GitHubURL: https://github.com/hokaccha/nodebrew
概要
・GitHubスター数: 1k
・最終リリース: 2022年3月19日
条件を満たしているか
-
macOS準拠。Windowsで同等の機能を扱うためにはnodistが必要。
-
なし。
-
公式のドキュメントには記載なし。
特徴
-
brewを使って導入できるためmacOSの場合環境構築の難易度がかなり低い。
-
提供されている機能がNode.jsのバージョンの切り替えのみ
fnm
GitHubURL: https://github.com/Schniz/fnm
概要
・GitHubスター数: 5.4k
・最終リリース: 2022年7月19日
条件を満たしているか
-
macOS、Windowsともに問題なく動作。Linuxもサポートしている。
-
.node-versionや.nvmrcに記述される。
-
該当ディレクトリに移動後、installまで自動で行ってくれる
特徴
- 他のツールで使用しているバージョン管理方法を使用することができ、互換性がある。
- Rustで書かれており、処理速度が速い。
asdf
GitHubURL: https://github.com/asdf-vm/asdf
概要
・GitHubスター数: 16k
・最終リリース: 2022年6月9日
条件を満たしているか
-
macOSやLinuxでは問題なし。WindowsではWSLなどを使うと問題なく動作する。
-
.tool-versionsに記述される。
-
該当ディレクトリに移動後、installする必要がある。
特徴
Node.jsだけではなく、様々な言語のバージョンを管理してくれる。
普段の開発で多様な言語やツールを扱うことがある人におすすめ。
Volta
GitHubURL: https://github.com/volta-cli/volta
概要
・GitHubスター数: 6.9k
・最終リリース: 2022年10月1日
条件を満たしているか
-
macOS、Windowsともに問題なく動作。Linuxもサポートしている。
-
package.jsonの独自フィールドに記載される。
-
該当ディレクトリに移動後、installまで自動で行ってくれる
特徴
- 新しいツールのため、日本語のドキュメント等がしっかり整備されていない。
- 他のツールとは違いnpmやyarnのバージョンも管理可能で、TypeScriptなどのOSSでも導入されている。
- Rustで書かれており、処理速度が速い。
まとめ
条件1 | 条件2 | 条件3 | |
---|---|---|---|
nvm | ◯ | ◯ | ◯ |
n | △ | ◯ | × |
nodenv | × | ◯ | ◯ |
nodebrew | × | × | × |
fnm | ◯ | ◎ | ◎ |
asdf | ◯ | ◯ | ◯ |
Volta | ◎ | ◯ | ◎ |
上記の表からわかるように、条件を満たしているツールは以下のツールでした。
-
nvm
-
fnm
-
asdf
-
Volta
その中で処理速度も速いのが以下の2つです。
- fnm
- Volta
最終的に選んだのは。。。
Voltaです。
決めた理由としては、以下の2つです。
- 新しい技術である。
- 最終リリースが2022年10月としっかりメンテナンスが行われていそう。
こちらの方でより詳しく書きましたので、詳しく知りたい方はぜひ。
他のツールの使用ケース
残り3つのツールがどのような状況だったら選択されていたかをご紹介します。
nvm
使用者数No.1
最初に導入するにはおすすめ。
プラグイン等も豊富なため、やりたいと思ったことはだいたいできる。
fnm
バージョン管理の方法をnvmなど他のツールと同じにできる。
大規模なプロジェクトに参加しており、人それぞれバージョン管理方法が異なる場合におすすめ。
asdf
さまざまなツールのバージョン管理が可能
Node.js以外にも言語を扱う要望がある場合におすすめ。