nvm

バージョン管理Node.jsJavaScript開発環境CLI

GitHub概要

nvm-sh/nvm

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

スター85,917
ウォッチ1,032
フォーク9,045
作成日:2010年4月15日
言語:Shell
ライセンス:MIT License

トピックス

bashinstallltsnodenode-jsnodejsnvmnvmrcposixposix-compliantshellversion-managerzsh

スター履歴

nvm-sh/nvm Star History
データ取得日時: 2025/7/20 02:18

言語バージョン管理ツール

nvm(Node Version Manager)

概要

nvmは、Node.jsの複数バージョンを管理するための最も人気のあるツールです。プロジェクトごとに異なるNode.jsバージョンを使用でき、npmも同時に管理されます。シェルスクリプトで実装されており、POSIX準拠のシェルで動作します。

詳細

主な特徴

  • 簡単なバージョン切り替え: コマンド一つでNode.jsバージョンを切り替え
  • 自動npm管理: Node.jsと一緒にnpmも自動的に管理
  • .nvmrcファイル: プロジェクトごとの自動バージョン設定
  • LTSサポート: LTS(長期サポート)バージョンの簡単インストール
  • エイリアス機能: バージョンに分かりやすい名前を付けられる
  • アップグレード支援: Node.jsバージョン間でのパッケージ移行

動作原理

nvmは環境変数PATHを動的に変更することで、使用するNode.jsバージョンを切り替えます。各バージョンは~/.nvm/versions/node/ディレクトリに独立してインストールされます。

サポート環境

  • Linux: すべての主要ディストリビューション
  • macOS: 完全サポート
  • Windows: WSL(Windows Subsystem for Linux)またはnvm-windows使用
  • シェル: bash、zsh、fish(プラグイン使用)

メリット・デメリット

メリット

  • 業界標準: Node.js開発者の間で最も広く使われている
  • 豊富な機能: エイリアス、自動切り替えなど便利な機能
  • 活発な開発: 継続的なアップデートとメンテナンス
  • 簡単な使用: 直感的なコマンド体系
  • 完全な分離: バージョンごとに独立したnpm環境
  • 高速インストール: プリコンパイル済みバイナリの使用

デメリット

  • シェル依存: シェル起動時の遅延が発生する可能性
  • Windows非対応: ネイティブWindowsでは別ツール(nvm-windows)が必要
  • メモリ使用: 複数バージョンインストール時のディスク容量
  • 初期設定: シェル設定ファイルの編集が必要
  • パフォーマンス: fnmなどの新しいツールと比較して遅い場合がある

参考ページ

書き方の例

インストール(Linux/macOS)

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

# または wget を使用
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# macOSではHomebrewも使用可能(非推奨)
# brew install nvm

シェル設定(.bashrcまたは.zshrcに自動追加される)

# nvmの設定(通常は自動で追加される)
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  # または source ~/.zshrc

基本的な使い方

# 利用可能なNode.jsバージョンの一覧表示
nvm ls-remote

# LTSバージョンのみ表示
nvm ls-remote --lts

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

# 特定バージョンのインストール
nvm install 20.11.0
nvm install 18.19.0
nvm install 16.20.2

# インストール済みバージョンの確認
nvm ls

# 現在のバージョン確認
nvm current
node --version

バージョン切り替え

# 特定バージョンに切り替え
nvm use 20.11.0

# 最新のLTSに切り替え
nvm use --lts

# デフォルトバージョンの設定
nvm alias default 20.11.0

# 一時的に別バージョンを使用
nvm exec 18.19.0 node app.js

プロジェクトごとの管理

# プロジェクトディレクトリに移動
cd /path/to/my-project

# .nvmrcファイルを作成
echo "20.11.0" > .nvmrc

# .nvmrcに基づいてバージョンを使用
nvm use
# Found '/path/to/my-project/.nvmrc' with version <20.11.0>

# .nvmrcのバージョンをインストールして使用
nvm install

エイリアスの管理

# エイリアスの作成
nvm alias production 20.11.0
nvm alias development 21.6.1

# エイリアスを使用
nvm use production

# エイリアス一覧
nvm alias

# エイリアスの削除
nvm unalias production

パッケージの移行

# 古いバージョンから新しいバージョンへパッケージを移行
nvm install 20.11.0 --reinstall-packages-from=18.19.0

# グローバルパッケージのみ移行
nvm install 20.11.0 --reinstall-packages-from=18.19.0 --global

# 現在のバージョンのグローバルパッケージ一覧
npm ls -g --depth=0

便利な設定とコマンド

# 自動的に.nvmrcを読み込む設定(.bashrcに追加)
cd() {
  builtin cd "$@"
  if [[ -f .nvmrc ]]; then
    nvm use
  fi
}

# Node.jsバージョンのアンインストール
nvm uninstall 16.20.2

# キャッシュのクリア
nvm cache clear

# nvmのアップデート
cd ~/.nvm
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`

# 特定のnpmバージョンをインストール
nvm install-latest-npm

トラブルシューティング

# nvmコマンドが見つからない場合
source ~/.bashrc

# PATHの確認
echo $PATH | grep nvm

# nvmの再インストール
rm -rf ~/.nvm
# 再度インストールスクリプトを実行