LoginSignup
26
6

More than 1 year has passed since last update.

NodeJSのバージョン管理ツールって結局どれ使えばええんや!

Last updated at Posted at 2022-10-31

きっかけ

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日

条件を満たしているか

  1. macOSやLinuxでは問題なし。WindowsではWSLなどを使うと問題なく動作する。

  2. .nvmrcに記述される。

  3. avnという別ツールを使うか、シェルスクリプトを記述する必要がある。

特徴

  • かなり前から存在するツールで、GitHubのスター数が一番多いバージョン管理ツール。
  • どのツールよりもドキュメントが豊富で、メンテナンスもしっかりされている。
  • 特別な理由がない限りはこのツールを使うのが良さそう。

n

GitHubURL: https://github.com/tj/n

概要

  • GitHubスター数: 16.9k

  • 最終リリース: 2022年7月16日

条件を満たしているか

  1. npmの環境があれば問題なし。macOSの場合はbrewでも導入できる。

  2. .n-node-versionや.node-version、.nvmrcに記述される。

  3. nvmと同様にavnという別ツールを使う必要がある。

特徴

macOSの場合は直接brewから導入できる。

Windows等それ以外の場合は、一度npmが使用できる環境を導入した後にnpm installをして導入する必要がある。

nodenv

GitHubURL: https://github.com/nodenv/nodenv

概要

  • GitHubスター数: 1.9k

  • 最終リリース: 2020年7月20日

条件を満たしているか

  1. macOS準拠。Windowsで同等の機能を扱うためにnodistが必要。

  2. .node-versionに記述される。

  3. 該当のバージョンがダウンロードされている場合にはすぐ使える。そうでない場合はインストールを自分で実行する必要がある。

特徴

  • anyenv + nodenvで環境構築している人が多い。

  • Windowsにて同様の操作をする場合に必要なnodistというバージョン管理ツールの最終リリースが2019年3月とかなり前。

nodebrew

GitHubURL: https://github.com/hokaccha/nodebrew

概要

・GitHubスター数: 1k

・最終リリース: 2022年3月19日

条件を満たしているか

  1. macOS準拠。Windowsで同等の機能を扱うためにはnodistが必要。

  2. なし。

  3. 公式のドキュメントには記載なし。

特徴

  • brewを使って導入できるためmacOSの場合環境構築の難易度がかなり低い。

  • 提供されている機能がNode.jsのバージョンの切り替えのみ

fnm

GitHubURL: https://github.com/Schniz/fnm

概要

・GitHubスター数: 5.4k

・最終リリース: 2022年7月19日

条件を満たしているか

  1. macOS、Windowsともに問題なく動作。Linuxもサポートしている。

  2. .node-versionや.nvmrcに記述される。

  3. 該当ディレクトリに移動後、installまで自動で行ってくれる

特徴

  • 他のツールで使用しているバージョン管理方法を使用することができ、互換性がある。
  • Rustで書かれており、処理速度が速い。

asdf

GitHubURL: https://github.com/asdf-vm/asdf

概要

・GitHubスター数: 16k

・最終リリース: 2022年6月9日

条件を満たしているか

  1. macOSやLinuxでは問題なし。WindowsではWSLなどを使うと問題なく動作する。

  2. .tool-versionsに記述される。

  3. 該当ディレクトリに移動後、installする必要がある。

特徴

Node.jsだけではなく、様々な言語のバージョンを管理してくれる。
普段の開発で多様な言語やツールを扱うことがある人におすすめ。

Volta

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

概要

・GitHubスター数: 6.9k

・最終リリース: 2022年10月1日

条件を満たしているか

  1. macOS、Windowsともに問題なく動作。Linuxもサポートしている。

  2. package.jsonの独自フィールドに記載される。

  3. 該当ディレクトリに移動後、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以外にも言語を扱う要望がある場合におすすめ。

26
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
6