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
コマンドを使用します。
上記のように system
と表示される場合は、システムにすでにインストールされている(nvm
を使わずにインストールした)Node.js がアクティブになっています。
まだ Node.js がインストールされていない環境の場合は none
や No current version.
のように表示されます。
使用する Node.js を nvm
で切り替える場合、スタンドアローン版としてインストールされた Node.js 実行環境は必要なくなるので、不要なグローバルパッケージをアンインストールしておくとよいかもしれません(npm root -g
で表示されたディレクトリをクリアする方法もあります)。
nvm
でインストール可能な Node.js バージョンの一覧は nvm list available
コマンドで確認できます。
上記の例では、最新バージョンは 22.5.1 で、LTS(長期サポート)バージョンが 20.16.0 であることが分かります。
特定のバージョンの Node.js をインストールしたいときは、nvm install <ver>
コマンドを使用します。
次の例では、メジャーバージョン 22
の最新の Node.js をインストールしています。
最新バージョンをインストールするときは、バージョン番号の代わりに nvm install latest
と指定することも可能です。
最新の LTS (長期サポート)バージョンをインストールしたいときは、nvm install lts
と指定します。
現在インストールされている Node.js バージョンの一覧は nvm list
コマンドで確認できます。
使用する 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
というファイルです)。
$ nvm alias default 14
ちなみに、各バージョンの Node.js 実行環境は、~/.nvm
ディレクトリ以下にインストールされていきます(nvm root
でディレクトリパスを確認可能)。
npm install -g
でグローバルインストールした NPM パッケージも、各バージョンごとに管理されます(node_modules
ディレクトリの場所は npm root -g
で確認できます)。
多くのバージョンの Node.js をインストールすると、ホームディレクトリのサイズが肥大化していくので注意してください(1 バージョンごとに 100 MB くらい消費していきます)。
必要のなくなった Node.js バージョンは、適宜 nvm uninstall
で削除しましょう。
$ nvm uninstall 14
(応用) .nvmrc ファイルで Node.js バージョンを揃える
Node.js プロジェクトのルートディレクトリに .nvmrc
ファイルを置くと、そのプロジェクトが想定する Node.js のバージョンを示すことができます。
例えば、プロジェクトで Node.js バージョン 14.19.x
を使用するように統一したい場合は、次のように .nvmrc
ファイルを作成して、Git などにコミットしておきます。
$ echo 14.19 > .nvmrc
このディレクトリより下のディレクトリで 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