CUBE SUGAR CONTAINER

技術系のこと書きます。

Node.js: Mac に nvm で複数のバージョンをインストールする

Node.js には同時に複数の LTS (Long Term Support) がサポートされる期間が存在している。 また、特定のバージョンの Node.js でないと動かないようなライブラリも結構ある。 そこで、今回は複数バージョンの Node.js をインストールして管理できる nvm を使ってみることにする。

使った環境は次の通り。

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1108

インストール

まずは Homebrew を使って nvm をインストールする

$ brew install nvm

Homebrew がインストールされていないときは?

以下の手順でインストールする。

$ xcode-select --install
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

セットアップ

インストールできたら、次に nvm を設定する。

まずは nvm が使う作業ディレクトリを用意しておく。

$ mkdir ~/.nvm

次にシェルの設定ファイルに nvm にパスを通すための設定を追加する。 次の設定では nvm がインストールされていない環境で使ってもエラーにならないよう対処してある。 何でそんなことをするかというと、色んな環境で設定ファイルを使いまわしてるから。

$ cat << 'EOF' >> ~/.zlogin

# nvm
if [ -e $(brew --prefix nvm)/nvm.sh ]; then
  export NVM_DIR="${HOME}/.nvm"
  source $(brew --prefix nvm)/nvm.sh
fi
EOF

設定を書き込む先は、使っている設定ファイルごとに .bashrc とか .zshrc とか上手いこと変更する。

設定を書き込んだらシェルの設定ファイルを読み込み直す。

$ source ~/.zlogin

これで nvm にパスが通って使い始める準備ができた。

$ nvm --version
0.32.1

使ってみる

まずはインストールできる Node.js のバージョンは nvm ls-remote サブコマンドで確認できる。

$ nvm ls-remote | tail
         v6.4.0
         v6.5.0
         v6.6.0
         v6.7.0
         v6.8.0
         v6.8.1
         v6.9.0   (LTS: Boron)
         v6.9.1   (Latest LTS: Boron)
         v7.0.0
         v7.1.0

そして、現在インストールされているバージョンは nvm ls で確認できる。 今は何もインストールされていないため N/A となっている。 また、主要な LTS のバージョンについてはインストールされていない状態でも候補として表示されるようだ。

$ nvm ls
            N/A
node -> stable (-> N/A) (default)
iojs -> N/A (default)
lts/* -> lts/boron (-> N/A)
lts/argon -> v4.6.2 (-> N/A)
lts/boron -> v6.9.1 (-> N/A)

試しに v4.x 系の LTS をインストールしてみる。 --lts オプションをつけると LTS 版しか入らないようになるみたい?

$ nvm install lts/argon --lts
VERSION_PATH=''
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v4.6.2 (npm v2.15.11)
nvm_ensure_default_set: a version is required

インストールすると nvm ls コマンドにも有効になっているのが v4.6.2 という表示が出た。

$ nvm ls
->       v4.6.2
node -> stable (-> v4.6.2) (default)
stable -> 4.6 (-> v4.6.2) (default)
iojs -> N/A (default)
lts/* -> lts/boron (-> N/A)
lts/argon -> v4.6.2
lts/boron -> v6.9.1 (-> N/A)

また、node コマンドも使えるようになっている。

$ node --version
v4.6.2

次に、別のバージョンもインストールしてみよう。 今度は v6.x 系の LTS をインストールする。

$ nvm install lts/boron --lts
VERSION_PATH=''
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v6.9.1 (npm v3.10.8)
nvm_ensure_default_set: a version is required

すると、インストールしただけでそのバージョンが有効になった。

$ nvm ls
         v4.6.2
->       v6.9.1
node -> stable (-> v6.9.1) (default)
stable -> 6.9 (-> v6.9.1) (default)
iojs -> N/A (default)
lts/* -> lts/boron (-> v6.9.1)
lts/argon -> v4.6.2
lts/boron -> v6.9.1

node コマンドで確認してもバージョンが v6.9.1 に切り替わっている。

$ node --version
v6.9.1

もし、使うバージョンを切り替えたいときは nvm use サブコマンドを使えば良い。

$ nvm use 4.6.2
Now using node v4.6.2 (npm v2.15.11)

これでお目当てのバージョンに切り替わった。

$ node --version
v4.6.2

めでたしめでたし。