Node.jsを用いた開発現場では、プロジェクトごとに要求されるNode.jsのバージョンが異なることが一般的です。

2026年現在、Node.jsは高速なリリースサイクルを維持しており、最新の機能を備えたCurrent版と、安定性を重視したLTS(長期サポート)版が並行して利用されています。

開発者が複数のプロジェクトを抱える際、システム全体に一つのNode.jsだけをインストールしていると、古いプロジェクトが動かなくなったり、最新のライブラリが要求する機能が不足したりといった問題に直面します。

これらの課題をスマートに解決するのが、Node.jsバージョン管理ツールであるnvm(Node Version Manager)です。

nvmを導入することで、コマンド一つでNode.jsのバージョンを切り替え、プロジェクトごとに最適な実行環境を瞬時に構築できるようになります。

本記事では、nvmの導入方法から、実務で役立つ最新の推奨設定、効率的な運用方法までを詳しく解説します。

なぜNode.jsのバージョン管理が必要なのか

Node.jsは進化の早いプラットフォームです。

例えば、数年前のプロジェクトではNode.js 18系が標準でしたが、最新のフレームワークではNode.js 22以降や、開発が進むNode.js 24・26といったバージョンが前提となるケースも増えています。

システムに直接Node.jsをインストール(グローバルインストール)してしまうと、以下のトラブルが発生しやすくなります。

  1. 依存関係の衝突:古いプロジェクトで使用しているライブラリが、新しいNode.js環境では動作しない。
  2. 権限エラー:グローバルにパッケージをインストールする際、sudo(管理者権限)が必要になり、セキュリティリスクや環境の汚れにつながる。
  3. チーム開発の不一致:メンバー間でNode.jsのバージョンが異なると、特定の環境だけでバグが発生する「環境依存」の問題が深刻化する。

nvmを利用すれば、これらの問題を回避し、ユーザーディレクトリ内で安全に複数のNode.jsバージョンを共存させることが可能です。

nvmの導入手順(macOS / Linux環境)

macOSやLinux環境において、nvmは最も標準的な選択肢です。

シェルスクリプトを介して簡単にインストールできます。

1. インストールスクリプトの実行

まず、ターミナルを開き、公式のリポジトリからインストールスクリプトを取得して実行します。

以下のコマンドを使用します。

Shell
# curlを使用してインストールスクリプトを実行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# またはwgetを使用する場合
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
実行結果
=> Downloading nvm from git to '/home/user/.nvm'
=> Compressing and untarring executable...
=> Appending nvm source string to /home/user/.zshrc
=> Close and reopen your terminal to start using nvm or run source ~/.zshrc

2. 環境変数の設定確認

インストールスクリプトは、自動的に使用しているシェルの設定ファイル(.bashrc.bash_profile.zshrcなど)へ設定を追記します。

しかし、正しく反映されているか手動で確認することが推奨されます。

設定ファイル内に以下の記述があることを確認してください。

Shell
# nvmのホームディレクトリ設定
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # これによりnvmコマンドが読み込まれる

設定を反映させるには、一度ターミナルを再起動するか、以下のコマンドを実行します。

Shell
# 設定を即座に反映
source ~/.zshrc

3. インストールの確認

nvmが正常にインストールされたかを確認するには、バージョンを表示するコマンドを実行します。

Shell
# nvmのバージョンを確認
nvm --version
実行結果
0.40.1

注意点として、which nvmコマンドでは何も表示されません。nvmは実行バイナリではなく、シェルの関数として実装されているためです。

正常に動作しているか確認するにはnvm --versionまたはcommand -v nvmを使用してください。

Windows環境でのnvm導入

nvm本体はUnix系OSを対象としていますが、Windowsユーザー向けにはnvm-windowsという互換ツールが広く普及しています。

Windowsでの導入手順

  1. GitHubのリポジトリ(nvm-windows)から最新のインストーラー(nvm-setup.exe)をダウンロードします。
  2. 既存のNode.jsがインストールされている場合は、競合を避けるためにアンインストールしておくことが推奨されます。
  3. インストーラーを起動し、指示に従って完了させます。

WindowsのコマンドプロンプトやPowerShellで以下のコマンドを実行し、動作を確認します。

PowerShell
# Windows環境での確認
nvm version

実践的なnvmコマンドリファレンス

nvmを導入したら、次によく使うコマンドをマスターしましょう。

これだけで日常的なNode.jsのバージョン管理は完璧です。

Node.jsのインストール

最新のLTSバージョンをインストールするのが、実務において最も一般的で推奨される方法です。

Shell
# 最新のLTS版をインストール
nvm install --lts

# 特定のメジャーバージョンをインストール
nvm install 22

# 最新バージョン(Current)をインストール
nvm install node
実行結果
Installing latest LTS version.
Downloading and installing node v22.11.0...
Now using node v22.11.0 (npm v10.9.0)

インストール済みバージョンの管理

現在自分のPCにどのバージョンが入っているか、またどのバージョンが使用中かを確認します。

Shell
# インストール済みのリストを表示
nvm ls
実行結果
       v20.18.0
->     v22.11.0
       system
