書類 計算する
nvm で複数の Node.js バージョンを切り替えて使用する (Node Version Manager)

nvm で複数の Node.js バージョンを切り替えて使用する (Node Version Manager)

nvm (Node Version Manager) とは?nvm というコマンドラインツールを使うと、システム内に複数バージョンの Node.js 実行環境をインストールして、切り替えて使うことができるようになります。 nvm 実行のために、あらかじめ Node.js をインストールしておく必要

nvm (Node Version Manager) とは?

nvm というコマンドラインツールを使うと、システム内に複数バージョンの Node.js 実行環境をインストールして、切り替えて使うことができるようになります。
nvm 実行のために、あらかじめ Node.js をインストールしておく必要はありません。

$ nvm use 16  # node コマンドを version 16.x.x に切り替え(必要に応じてインストール)
$ nvm use 14  # node コマンドを version 14.x.x に切り替え(必要に応じてインストール)

上記のように node コマンドのバージョンを簡単に切り替えることができるため、新しいバージョンの Node.js を試してみたいときや、複数バージョンでテストを行いたい場合に便利です。
nvm はスタンドアローン版の Node.js とも共存できるので、安心してインストールすることができます。
nvm を使わずにインストールされた Node.js は、system という名前で参照できるようになっています。

$ nvm use system  # node コマンドをスタンドアローン版に切り替え

nvm のインストール

nvm コマンドは次のように簡単にインストールできます。

macOS や Linux の場合

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

最新バージョンのインストール方法は nvm-sh/nvm – GitHub の公式サイトで確認してください。
インストール後は、ターミナル(bash など)を再起動するか、source ~/.bashrc を実行すると nvm コマンドを実行できるようになります。

Windows の場合

nvm はもともと Linux 系のコマンドラインツールとして作成されていますが、Windows でも nvm-windows のインストーラー を使えば簡単にインストールできます。

nvm の使い方

nvm が現在アクティブにしている Node.js のバージョンを調べるには、nvm current コマンドを使用します。

アクティブになっている Node.js バージョンを確認

上記のように system と表示される場合は、システムにすでにインストールされている(nvm を使わずにインストールした)Node.js がアクティブになっています。
まだ Node.js がインストールされていない環境の場合は noneNo current version. のように表示されます。
使用する Node.js を nvm で切り替える場合、スタンドアローン版としてインストールされた Node.js 実行環境は必要なくなるので、不要なグローバルパッケージをアンインストールしておくとよいかもしれません(npm root -g で表示されたディレクトリをクリアする方法もあります)。

(必要があれば)スタンドアローン版の Node.js のグローバルパッケージを削除

$ npm list -g  # グローバルパッケージの一覧を表示
$ sudo npm uninstall -g XXXX  # 不要なパッケージをアンインストール

nvm でインストール可能な Node.js バージョンの一覧は nvm list available コマンドで確認できます。

インストール可能なバージョンの一覧

$ nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    22.5.1    |   20.16.0    |   0.12.18    |   0.11.16    |
|    22.5.0    |   20.15.1    |   0.12.17    |   0.11.15    |
|    22.4.1    |   20.15.0    |   0.12.16    |   0.11.14    |
|    22.4.0    |   20.14.0    |   0.12.15    |   0.11.13    |
|    22.3.0    |   20.13.1    |   0.12.14    |   0.11.12    |
|    22.2.0    |   20.13.0    |   0.12.13    |   0.11.11    |
|    22.1.0    |   20.12.2    |   0.12.12    |   0.11.10    |
|    22.0.0    |   20.12.1    |   0.12.11    |    0.11.9    |
|    21.7.3    |   20.12.0    |   0.12.10    |    0.11.8    |
|    21.7.2    |   20.11.1    |    0.12.9    |    0.11.7    |
|    21.7.1    |   20.11.0    |    0.12.8    |    0.11.6    |
|    21.7.0    |   20.10.0    |    0.12.7    |    0.11.5    |
|    21.6.2    |    20.9.0    |    0.12.6    |    0.11.4    |
|    21.6.1    |   18.20.4    |    0.12.5    |    0.11.3    |
|    21.6.0    |   18.20.3    |    0.12.4    |    0.11.2    |
|    21.5.0    |   18.20.2    |    0.12.3    |    0.11.1    |
|    21.4.0    |   18.20.1    |    0.12.2    |    0.11.0    |
|    21.3.0    |   18.20.0    |    0.12.1    |    0.9.12    |
|    21.2.0    |   18.19.1    |    0.12.0    |    0.9.11    |
|    21.1.0    |   18.19.0    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases

上記の例では、最新バージョンは 22.5.1 で、LTS(長期サポート)バージョンが 20.16.0 であることが分かります。
特定のバージョンの Node.js をインストールしたいときは、nvm install <ver> コマンドを使用します。
次の例では、メジャーバージョン 22 の最新の Node.js をインストールしています。
最新バージョンをインストールするときは、バージョン番号の代わりに nvm install latest と指定することも可能です。
最新の LTS (長期サポート)バージョンをインストールしたいときは、nvm install lts と指定します。

