nvm(Node Version Manager)とは、複数の Node.js バージョンをかんたんに切り替えられるバージョン管理ツールです。macOS・Linux・WSL(Windows Subsystem for Linux)で動作し、プロジェクトごとに Node.js のバージョンを固定したり、LTS へ素早く移行したりできます。nvm をインストールすると node や npm も一緒に管理でき、複数バージョンの共存が可能になります。(GitHub)
nvm のインストール
macOS / Linux / WSL
公式のインストールスクリプトを curl または wget で実行します。
# 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
スクリプトを実行すると ~/.nvm 配下に nvm が導入され、~/.bashrc や ~/.zshrc に以下の設定が自動追加されます。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
インストール後はシェルを再起動するか、source ~/.bashrc(bash の場合)または source ~/.zshrc(zsh の場合)を実行して設定を読み込みます。
インストールの確認
nvm --version
# 例: 0.40.1
よく使うコマンド一覧
| コマンド | 説明 | 使用例 |
|---|---|---|
nvm install <ver> | 指定バージョンの Node.js をインストール | nvm install 22 |
nvm install --lts | 最新の LTS バージョンをインストール | nvm install --lts |
nvm use <ver> | 使用するバージョンを切り替える | nvm use 22 |
nvm ls | ローカルにインストール済みのバージョン一覧 | nvm ls |
nvm ls-remote | インストール可能なバージョン一覧を表示 | nvm ls-remote --lts |
nvm alias default <ver> | 新しいシェルで使うデフォルトバージョンを設定 | nvm alias default 22 |
nvm uninstall <ver> | 指定バージョンを削除 | nvm uninstall 18 |
nvm current | 現在使用中のバージョンを表示 | nvm current |
基本的な使い方
Node.js をインストールする
# 最新 LTS をインストール(推奨)
nvm install --lts
# バージョンを指定してインストール
nvm install 22
nvm install 22.6.0
# インストール後は自動で切り替わる
node -v
Node.js のバージョンを切り替える
# バージョンを指定して切り替え
nvm use 22
# LTS に切り替え
nvm use --lts
# システムにインストールされた Node に切り替え
nvm use system
# 切り替え後の確認
node -v
インストール済みバージョンの確認
nvm ls
# 出力例:
# v18.20.4
# -> v22.6.0
# default -> 22 (-> v22.6.0)
# lts/* -> lts/jod (-> v22.6.0)
デフォルトバージョンを設定する
新しくシェルを開いたときに使用するバージョンを alias default で設定します。
# LTS を常にデフォルトにする
nvm alias default lts/*
# バージョンを固定する場合
nvm alias default 22
プロジェクトごとにバージョン固定(.nvmrc)
プロジェクトのルートに .nvmrc ファイルを置くと、そのディレクトリで nvm use するだけで適切なバージョンに切り替わります。
# .nvmrc を作成
echo "22" > .nvmrc
# .nvmrc を読んでバージョンを切り替え
nvm use
# .nvmrc を読んでバージョンをインストール(未インストールの場合)
nvm install
バージョンを削除する
nvm uninstall 18
# Uninstalled node v18.20.4
環境別の注意点
macOS
- デフォルトシェルが zsh(macOS Catalina 以降)のため、設定は
~/.zshrcに追加されます。 - Homebrew で Node.js をインストール済みの場合、
nvm use systemで Homebrew の Node を使えますが、混在すると混乱しやすいため nvm に統一することを推奨します。 - Apple Silicon(M1/M2/M3)では ARM 用バイナリが提供されており、通常は問題なく動作します。
Ubuntu / Debian
- apt でインストールした Node.js と nvm を混在させないよう注意してください。先に
sudo apt remove nodejs npmで削除してから nvm を導入するのが安全です。 - 設定は
~/.bashrcに追加されます。
Git Bash(Windows)
- Windows ネイティブ環境では
nvm(nvm-sh)は動作しません。Git Bash で使いたい場合は WSL(Windows Subsystem for Linux) の利用を強く推奨します。 - Windows ネイティブで nvm のような機能を使いたい場合は nvm-windows(別実装)を利用します。コマンドは似ていますが、一部オプションが異なります。
WSL(Windows Subsystem for Linux)
- WSL2 上の Linux(Ubuntu など)では通常の Linux 手順と同様にインストールできます。
- WSL 側でインストールした nvm は Windows 側とは独立しています。
エラーと対処法
nvm: command not found
インストール直後や新しいターミナルを開いた際に発生しやすいエラーです。シェルの設定ファイルが読み込まれていないことが原因です。
# bash の場合
source ~/.bashrc
# zsh の場合
source ~/.zshrc
# nvm が認識されたか確認
command -v nvm
# -> nvm
それでも解決しない場合は、インストールスクリプトが設定ファイルに書き込めていない可能性があります。~/.bashrc または ~/.zshrc に以下を手動で追記してください。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Node.js のバージョンが切り替わらない
nvm use を実行してもバージョンが変わらない場合、主に以下の原因が考えられます。
原因1: nvm 以外の Node.js が PATH で優先されている
# Node の実体パスを確認
which node
# /usr/bin/node のような場合は apt や Homebrew の Node が優先されている
# nvm が管理する Node のパスを確認
nvm which 22
# /home/user/.nvm/versions/node/v22.6.0/bin/node
対処: apt や Homebrew でインストールした Node.js を削除するか、nvm alias default で nvm 管理のバージョンをデフォルトに設定します。
原因2: 新しいシェルに設定が引き継がれていない
# 現在のシェルでのバージョン確認
nvm current
# デフォルトエイリアスを確認
nvm alias default
# default -> 22 (-> v22.6.0)
# デフォルトを設定して新しいシェルでも有効にする
nvm alias default 22
原因3: npm スクリプト内でバージョンが変わらない
npm run や exec 経由でスクリプトを実行すると、シェルの nvm 設定が引き継がれないことがあります。.nvmrc を使ってバージョンを固定するか、nvm exec を利用します。
# 指定バージョンでコマンドを実行
nvm exec 22 node --version
構文(Syntax)
nvm [SUBCOMMAND] [ARGS]
# よく使うサブコマンド例
nvm install |node|lts/* [--latest-npm] [--reinstall-packages-from=] [-s]
nvm use |system|lts/*
nvm ls # ローカルに入っているバージョン一覧
nvm ls-remote # インストール可能なリモート一覧(--lts 指定可)
nvm alias [name] [ver] # エイリアス設定(default でデフォルト指定)
nvm uninstall
nvm which # 実体パス表示
nvm run -- node --version
nvm exec --
関連コマンド
node/npm: Node.js 本体とパッケージマネージャ。corepack:pnpm/yarnを公式に扱うためのツール。nvm-windows: Windows ネイティブの別実装(互換だが別物)。インターフェースが一部異なります。(GitHub)
備考
- 対応プラットフォーム:
nvmは POSIX シェル用(macOS/Linux/WSL)。Windows ネイティブはnvm-windowsを使用。(GitHub) - LTS 指定: ほぼ全コマンドで
--lts/'lts/*'/lts/<line>(例:lts/argon)が使用可。(GitHub) - グローバル npm の移行:
--reinstall-packages-fromで移行、npm も更新したい場合は--latest-npmを併用。(GitHub) - Alpine 等の特殊環境: 公式バイナリが使えない環境では
nvm install -s(ソースビルド)を利用。(GitHub) .nvmrcの探索: カレントから親ディレクトリへ辿って最初に見つかった.nvmrcを解釈します。(GitHub)

コメント