CLIツール
1111mp/nvm-desktop avatar
1111mp/nvm-desktop

nvm-desktopでNode.jsの版をGUIとCLIから分けて管理する

Node Version Manager Desktop - 複数のアクティブな Node.js バージョンを管理するデスクトップ アプリケーション。

スター 1,397フォーク 74TypeScriptMIT

ひと目でわかる

これは何?
macOS、Windows、Linuxに対応し、nvm-desktopのGUIとnvmd CLIでNode.jsの版、プロジェクト割り当て、実行パスを管理します。
誰に向いている?
nvm-desktopは複数のNode.js版をプロジェクトごとに切り替えたい開発者に適します。最初に`nvmd -V`、`node -v`、`npm -v`を確認し、`nvmd install 20.18.0`、`nvmd use 18.20.4 --project`、`nvmd which node`の結果と`.nvmd/projects.json`を照合してください。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に TypeScript です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

GUIとnvmdが同じ目的を別の操作面にする

nvm-desktopはNode.jsの版を管理するクロスプラットフォームアプリです。READMEは視覚管理用のGUIアプリと、端末作業用の`nvmd` CLIを同時に提供し、macOS、Windows、Linuxを対象にしています。版の発見や設定を画面で行いたい人と、スクリプトで切り替えたい人を同じ管理モデルに置く構成です。

インストールはGitHub Releasesから取得し、端末で`nvmd -V`、`node -v`、`npm -v`が利用できることを確認します。リリース配布物の導入と、各プロジェクトで実際に呼ばれるNodeの経路は別の確認対象です。

リリースから導入した後、`nvmd -V`が想定したバイナリを指すかを`nvmd which nvmd`相当の経路とPATHで調べます。

1111mp-nvm-desktop-deep-analysisの第1章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

版の追加、一覧、既定値の切替

READMEのCLI例では`nvmd install 20.18.0`で版を追加し、`nvmd ls`でインストール済みの一覧を表示します。`nvmd use 20.18.0`はグローバル版を切り替え、直後に`node -v`を実行して結果を確認します。不要になった版は`nvmd uninstall 16.20.2`で削除できます。

`nvmd current`は現在の版を、`nvmd which node`と`nvmd which npm`は実行ファイルのパスを示します。切替コマンドが成功した表示だけで判断せず、シェルのPATH、Node、npmの三つを同じ端末で確認すると、別のインストールが残る問題を発見できます。

20.18.0を導入して一覧へ現れること、既定値を切り替えた直後の`node -v`が一致することを記録します。

1111mp-nvm-desktop-deep-analysisの第2章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

プロジェクト固定はprojects.jsonと結び付く

プロジェクトのルートで`nvmd use 18.20.4 --project`を実行すると、そのプロジェクト用のNode.js版を選べます。READMEは、各リポジトリで版を選び、`node -v`で確認してから依存関係をインストールする流れを推奨しています。グローバル既定値の切替とプロジェクト固定は目的が違うため、同じコマンドとして運用しないことが重要です。

データはmacOSとLinuxでは`~/.nvmd`、Windowsでは`%HOMEPATH%\.nvmd`に保存されます。`bin/`のshim、`versions/`、`default`、`projects.json`、`setting.json`を確認すれば、切替の状態を追跡できます。バックアップや権限の詳細はREADMEにないため、変更前にこれらを記録します。

`--project`を使ったディレクトリを変えて`projects.json`を確認し、別プロジェクトの版へ影響しないことを調べます。

1111mp-nvm-desktop-deep-analysisの第3章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

npmのグローバルパッケージは版ごとに分離される

READMEは、グローバルnpmパッケージは既定ではNode.js版の間で共有されず、環境が分離されると説明しています。複数版を切り替えると、ある版で入れたCLIが別の版から見えない場合があります。共有したい場合は`npm config set prefix "/path/to/shared-global"`で共通prefixを設定する例があります。

共通prefixは便利ですが、版ごとの分離という既定の前提を変えます。プロジェクトで使う依存関係は通常のpackage.jsonとlockfileで管理し、共通化が必要なCLIだけを対象に、`npm config get prefix`と`nvmd which npm`を確認して影響範囲を切り分けるべきです。

`~/.nvmd/versions`とbinのshimを変更前後で比較し、削除した版の実行パスが残っていないかを確認します。

1111mp-nvm-desktop-deep-analysisの第4章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

GUIを選ぶ場面とCLIを選ぶ場面

GUIでは利用可能なNode.js版の閲覧、導入と削除、グローバル既定値、プロジェクトへの割り当て、ミラーと言語などの設定を扱えます。CLIは自動化、スクリプト、端末中心の作業に向きます。READMEは、GUIは発見と視覚管理、CLIは再現可能な操作という分担を示しています。

開発用リポジトリで`nvmd use <version> --project`、`node -v`、依存関係のインストールを順に実行し、別のシェルでも同じ版が選ばれるかを確認します。開発手順はRust、Node.js、pnpmを前提に`pnpm check`、`pnpm install`、`pnpm dev`、`pnpm build`を使うため、アプリ利用と本体開発の前提を分けて評価します。

共通prefixを設定する場合は版ごとの分離が変わるため、`npm config get prefix`と依存関係のlockfileを記録します。

1111mp-nvm-desktop-deep-analysisの第5章を確認するときは、実行前の版と設定を保存し、成功した結果だけでなく失敗した入力も残します。READMEの説明、端末の出力、生成物の差分を別々に記録することで、機能の存在と自分の環境での再現性を区別できます。

編集部の結論

nvm-desktopは複数のNode.js版をプロジェクトごとに切り替えたい開発者に適します。最初に`nvmd -V`、`node -v`、`npm -v`を確認し、`nvmd install 20.18.0`、`nvmd use 18.20.4 --project`、`nvmd which node`の結果と`.nvmd/projects.json`を照合してください。グローバルnpmパッケージを共有する設計ではないため、既存環境のprefix設定を先に記録する必要があります。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート