はじめに
Node.js は、専用のリポジトリを追加すれば apt や yum でインストールすることができますが、開発プロジェクトごとにバージョンを切り替えたいときには、やはりバージョンマネージャーが便利です。
Node.js のバージョンマネージャーには、nvm, ndenv, nodebrew, nodenv など様々な種類があり、どれを使用してもあまり変化はありませんが、Ruby では rbenv がよく使われることから、これとほぼ同じ仕様で作られている ndenv を使用しています。今回は ndenv で Node.js のバージョンを管理する方法を紹介します。
リポジトリをクローンする
ndenv のリポジトリを GitHub からクローンします。
$ git clone https://github.com/riywo/ndenv ~/.ndenv
パスを通す
ndenv を標準コマンドとして使用できるように環境変数にパスを通します。
$ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
Ubuntu では .bash_profile
ではなく .profile
に書き換えてください。また、.bashrc
をログイン時に読み込むように設定されている場合はそちらに書き込んでも良いです。
パスを通したらシェルを再起動して環境変数を反映させます。
$ exec $SHELL -l
node-build を導入する
このままでも ndenv
コマンド自体は使用できますが、肝心な、Node.js をインストールする ndenv install
コマンドが使用できません。ndenv install
を使用できるようにするためのプラグインである node-build をインストールします。
node-build のリポジトリをクローンします。
$ git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build
これで ndenv の導入は完了です。
インストールできるバージョンの一覧を確認
インストールできる Node.js / io.js のバージョン一覧を確認するには以下のコマンドを実行します。
$ ndenv install -l
出力された一覧から、インストールしたいバージョンを確認してください。もし、インストールしたいバージョンが最新のもので、一覧に出てこない場合は、以下のコマンドを実行してリポジトリを最新のものにアップデートしてください。
$ cd ~/.ndenv
$ git pull
Node.js をインストール
インストールしたい Node.js のバージョンを指定してインストールします。たとえば v8.4.0 をインストールしたい場合は以下のコマンドを実行します。
$ ndenv install v8.4.0
インストール後は、以下のコマンドを忘れずに実行してください。
$ ndenv rehash
これで Node.js v8.4.0 がインストールされました。
グローバル環境にセット
現状では、Node.js v8.4.0 がインストールされていますが、node
コマンドは使用できないはずです。
$ node -v
ndenv: node: command not found
The `node' command exists in these Node versions:
v8.4.0
これを解消するにはグローバル環境にセットする必要があります。
$ ndenv global v8.4.0
これで、node
コマンドが使用できるようになります。
$ node -v
v8.4.0
これは、Node.js を使用しない開発プロジェクトディレクトリで node
コマンドを実行したとき、どのバージョンを使用するかを指定するものです。規定の Node.js のバージョンをセットするものだと思ってください。
ローカル環境にセット
では、グローバルとは反対に、Node.js を使用する、あるプロジェクトディレクトリ以下では、v8.4.0 ではなく、v6.11.3 を使用したかったとしましょう。その場合はプロジェクトディレクトリで、以下のコマンドを実行します。(Node.js v6.11.3 は ndenv install
ですでにインストールされたものとします)
$ cd project-using-nodejs
$ ndenv local v6.11.3
このようにすると project-using-nodejs
ディレクトリ以下では、v6.11.3 が適用されます。
$ cd project-using-nodejs
$ node -v
v6.11.3
そして、それ以外のディレクトリ (ndenv local
を実行していないディレクトリ) では、グローバル環境にセットしたバージョンが適用されます。
$ cd project-not-using-nodejs
$ node -v
v8.4.0
このように、ディレクトリを切り替えるだけで、自動的にバージョンを切り替えることができます。もちろん、他のバージョンをインストールして、また別のディレクトリでは違うバージョンの Node.js を使用することもできます。これは地味に便利です。
ndenv local がやっていること
ndenv local
コマンドがやっていることは実にシンプルで、このコマンドを実行したディレクトリに、指定したバージョンが記載された .node-version
というファイルを作成しているだけです。
$ cd project-using-nodejs
$ cat .node-version
v6.11.3
なので、逆を言えば、このファイルがあることで、ndenv はディレクトリごとに Node.js のバージョンを柔軟に切り替えることができます。
ndenv local
でセットしたバージョンを解除するには、単にそのディレクトリにある .node-version
を削除すれば良いです。
$ cd project-using-nodejs
$ node -v
v6.11.3
$ rm .node-version
$ node -v
v8.4.0
ちなみに ndenv global
は ~/.ndenv/version
を見ているので、ndenv global
でセットしたバージョンを解除するには、~/.ndenv/version
を削除すれば良いです。
$ rm ~/.ndenv/version
今までにインストールしたバージョンの一覧を確認
今までに ndenv によってインストールされた Node.js のバージョン一覧を確認するには、以下のコマンドを実行します。
$ ndenv versions
v6.11.3
* v8.4.0 (set by /home/username/.ndenv/version)
v6.11.3 と v8.4.0 がインストールされていることがわかります。set by...
がついているバージョンが、現在そのディレクトリ以下で適用されているバージョンです。
Node.js をアンインストール
インストールした Node.js をアンインストールするには ndenv uninstall
コマンドを使用します。たとえば v8.4.0 をアンインストールするには以下のコマンドを実行します。
$ ndenv uninstall v8.4.0
使用できるコマンド一覧と使い方の詳細を確認
コマンドの使い方を忘れるたびにこの記事を見に来なくても済むように、コマンドの使い方を調べるコマンドは、忘れずに覚えておくと便利です。
使用できるコマンド一覧を確認するには以下のコマンドを実行します。
$ ndenv commands
コマンドの使い方の詳細を調べるには ndenv help
を使用します。たとえば ndenv install
コマンドの使い方の詳細を調べるには以下のコマンドを実行します。
$ ndenv help install
使う機会は少ないですが、他にもここでは紹介していないコマンドがあるので、興味があれば上記のコマンドで調べてみてください。
npm について
npm は Node.js と一緒にインストールされるので、特にインストールする必要はありません。npm のバージョンは、インストールした Node.js のバージョンに合わせて決まります。
$ ndenv global v8.4.0
$ node -v
v8.4.0
$ npm -v
5.3.0
$ ndenv global v6.11.3
$ node -v
v6.11.3
$ npm -v
3.10.10