NVM（Node Version Manager）は、Node.jsのバージョン管理ツールです。Node.jsは、JavaScriptをサーバーサイドで実行するためのプラットフォームであり、開発者がJavaScriptを用いてサーバーサイドのアプリケーションを構築するための環境を提供します。
NVMは、異なるNode.jsのバージョンを簡単に切り替えることができるツールで、開発者が複数のプロジェクトで異なるNode.jsバージョンを利用できるようにします。これは特に、異なるプロジェクトで異なるNode.jsの要件がある場合や、新しいNode.jsのバージョンがリリースされた場合に便利です。
nvmを使用すると、Node.jsのバージョン管理がユーザーのホームディレクトリに対して行われ、ルート権限が必要なくなります。これにより、異なるバージョンのNode.jsを簡単に切り替えることができ、システム全体に影響を与えずにプロジェクトごとに必要なバージョンを利用できます。
また、異なるプロジェクトで異なるNode.jsのバージョンが必要な場合にも便利です。各プロジェクトディレクトリにおいて、.nvmrc ファイルを作成し、その中に使用するNode.jsのバージョンを指定することで、プロジェクトごとに異なるバージョンを簡単に管理できます。
ルート権限を使用せずにNode.jsを管理できることは、開発者にとって柔軟性とセキュリティの向上に寄与します。
まず、 https://github.com/nvm-sh/nvm を訪れ最新のバージョンを確認してください。
では、NVMをインストールします。以下のコマンドをターミナルに入力してください。
 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
または、wgetが利用可能な場合:
 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.7/install.sh | bash
このコマンドは、NVMをダウンロードし、システムにインストールします。インストールが完了すると、新しいシェルセッションを開始するか、以下のコマンドを実行してNVMを有効にします。
Bashを使用している場合:
 source ~/.bashrc
Zshを使用している場合:
 source ~/.zshrc
NVMを使ってNode.jsをインストールします。以下のコマンドで最新の安定版をインストールできます。
 nvm install stable
特定のバージョンをインストールしたい場合は、次のようにします。
 nvm install v21.6.0
複数のNode.jsバージョンがインストールされている場合、必要なバージョンに切り替えることができます。
 nvm use v21.6.0
デフォルトで使用するNode.jsバージョンを設定することもできます。
  nvm alias default v21.6.0
これで、新しいシェルセッションを開始すると、デフォルトのNode.jsバージョンが自動的に選択されます。
これで、基本的なNVMの使用方法を理解できました。必要に応じて、Node.jsのバージョンを切り替えたり、プロジェクトごとに異なるバージョンを使用したりできます。
nvmを使用する際に問題が発生する場合、いくつかの一般的なトラブルシューティング手順があります。以下は、nvmに関連する一般的な問題とその解決策です。
インストールが機能していない場合:
curlやwgetのエラーが発生する場合、まずこれらのコマンドが正しくインストールされていることを確認してください。また、ネットワークに接続されていることも確認してください。
シェルがnvmを認識しない場合:
新しいターミナルウィンドウを開いて、シェルがnvmを認識するようにします。source ~/.bashrc（またはsource ~/.zshrcなど）を実行して、シェルを再読み込みできます。
Node.jsのバージョンが正しく切り替わらない場合:
nvm use を使用してNode.jsのバージョンを切り替える際にエラーが発生する場合、.nvmrcファイルが存在し、正しいバージョンが指定されていることを確認してください。
npmがインストールされていない場合:
nvmでNode.jsをインストールした後にnpmが見つからない場合、最新のNode.jsにアップグレードするとnpmも最新バージョンにアップグレードされることがあります。
 nvm install --lts
 nvm install-latest-npm
Permission Deniedエラーが発生する場合:
nvmがNode.jsをグローバルにインストールする際にパーミッションの問題が発生する場合、sudoを使用せずにnvmを使うようにしましょう。また、Node.jsがインストールされているディレクトリがユーザーに書き込み可能であることを確認してください。
nvmのアップデートが必要な場合:
nvm自体が古いバージョンである可能性があります。最新のnvmにアップデートしてみてください。
 nvm install node --reinstall-packages-from=node
キャッシュ関連の問題:
キャッシュが問題を引き起こすことがあります。キャッシュディレクトリを確認し、必要に応じてクリアしてみてください。
 nvm cache clear
デフォルトエイリアスの設定が不正確な場合:
デフォルトエイリアスが正しく設定されているか確認してください。
 nvm alias default 
これらのトラブルシューティング手順が問題を解決するのに役立つかもしれません。しかし、特定の問題が解決できない場合、nvmのGitHubリポジトリや関連するコミュニティフォーラムなどでサポートを受けることを検討してください。
nvmは非常に強力なツールで、様々なトリックや裏技を利用することができます。以下は、いくつかのnvmのトリックです：
.nvmrc ファイルの利用: プロジェクトごとに異なるNode.jsバージョンを使用する場合、プロジェクトのルートディレクトリに.nvmrcファイルを作成し、使用したいNode.jsのバージョンを指定できます。例えば、.nvmrcファイルに 14 と書くと、そのディレクトリ内でnvm useを実行するとNode.js 14が自動的に選択されます。
デフォルトバージョンの設定: nvm alias default [version]を使用して、デフォルトで使用するNode.jsのバージョンを設定できます。これにより、新しいシェルを開いたときに常に指定したバージョンが選択されます。
自動エイリアス: nvmはいくつかの自動エイリアスを提供しています。たとえば、lts/*は最新のLTS（Long-Term Support）バージョンを指します。nvm use --ltsやnvm uninstall --ltsなどのコマンドでこれを利用できます。
Node.jsとnpmの同時アップグレード: nvm install [version] --latest-npmを使用すると、Node.jsをインストールする際に同時にnpmも最新の安定版にアップグレードできます。
特定のLTSバージョンの選択: nvm use --lts=を使用して、特定のLTSラインのバージョンを選択できます。例えば、nvm use --lts=erbiumはNode.jsのLTSラインである"Erbium"を使用します。
バージョン比較: nvm version [version]やnvm version-remote [version]を使用して、指定した説明をローカルやリモートのNode.jsバージョンに解決できます。
npmパッケージの再インストール: nvm reinstall-packages [version]を使用して、特定のNode.jsバージョンに含まれるnpmパッケージを再インストールできます。
カラーコードの設定: nvm set-colors [color codes]を使用して、ターミナル上のテキストの色を設定できます。
これらのトリックを組み合わせることで、nvmを効果的に活用し、プロジェクトや個々のニーズに合わせたNode.jsのバージョン管理を行えます。