日々の開発では、手元に複数のプロジェクトがあり、それぞれのプロジェクトの要件が異なるため、異なるプロジェクトが異なるバージョンのNodeJS実行環境に依存しなければならないという状況によく遭遇します。適切なツールがなければ、この問題は非常に厄介です。

nvm時代の要請に応えて生まれたnvmは、Mac向けのnode管理ツールで、Rubyを管理するrvmに少し似ています。Windowsでnodeを管理する必要がある場合は、公式では以下を使用することを推奨しています。nvmw 或 nvm-windows。ただし、nvm-windowsはnvmの単純な移植ではなく、両者に関係はありません。しかし、以下で紹介するすべてのコマンドはnvm-windowsで実行できます。


nvmとnの違い

nodeバージョン管理ツールにはもう一つ、TJ大神のnコマンドがあります。nコマンドはnodeのモジュールとして存在しますが、nvmはnode/npmから独立した外部シェルスクリプトです。そのため、nコマンドはnvmに比べてより限定的です。

npmでインストールされるモジュールのパスはすべて/usr/local/lib/node_modulesであるため、nを使用して異なるnodeバージョンに切り替えると、実際にはグローバルのnode/npmディレクトリを共有することになります。そのため、「nodeバージョンごとに異なるグローバルnodeモジュールを使用する」という要件を十分に満たすことができません。


グローバルインストールされたnode/npmをアンインストールする

公式サイトでダウンロードしたnodeインストールパッケージは、実行すると自動的にグローバルディレクトリにインストールされ、使用中によく権限の問題に遭遇します。そのため、以下の方法でグローバルインストールされたnode/npmをアンインストールすることをお勧めします。

まず、Finderを開き、shift+command+Gを押して、「フォルダへ移動」ウィンドウを開き、以下のディレクトリをそれぞれ入力して移動した後、nodeとnode_modules関連するファイルとフォルダを削除します:

  • を開き、/usr/local/libを削除しますnodeとnode_modules関連するファイルとフォルダ
  • を開き、/usr/local/includeを削除しますnodeとnode_modules関連するファイルとフォルダ
  • もしbrew install nodeを使用してNodeJSをインストールした場合は、ターミナルでbrew uninstall nodeコマンドを実行してアンインストールする必要があります
  • 個人のホームフォルダ以下のすべてのlocal、libおよびincludeフォルダを確認し、nodeとnode_modulesに関連するすべてのファイルとフォルダを削除します
  • を開き、/usr/local/binを削除しますnode実行可能ファイル

ターミナルでいくつかの追加コマンドを入力する必要があるかもしれません:

sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /opt/local/bin/node
sudo rm /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules

Windowsインストール

まず最も重要なこと:インストール済みのNodeJSを必ずアンインストールしてください。そうしないと競合が発生します。次にnvm-windows最新のインストールパッケージをダウンロードして、そのままインストールするだけです。


OS X/Linuxインストール

Windowsとは異なり、既存のNodeJSを先にアンインストールする必要は必ずしもありません。もちろん、先にアンインストールすることをお勧めします。また、C++コンパイラが必要です。Linuxディストリビューションでは通常心配いりません。Ubuntuなどではbuild-essentialパッケージを直接使用できます。OS Xの場合は、X-Codeのコマンドラインツールを使用できます。次のコマンドを実行するだけです:

xcode-select --install

Linuxの場合:(Debian系ディストリビューションの場合)

sudo apt-get install build-essential

次に、

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

または

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash

を使用してリモートからinstall.shスクリプトをダウンロードして実行します。このバージョンの年号はv0.33.0プロジェクトの開発に伴って変化します。随時公式の最新インストールコマンドで最新のインストールバージョンを確認することをお勧めします。


複数バージョンのnode/npmをインストールする

例えば、4.2.2バージョンをインストールするには、次のコマンドを使用します:

nvm install 4.2.2

nvmはセマンティックバージョニングの命名規則に従います。例えば、最新の4.2シリーズの最新バージョンをインストールしたい場合は、次のように実行します:

nvm install 4.2

nvmは4.2.xの中で最も高いバージョンを探してインストールします。

次のコマンドでリモートサーバー上のすべての利用可能なバージョンを一覧表示できます:

nvm ls-remote

Windowsの場合は、次のとおりです:

nvm ls available

異なるバージョン間で切り替える

新しいバージョンのNodeをインストールするたびに、グローバル環境は自動的にこの新バージョンをデフォルトとして設定します。

nvmにはnvm useコマンドがあります。このコマンドの使用方法はinstallコマンドと似ています。

例えば、4.2.2:

nvm use 4.2.2

最新の4.2.x:

nvm use 4.2

iojsに切り替える:

nvm use iojs-v3.2.0

最新版に切り替える:

nvm use node

切り替えを実行するたびに、システムはnodeの実行可能ファイルのリンクを特定のバージョンのファイルに配置します。

nvmを使用して異なるバージョン番号にエイリアスを設定することもできます:

nvm alias awesome-version 4.2.2

私たちは4.2.2というバージョン番号にawesome-versionという名前を付けました。次に、次のように実行できます:

nvm use awesome-version

次のコマンドでエイリアスを解除できます:

nvm unalias awesome-version

さらに、defaultという特別なエイリアスも設定できます:

nvm alias default node

インストール済みインスタンスを一覧表示する

nvm ls

上の緑色の矢印は現在使用中のバージョンで、下にリストされているのは設定済みのエイリアスです。


プロジェクトで異なるバージョンのNodeを使用する

プロジェクトディレクトリに.nvmrcファイルを作成することで、使用するNodeバージョンを指定できます。その後、プロジェクトディレクトリでnvm useを実行するだけです。.nvmrcファイルの内容は、前述のセマンティックバージョニングの規則に従うだけで済みます。また、avnというツールがあり、このプロセスを自動化できます。


複数の環境で、npmはどのように使用すればよいでしょうか?

各バージョンのNodeには異なるバージョンのnpmが付属しています。npm -vを使用してnpmのバージョンを確認できます。グローバルにインストールされたnpmパッケージは、互換性の問題を引き起こす可能性があるため、異なるNode環境間で共有されません。それらは異なるバージョンのディレクトリ、例えば~/.nvm/versions/node/<version>/lib/node_modules</version>のようなディレクトリに配置されます。これにより、Linuxでsudoを使用する手間が省けます。これはユーザーのホームフォルダであるため、権限の問題は発生しません。

しかし問題は、インストールしたnpmパッケージをすべて再度インストールし直さなければならないのかということです。幸いなことに、この問題を解決する方法があります。次のコマンドを実行すると、特定のバージョンからインストール予定の新しいバージョンのNodeにインポートできます:

nvm install v5.0.0 --reinstall-packages-from=4.2

その他のコマンド

特定のバージョンのNodeを直接実行する

nvm run 4.2.2 --version

現在のターミナルのサブプロセスで特定のバージョンのNodeを実行する

nvm exec 4.2.2 node --version

特定のバージョンのNodeのパスを確認する

nvm which 4.2.2

Nodeの他の実装をインストールする。例えばiojs(ES6ベースのNode実装で、現在はNodeに統合されています)

nvm install iojs-v3.2.0

クイックコマンド:

  • nvm install node最新版のNodeをインストールする
  • nvm install iojs最新版のiojsをインストールする
  • nvm install unstable最新の不安定版Nodeをインストールする

原文リンク:http://bubkoo.com/2017/01/08/quick-tip-multiple-versions-node-nvm/