nvm で Node.js をインストールする

$ nvm install 20  # メジャーバージョンを指定してインストールする場合
Downloading node.js version 22.5.1 (64-bit)...

$ nvm install latest  # 最新バージョンをインストールする場合
Downloading node.js version 22.5.1 (64-bit)...

$ nvm install lts  # 最新の LTS 版をインストールする場合
Downloading node.js version 20.16.0 (64-bit)...

現在インストールされている Node.js バージョンの一覧は nvm list コマンドで確認できます。

インストール済みの Node.js バージョンの確認

$ nvm list
    22.5.1
    20.16.0

使用する Node.js のバージョンを切り替えるには、nvm use コマンドを使用します。

$ nvm use 22      # nvm でインストールしたバージョン 22 の Node.js を使う
$ nvm use system  # スタンドアローン版としてインストールされた Node.js を使う

nvm ls コマンドの結果には、次のように各種エイリアス名が表示されることがあります。

$ nvm ls
       v14.19.0
->     v16.14.0
         system
default -> 16 (-> v16.14.0)
...
stable -> 16.14 (-> v16.14.0) (default)
...
lts/gallium -> v16.14.0

現在アクティブになっているバージョンには、行頭に -> が表示されています(あるいは *)。
上記の例では、v16.14.0 がアクティブになっていることが分かります。
default -> 16 のように矢印の左側に表示されている名前は、具体的なバージョンのエイリアス名を示しており、default などのエイリアス名が自動的に生成されます。
このエイリアスの仕組みによって、次のコマンドはいずれも v16.14.0 の切り替えを意味します。

$ nvm use 16
$ nvm use 16.14
$ nvm use v16.14.0
$ nvm use default
$ nvm use stable
$ nvm use lts/gallium
$ nvm use --lts  (参考までに LTS はオプションでも指定可能)

default となっているのは、その名の通り、ターミナル起動時(bash シェル起動時)にデフォルトで有効になるバージョンとして扱われます。
nvm alias コマンドで、デフォルトのバージョンを変更することができます(この default エイリアスの実体は、~/.nvm/alias/default というファイルです)。

ちなみに、各バージョンの Node.js 実行環境は、~/.nvm ディレクトリ以下にインストールされていきます(nvm root でディレクトリパスを確認可能)。
npm install -g でグローバルインストールした NPM パッケージも、各バージョンごとに管理されます(node_modules ディレクトリの場所は npm root -g で確認できます)。
多くのバージョンの Node.js をインストールすると、ホームディレクトリのサイズが肥大化していくので注意してください(1 バージョンごとに 100 MB くらい消費していきます)。
必要のなくなった Node.js バージョンは、適宜 nvm uninstall で削除しましょう。

(応用) .nvmrc ファイルで Node.js バージョンを揃える

Node.js プロジェクトのルートディレクトリに .nvmrc ファイルを置くと、そのプロジェクトが想定する Node.js のバージョンを示すことができます。
例えば、プロジェクトで Node.js バージョン 14.19.x を使用するように統一したい場合は、次のように .nvmrc ファイルを作成して、Git などにコミットしておきます。

このディレクトリより下のディレクトリで nvm install を引数なしで実行すると、.nvmrc に記述されたバージョンの Node.js がインストールされます。

$ nvm install
Found '/Users/maku/myapp/.nvmrc' with version <14.19.0>
Downloading and installing node v14.19.0...

アクティブな Node.js バージョンを切り替える場合も、nvm use を引数なしで実行するだけで済みます。

$ nvm use
Found '/Users/maku/myapp/.nvmrc' with version <14.19.0>
Now using node v14.19.0 (npm v6.14.16)

このように、nvm さえ入れておけば、プロジェクト全体で使用する Node.js のバージョンを簡単に揃えることができます。

(応用)最新環境に同じ NPM パッケージをインストールする

前述の通り、nvm install node コマンドを使用すると、最新の Node.js バージョンをインストールすることができますが、新しい環境の NPM グローバルパッケージはひとつずつ入れ直す必要があります。
現在アクティブになっている Node.js 環境にインストールされている NPM グローバルパッケージを、最新の Node.js 環境にすべてインストールするには次のように --reinstall-packages-from オプションを使用します。

$ nvm install node --reinstall-packages-from=current

このオプションには、任意のエイリアス名を指定できます。

# 現在の最新環境 (node) にインストールされているパッケージを引き継ぐ
$ nvm install node --reinstall-packages-from=node

# 特定のバージョンにインストールされているパッケージを引き継ぐ
$ nvm install node --reinstall-packages-from=16

デフォルトでは NPM パッケージのバージョンはすべて引き継がれますが、--latest-npm オプションを指定することで、最新の NPM パッケージをインストールすることができます。
新しい Node.js 環境では、新しいバージョンの NPM パッケージが必要になることも多いため、このオプションは指定しておいた方がいいかもしれません。

$ nvm install node --reinstall-packages-from=node --latest-npm