nvm
というコマンドラインツールを使うと、システム内に複数バージョンの Node.js 実行環境をインストールして、切り替えて使うことができるようになります。
$ nvm use 16 # node コマンドを version 16.x.x に切り替え
$ nvm use 14 # node コマンドを version 14.x.x に切り替え
新しいバージョンの Node.js を試してみたいときや、複数バージョンでテストを行いたい場合に便利です。
nvm
はスタンドアローン版の Node.js とも共存できるので、安心してインストールすることができます。
nvm
を使わずにインストールされた Node.js は、system
という名前で参照できるようになっています。
$ nvm use system # node コマンドをスタンドアローン版に切り替え
nvm
コマンドは次のように簡単にインストールできます。
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
最新バージョンのインストール方法は nvm-sh/nvm - GitHub の公式サイトで確認してください。
インストール後は、ターミナル(bash など)を再起動するか、source ~/.bashrc
を実行すると nvm
コマンドを実行できるようになります。
nvm
はもともと Linux 系のコマンドラインツールとして作成されていますが、Windows でも nvm-windows のインストーラー を使えば簡単にインストールできます。
nvm
が現在アクティブにしている Node.js のバージョンを調べるには、nvm current
コマンドを使用します。
$ nvm current
system
上記のように system
と表示される場合は、システムにすでにインストールされている(nvm
を使わずにインストールした)Node.js がアクティブになっています。
まだ Node.js がインストールされていない環境の場合は none
と表示されます。
システムにインストールされた Node.js 実行環境は必要なくなるので、不要なグローバルパッケージをアンインストールしておくとよいかもしれません(npm root -g
で表示されたディレクトリをクリアする方法もあります)。
$ npm list -g # グローバルパッケージの一覧を表示
$ sudo npm uninstall -g XXXX # 不要なパッケージをアンインストール
nvm
で特定のバージョンの Node.js をインストールしたいときは、nvm install
コマンドを使用します。
次の例では、メジャーバージョン 16 の最新の Node.js をインストールしています。
最新の LTS (長期サポート)バージョンをインストールしたいときは、--lts
オプションを指定します。
最新バージョンをインストールしたいときは、node
というエイリアス名を使用します。
$ nvm install 16 # メジャーバージョンを指定してインストールする場合
Downloading and installing node v16.14.0...
$ nvm install --lts # 最新の LTS 版をインストールする場合
Installing latest LTS version.
v16.14.0 is already installed.
$ nvm install node # 最新バージョンをインストールする場合
Downloading and installing node v17.7.1...
Node.js 環境を追加インストールすると、自動的にそのバージョンがアクティブになります。
$ nvm current
v16.14.0
$ node -v
v16.14.0
使用する Node.js のバージョンを切り替えるには、nvm use
コマンドを使用します。
$ nvm use system # システムインストールされた Node.js を使う
$ nvm use 16 # nvm でインストールしたバージョン 16 の Node.js を使う
インストールされている 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
ディレクトリ以下にインストールされていきます。
npm install -g
でグローバルインストールした NPM パッケージも、各バージョンごとに管理されます(node_modules
ディレクトリの場所は npm root -g
で確認できます)。
多くのバージョンの Node.js をインストールすると、ホームディレクトリのサイズが肥大化していくので注意してください(1 バージョンごとに 100 MB くらい消費していきます)。
必要のなくなったバージョンは適宜、nvm uninstall
で削除しましょう。
$ nvm uninstall 14
前述の通り、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
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 のバージョンを簡単に揃えることができます。