default -> lts/* (-> v22.11.0)

矢印(->)がついているものが、現在アクティブなバージョンです。

バージョンの切り替え

プロジェクトの要求に合わせて、使用するNode.jsを切り替えます。

Shell
# バージョン20を使用する
nvm use 20
実行結果
Now using node v20.18.0 (npm v10.8.2)

バージョンのアンインストール

ディスク容量を節約するために、使用しなくなった古いバージョンは削除しましょう。

Shell
# 特定のバージョンを削除
nvm uninstall 18.16.0

2026年の推奨設定:自動化とプロジェクト管理

手動でnvm useを実行するのは忘れがちです。

ここでは、開発効率を最大化するための最新の推奨設定を紹介します。

.nvmrcファイルの活用

プロジェクトのルートディレクトリに.nvmrcという名前のファイルを作成し、使用したいバージョン番号を記述しておきます。

これにより、チームメンバー全員が同じバージョンを使用することを保証できます。

text
# .nvmrc の内容例
v22.11.0

このファイルがあるディレクトリで以下のコマンドを実行すると、ファイルに記述されたバージョンが自動的に適用(あるいはインストール案内が)されます。

Shell
# .nvmrcに従って切り替え
nvm use

ディレクトリ移動時の自動切り替え設定

シェル(Zshなど)の設定をカスタマイズすることで、cdコマンドでプロジェクトディレクトリに入った際に、自動でnvm useを実行させることが可能です。

以下のスクリプトを.zshrcに追記します。

Shell
# .nvmrcが存在する場合、自動でnvm useを実行するスクリプト
autoload -U add-zsh-hook
load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

この設定を導入することで、ターミナルを移動するだけでNode.jsのバージョンが適切に切り替わるようになり、バージョン間違いによるミスの発生を未然に防ぐことができます。

Corepackとの連携によるパッケージマネージャー管理

2026年の開発環境において、Node.js本体のバージョン管理と同様に重要なのが、npmyarnpnpmといったパッケージマネージャーの管理です。

Node.jsにはCorepackというツールが同梱されています。

nvmでNode.jsをインストールした後、以下の手順でCorepackを有効化するのが現在のベストプラクティスです。

Shell
# Corepackを有効化
corepack enable

# 使用するパッケージマネージャーを指定(例:pnpm)
corepack prepare pnpm@latest --activate

nvmによってNode.jsのバージョンを切り替えると、それぞれのバージョンに紐付いたパッケージマネージャーの状態もクリーンに保たれます。

これにより、プロジェクトごとに異なるパッケージマネージャーを使用している場合でも、環境が混ざるリスクを抑えられます。

トラブルシューティングとFAQ

nvmを使用していると、稀に遭遇する問題があります。

その解決策をまとめました。

1. nvmコマンドが見つからない (command not found)

最も多いトラブルです。

原因の多くは、シェルの設定ファイルにnvmの読み込み設定が記述されていないか、設定ファイルが読み込まれていないことです。

解決策:source ~/.zshrc(または適切な設定ファイル)を実行し、設定が正しいか再確認してください。

2. インストールが極端に遅い

Node.jsのバイナリを海外サーバーから取得しているため、ネットワーク環境によっては時間がかかります。

解決策:ミラーサイトを利用する方法もありますが、まずは安定したネットワーク環境でnvm installを実行してください。

3. グローバルにインストールしたパッケージが消えた

nvmでバージョンを切り替えると、それまで使っていたバージョンのnode_modulesとは別の場所に管理されます。

解決策:バージョン切り替え時にパッケージを引き継ぎたい場合は、以下のコマンドを使用します。

Shell
# 新しいバージョンをインストールしつつ、古いバージョンからパッケージをコピー
nvm install v22 --reinstall-packages-from=v20

nvmと他のツール(Volta, fnm, asdf)との比較

2026年現在、nvm以外にも優れた管理ツールが存在します。

それぞれの特徴を理解し、チームやプロジェクトに最適なものを選びましょう。

ツール名特徴推奨されるケース
nvm最も歴史があり、情報が豊富。シェルスクリプトベース。標準的な環境を求める場合、学習コストを抑えたい場合。
fnmRust製で非常に高速。nvmと互換性がある。ターミナルの起動速度やコマンドのレスポンスを重視する場合。
Voltaツール自体のインストールが容易で、高速。設定不要で自動切り替え。シンプルさを追求し、プロジェクトごとのツール管理を自動化したい場合。
asdfNode.jsだけでなく、RubyやPythonなどあらゆる言語を一括管理。複数のプログラミング言語を扱うフルスタックエンジニア。

nvmはこれらの中で最も「枯れた」技術であり、多くのCI/CD環境やドキュメントで前提とされているため、初心者が最初に導入するツールとして、またエンタープライズ環境での採用として最も確実な選択肢です。

まとめ

Node.jsのバージョン管理は、現代のWeb開発において欠かせないプロセスです。

nvmを導入することで、プロジェクトごとの環境差異に悩まされることなく、開発に集中できるようになります。

今回のポイントを振り返ります。

  • nvmを導入することで、複数のNode.jsバージョンを安全に切り替えて利用できる。
  • 最新のLTS(Long Term Support)版を中心に運用し、安定性を確保する。
  • .nvmrcを活用して、チーム全体でNode.jsのバージョンを統一する。
  • 自動切り替えスクリプトを設定することで、操作ミスを削減し効率化を図る。
  • Corepackと組み合わせることで、パッケージマネージャーの管理も盤石にする。

Node.js 26といった最新バージョンの登場を見据え、nvmを使った柔軟な環境構築を今のうちにマスターしておきましょう。

一度設定してしまえば、将来のアップデート作業も驚くほどスムーズになります。

あなたの開発環境をより快適にするために、ぜひ本記事の内容を参考にnvmをセットアップしてみてください。