nvm とは・インストール・使い方 – Node Version Manager 完全ガイド

コマンドリファレンス

nvm(Node Version Manager)とは、複数の Node.js バージョンをかんたんに切り替えられるバージョン管理ツールです。macOS・Linux・WSL(Windows Subsystem for Linux)で動作し、プロジェクトごとに Node.js のバージョンを固定したり、LTS へ素早く移行したりできます。nvm をインストールすると nodenpm も一緒に管理でき、複数バージョンの共存が可能になります。(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 runexec 経由でスクリプトを実行すると、シェルの 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)

参考

  • 公式リポジトリ(README/Usage/Install など): (GitHub)
  • nvm-windows(Windows ネイティブの別実装): (GitHub)
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント