nvm – Node.js のバージョンを切り替える(Node Version Manager)

パッケージ管理・ソフトウェア

nvm は、複数の Node.js をユーザー単位・シェル単位でインストール/切り替えできるバージョンマネージャです(POSIX シェル向け)。macOS/Linux/WSL で動き、Windows ネイティブは別実装(nvm-windows)です。(GitHub)
実務では「開発プロジェクトごとに Node を固定」「CI やローカルで LTS に一括切替」「.nvmrc による自動切替」等に使います。(GitHub)

構文(Syntax)

nvm [SUBCOMMAND] [ARGS]

# よく使うサブコマンド例
nvm install <ver>|node|lts/* [--latest-npm] [--reinstall-packages-from=<ver>] [-s]
nvm use <ver>|system|lts/* 
nvm ls            # ローカルに入っているバージョン一覧
nvm ls-remote     # インストール可能なリモート一覧(--lts 指定可)
nvm alias [name] [ver]   # エイリアス設定(default でデフォルト指定)
nvm uninstall <ver>
nvm which <ver>   # 実体パス表示
nvm run <ver> -- node --version
nvm exec <ver> -- <cmd>
  • node は最新安定版、lts/* は最新 LTS を指します。多くのサブコマンドが --ltslts/<line> を受け付けます。(GitHub)

主なオプション一覧

オプション/サブコマンド説明使用例
install <ver>そのバージョンを取得して使用開始nvm install 22.6.0 (GitHub)
install --lts最新 LTS を取得(lts/* と同義)nvm install --lts (GitHub)
install --reinstall-packages-from=<ver>既存バージョンから グローバル npm パッケージを移行nvm install --reinstall-packages-from=current 'lts/*' (GitHub)
install --latest-npm / install-latest-npmその Node に対応する 最新 npm を同時/後から導入nvm install --latest-npm node / nvm install-latest-npm (GitHub)
install -sバイナリが無い環境で ソースからビルド(例: Alpine)nvm install -s 22 (GitHub)
`usesystemlts/*`
ls / ls-remote [--lts]ローカル/リモート一覧(--no-colors 可)nvm ls-remote --lts (GitHub)
alias default <spec>新しいシェルの 既定 Node を設定nvm alias default lts/* (GitHub)
.nvmrcディレクトリに置くと use/install/exec などが自動解釈echo "lts/*" > .nvmrc; nvm use (GitHub)
deactivatePATH を元に戻すnvm deactivate (GitHub)

実行例

最新 LTS を導入して使う

説明: 安定運用向けに LTS へ切り替えます。
コマンド:

nvm install --lts
nvm use --lts
node -v

出力例(概略):

Now using node vXX.YY.Z (npm vA.B.C)

(GitHub)

プロジェクトごとにバージョン固定(.nvmrc)

説明: そのディレクトリに入ると同じ Node を使えます。
コマンド:

echo "18.19" > .nvmrc
nvm install         # .nvmrc を読んで該当バージョンを入れる
nvm use             # .nvmrc を読んで切り替え

(GitHub)

既存のグローバルパッケージを移行しつつ更新

説明: 旧バージョンの npm -g パッケージを新バージョンへ移行。npm も同時更新。
コマンド:

nvm install --reinstall-packages-from=current --latest-npm 'lts/*'

(GitHub)

デフォルト(新しいシェルで使う版)を設定

説明: 毎回同じ Node から始めたいときに。
コマンド:

nvm alias default lts/*     # あるいは具体値: nvm alias default 22

(GitHub)

エラー例:nvm: command not found(プロファイル未読込)

説明: インストール直後にシェルの設定が読み込まれていないケース。
コマンド:

# 例: bash
source ~/.bashrc
command -v nvm   # -> nvm

(端末を開き直す/source で解消) (GitHub)

関連コマンド

  • node / npm : Node.js 本体とパッケージマネージャ。
  • corepack : pnpm/yarn を公式に扱うためのツール。
  • nvm-windows : Windows ネイティブの別実装(互換だが別物)。インターフェースが一部異なります。(GitHub)

備考

  • 対応プラットフォーム: nvm は POSIX シェル用(macOS/Linux/WSL)。Windows ネイティブは nvm-windows を使用。(GitHub)
  • インストール: 公式の install スクリプトを curl/wget で実行し、~/.nvm 配下に導入。プロファイルに NVM_DIR とスクリプト読込行が追加されます。(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)
  • シンボリック current: 既定では作成されません。必要なら NVM_SYMLINK_CURRENT=true を設定。(GitHub)

参考

  • 公式リポジトリ(README/Usage/Install など): (GitHub)
  • LTS の指定と --lts が使えるコマンド一覧: (GitHub)
  • .nvmrc の使い方(自動解釈・探索): (GitHub)
  • Alpine でのビルドインストール(-s フラグ): (GitHub)
  • nvm-windows(Windows ネイティブの別実装): (GitHub)
Bash玄

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

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

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

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

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

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

Bash玄をフォローする

コメント