🛠️

WindowsでNode.jsバージョン管理ツールをどれにするか

2021/11/13に公開約2,100字4件のコメント

2021年11月14日時点のWindows10での情報です。

前回は 「 Node.jsとは 」でNode.jsについて調べました。

今回はNode.jsをインストールしていきたい・・・・ところですが、
その前に、
Node.jsのバージョンの切り替え方法を、どうするか決めておく必要があります。

Node.jsのバージョンの切り替えをどうするか

実際の開発では、システム単位でNode.jsのバージョンが変わります。

たとえば
少し前にリリースしたWebサービスの保守作業のときは、Node.js 12.xx.xxでビルドする。
現在、新規作成中のWebサービスは、Node.js 16.xx.xxでビルドする。
といった具合に、実際の開発では結構頻繁にNode.jsのバージョンの切り替えが発生します。

Node.jsのバージョンを切り替える方法としては、主に以下のような方法があります。

  • Node.jsのバージョン管理ツールを使用する
  • Dockerを使用して、Webサービスごとに環境を作成する。

■ メモ
Node.jsのバージョン管理ツールを使用して、Angularプロジェクトを作成してみた
Windows+Volta+Angularプロジェクトを作成する(まとめ)


Node.jsのバージョン管理ツールを使用する

職場ではWindows10を使用していて、バージョン管理ツールはNodistを使用しています。

別の環境で、Node.jsのバージョン管理ツールを導入しようとしたのですが、Nodistは2019年3月30日に最新バージョン0.9.1がリリースされて以降、ずっと更新がされていません。

https://github.com/nullivex/nodist

まずはバージョン管理ツールを使用する方向で、nodistに代わるバージョン管理ツールは何がいいのか調べてみました。

nvm-windows

  • Github: https://github.com/jasongin/nvs
  • 2021/09/15にv1.1.8がリリースされている。(スター数18,031)
  • nvmのwindows版
  • 自動バージョン切り替えがない
  • Windowsに対応
  • 2021/09/15にv1.1.8がリリースされている

nvs (Node Version Switcher)

  • Github: https://github.com/jasongin/nvs
  • 2020/07/21にv1.6.0がリリースされている。(スター数1,596)
    (2017、2018、2019、2020年とリリースされていますが、2021年のリリースはありません)
  • コマンドプロンプトから呼び出せない。PowerShellを使用する。
  • Windows・Mac・Linuxに対応

Volta

  • 公式サイト
  • Github: https://github.com/volta-cli/volta
  • 2021/09/08にv1.0.5がリリースされている。(スター数4,452)
  • Windows・Mac・Linuxに対応
  • 自動バージョン切り替えあり
  • Rustで作られた高速でシンプルなバージョン管理ツール

fnm

  • Github: https://github.com/Schniz/fnm
  • 2021/09/17にv1.27.0がリリースされている(スター数5,310)
  • Windows・Mac・Linuxに対応
  • 自動バージョン切り替えあり
  • Rustで作られた高速でシンプルなバージョン管理ツール
  • 一般的なシェル(Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt)に対応
  • .node-versionと.nvmrcファイルの互換性をサポート

Node.jsのバージョン管理ツールにどれを選ぶか?

nvm-windows

一番スター数が多いのはnvm-windowsです。
日本語のブログ記事も一番多いです。
ただ、自動バージョン切り替えがないのと、クロスプラットフォームでない点で、
今回は選択肢から外しました。

nvs

2021年の更新がされていないので、これも選択肢から外します。

Volataかfnmか

Voltaかfnmかで迷ったのですが、Voltaの方が日本語記事が多いこと、公式サイトがわかりやすいこと、自動バージョン切り替えが便利そうという理由で、今回はVoltaを使ってみようと思います。

Discussion

実は nodist でも運用上はさほど問題になってないですが、新環境構築するにあたって入れ替え検討して試した結果記載しておきます。

  • nvm-windows は管理者権限が必要。文字化けが発生するなどストレスかかる。そもそもバージョン切り替えが出来ないのが辛かったのでやめました。
  • nvs はなんとこのコメントを書く3時間前に更新されました笑。なので試してないです。
  • volta はパッケージが zipで提供される必要があって古いバージョンでインストールができない物がありました(例)5.4.1。npxなどもインストールできたのが良いと思いました。あとリモートでバージョン確認出来ないのが面倒でした。バージョン切り替えも package.json を使用しているので nodist を使用していた人は変更が必要なことが気になりました。
  • fnm は choco でインストールが一番楽でした。(cargo は gcc のコンパイルでコケて手間が増えるのが嫌だったので諦めました)。既に nodist の .node-version などが配置されていれば、 $ fnm install だけで勝手に認識してインストールしてくれました。volta同様、zip提供されていないものはインストールできませんが、オプションで --node-dist-mirror を使用して zip配置すればインストール可能(面倒ですが)

結果的に、fnm が一番使い勝手良かったです。(nvsは、一旦外してますが、更新されたのでどうしようかな笑)

コメントありがとうございます!
見てくれる人がいたことに驚きです(笑)
現行の nodist から 切り替える場合は fnm が手間がなくていいようですね。
私は完全に新規開発で nodist のものは、新規に全リプレイスだったので volta 選びましたが
機会があれば fnm も試してみます。

何にしよっかなぁと悩んでたので助かりました。
後で確認したら volta は npx とかも自動で入ってくれました。
fnm は yarn がちょっと古かったです(謎)。npx 使いたいシーンあるので volta のほうが良いのかなと思った次第。

fnm その後です。

  • 自動切り替え+インストール確認あって便利!
  • やっぱりインストール可能な node 一覧取得助かる。
  • コマンドプロンプトで認識しない → レジストリ経由で読み込ませる。が、エイリアスではなくパスが毎回変わるためWebStormなどのツールで予期せぬエラーが出はじめる。
    https://qiita.com/heppokofrontend/items/fe1c3bc41a0ae943c2ca

すぐに解決できそうにないと分かり、現時点では volta に切り替えました。

ログインするとコメントできます