Open1

【Node/nvm】nvmを使ったNodeのバージョン管理について📝

まさぴょん🐱まさぴょん🐱

nvm (Node Version Manager) CLI チートシート📝

nvm は POSIX シェル上で Node.js の複数バージョンを瞬時にインストール/切替できる bash スクリプトで、インストールスクリプトを再実行するだけでアップデートも完了します。

インストール & アップデート

# 推奨: curl 経由
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# wget 派
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
  • NVM_DIR="$HOME/.nvm" をシェルの初期化ファイルに追記すると自動ロードされる(github.com)
  • インストール時点で NVM_DIRPROFILE を上書きしたい場合は環境変数経由で指定できる(例: NVM_DIR="$HOME/.dotfiles/nvm")(github.com)
  • nvm の更新は 同じスクリプトをもう一度実行 すれば上書きされる。(github.com)

基本コマンド📝

## 指定したバージョンのNode.jsをインストール
nvm install 16.13.0

# 最新のNode.jsをインストール
nvm install node

# 最新のLTSバージョンをインストール
nvm install --lts

# 指定したバージョンのNode.jsを使用
nvm use 16.13.0

# 最新のLTSバージョンを使用
nvm use --lts

# インストール済みのNode.jsバージョンを一覧表示
nvm ls

# 利用可能なNode.jsバージョンをリモートから一覧表示
nvm ls-remote

# 現在使用中のNode.jsバージョンを表示
nvm current

# nvm uninstall : 指定したバージョンのNode.jsをアンインストール
nvm uninstall 16.13.0

基本コマンド早見表

コマンド 意味 よく使う例
nvm install <ver> 指定バージョンをインストール nvm install 20 / nvm install --lts
nvm use <ver> 指定バージョンを現在のシェルで使用 nvm use node (最新)
nvm ls ローカルに入っている Node 一覧
nvm ls-remote 公式リリース一覧(超長い) `nvm ls-remote grep LTS`
nvm alias default <ver> 新しいシェルのデフォルトを設定 nvm alias default 18
nvm run <ver> <file> 特定バージョンでスクリプト実行 nvm run 14 app.js
nvm exec <ver> … PATH を一時書き換えて任意コマンド実行 nvm exec 16 npm test
nvm reinstall-packages <ver> 旧バージョンの npm パッケージを丸ごと再インストール nvm reinstall-packages 18
nvm uninstall <ver> バージョン削除 nvm uninstall 14
nvm set-colors <code> ls 出力の色替え nvm set-colors cgYmW

上表は公式 README・Medium 記事・GitHub Gist で紹介されている頻出パターンを抽出したものです。(gist.github.com, medium.com, linode.com)


バージョン管理ワンポイント

インストール系

nvm install node      # 最新版
nvm install --lts     # 最新 LTS
nvm install 18.19.0   # 完全一致
nvm install 18        # 18.* の最新

インストールと同時にそのバージョンを使う場合は --default オプションを併用。(github.com)

切り替え系

  • nvm use 18 ― 18 系の最新に切替
  • nvm alias default node ― 常に最新安定版をデフォルトに(medium.com)

エイリアス活用術

nvm alias stable 20
nvm use stable
nvm unalias stable

任意のラベルを自分好みで付け替えられるので CI/スクリプトの可読性向上に便利。(medium.com)


環境変数&カスタマイズ

変数 用途
NVM_DIR nvm の本体と各バージョンを格納するディレクトリ
NVM_NODEJS_ORG_MIRROR ダウンロード先ミラーを変更(国内ミラーへ高速化等)
NVM_SYMLINK (Windows) グローバルに使う Node へシンボリックリンク
  • NVM_DIR が存在しない場合、起動時に「directory does not exist」エラーが出るので mkdir で事前作成または変数修正が必要(stackoverflow.com)
  • $PATH が壊れる場合、Homebrew 版 nvm はサポート外なので uninstall→公式スクリプト再インストールで解決することが多い(github.com)
  • XDG 系ディレクトリを使う場合は export NVM_DIR="$XDG_CONFIG_HOME/nvm" で配置を変更可能(medium.com)

よくあるトラブル & ヒント

  • ls-remote が N/A だけ返す → proxy/企業 FW で GitHub API が遮断されているケースが多い。環境変数 HTTPS_PROXY を確認し、再試行。(stackoverflow.com)
  • nvm コマンドが効かない → シェルを再起動 or source "$NVM_DIR/nvm.sh" を手動実行。(github.com)
  • パッケージ引継ぎ → 新バージョンへ上げる際は nvm reinstall-packages <old> でグローバル npm/pnpm/yarn パッケージをコピー。(github.com)

Windows で使いたい場合

Unix 版 nvm は WSL を含む POSIX シェル専用。ネイティブ Windows では fork 版 nvm-windows(coreybutler/nvm-windows)を使用し、nvm install latest など似たシンタックスで管理できる。インストール先やコマンド体系が微妙に違うため混在は避ける。(github.com)


参考/追加ドキュメント

  • 公式 README に全コマンド・環境変数一覧あり(nvm --help 相当)(github.com)
  • 実践記事やチートシート(Medium・Linode Docs・GitHub Gist)は各 OS でのセットアップ手順やエイリアス例が充実 (medium.com, medium.com, linode.com)

ワンポイント: シェルの補完が欲しい場合は brew install bash-completion 後に source $(brew --prefix nvm)/bash_completion を読み込むとタブ補完が効くようになります(Homebrew 配下に手動配置した場合のみ)。

これで nvm に関する日常操作はほぼカバーできるはずです。Happy hacking!