Syntax Error.

[Sy] nodebrewを使ってMac (El Capitan) にNode.jsをインストールして管理する

2016/06/22 (更新: 2017/12/12)

複数バージョンのNode.jsを管理するバージョンマネージャにはいくつかありますが、最近はサーバにもローカルマシンにも nodebrew を採用してます。今回は Homebrew を使ってMac (El Capitan)で複数バージョンのNode.jsをインストールしてみます。

⇒ hokaccha/nodebrew: Node.js version manager

(2017/12/12追記) Windows の方はこちらの nodist が便利でした。

⇒ [Sy] nodist を使って Windows 10 に 複数バージョンの Node.js をインストールする

nodebrewをインストール

早速nodebrewをインストールします。Homebrewを使って簡単にインストールできます。

$ brew install nodebrew

インストールが終わったら、PATHの設定を.zshrcまたは.bashrcに追記しておきましょう。ぼくはzshを使ってるので、.zshrcに以下を追記しています。

export PATH=$HOME/.nodebrew/current/bin:$PATH

PATHの設定を追記できたら、一度読み込み直して設定を反映させます。

$ source ~/.zshrc

または

$ source ~/.bashrc

これでnodebrewのインストールは終わりです。

nodebrewのhelpを見てみる

確認も含めて、helpを見てみます。

$ nodebrew help
nodebrew 0.9.6

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install <version> (compile from source)
    nodebrew install-binary <version>     Download and install <version> (binary file)
    nodebrew uninstall <version>          Uninstall <version>
    nodebrew use <version>                Use <version>
    nodebrew list                         List installed versions
    nodebrew ls                           Alias for `list`
    nodebrew ls-remote                    List remote versions
    nodebrew ls-all                       List remote and installed versions
    nodebrew alias <key> <value>          Set alias
    nodebrew unalias <key>                Remove alias
    nodebrew clean <version> | all        Remove source file
    nodebrew selfupdate                   Update nodebrew
    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version
    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

Example:
    # install from binary
    nodebrew install-binary v0.10.22

    # use a specific version number
    nodebrew use v0.10.22

    # io.js
    nodebrew install-binary io@v1.0.0
    nodebrew use io@v1.0.0

最初にnodebrewのバージョンが表示されてます。(この場合は0.9.6ですね)

Usageのところにはコマンドがたくさんありますが、とりあえず最低限つぎの3つを覚えておけば使えます。

  • nodebrew ls-remote
     インストールできるバージョンを検索して一覧表示
  • nodebrew install-binary <version>
     指定した<version>のNode.jsをインストール
  • nodebrew use <version>
     Macで使うNode.jsを指定した<version>に切り替える

それぞれのコマンドの動きを見てみます。

インストールできるバージョンを検索して一覧表示(ls-remote)

「nodebrewをインストールしたし、Node.jsをインストールしよう」と思っても、インストールできるバージョンがわからないとできないので、まずはls-remoteでインストール可能なバージョンを調べます。

コマンドを実行してみると、

$ nodebrew ls-remote
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6

・
・
・

v4.0.0    v4.1.0    v4.1.1    v4.1.2    v4.2.0    v4.2.1    v4.2.2    v4.2.3
v4.2.4    v4.2.5    v4.2.6    v4.3.0    v4.3.1    v4.3.2    v4.4.0    v4.4.1
v4.4.2    v4.4.3    v4.4.4    v4.4.5

v5.0.0    v5.1.0    v5.1.1    v5.2.0    v5.3.0    v5.4.0    v5.4.1    v5.5.0
v5.6.0    v5.7.0    v5.7.1    v5.8.0    v5.9.0    v5.9.1    v5.10.0   v5.10.1
v5.11.0   v5.11.1

v6.0.0    v6.1.0    v6.2.0    v6.2.1    v6.2.2

io@v1.0.0 io@v1.0.1 io@v1.0.2 io@v1.0.3 io@v1.0.4 io@v1.1.0 io@v1.2.0 io@v1.3.0
・
・
・

・・・のようにメジャーバージョンごと(v0.x系はマイナーバージョンごと)にある程度まとめられた形で一覧表示されます。細かいところですが、他のバージョンマネージャは縦にずらっと並ぶものが多いので、気が利いてるなぁと思いました。

io.js(一時期Node.jsから分かれて開発されていたもの。Node.jsのv4.0.0で再び統合)もインストール可能です。まぁ今更io.jsをインストールする機会はなさそうですけど。

Node.jsのメジャーバージョンの意味

Node.jsのメジャーバージョン(最初の数字)は、奇数のものが「最新機能版」で偶数のものが「長期サポート版」になります。なので、長期的に開発・運用が必要な場合はv4.xやv6.xを選択すると良いです。Node.jsの新しい機能を試したい、などいつでもアップデートできるような場合はv5.xを選択するのもいいと思います。

インストールしたメジャーバージョンが決まってる場合などは、以下のようにgrepコマンドにパイプで渡してあげるとすっきりします。

$ nodebrew ls-remote | grep v6
v6.0.0    v6.1.0    v6.2.0    v6.2.1    v6.2.2

このコマンドの意味は、 nodebrew ls-remoteの出力(先ほどのすべてのバージョンのリスト)をgrep v6(「v6」という文字が含まれる行を検索して出力する)の入力として渡す ということになります。

指定した<version>のNode.jsをインストール(install-binary <version>)

インストールしたいバージョンを決めたら、実際にNode.jsをインストールします。

例として、v6.0.0をインストールする場合は、次のようなコマンドを実行します。

$ nodebrew install-binary v6.0.0
Fetching: https://nodejs.org/dist/v6.0.0/node-v6.0.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

このように、「Installed successfully」と表示されれば成功です。

ただこの段階ではまだnodenpmも実行できません。command not foundと出るはずです。

$ node -v
zsh: command not found: node

$ npm -v
zsh: command not found: npm

nodebrewに限った話ではないですが、バージョンマネージャはあくまでも「複数のバージョンを管理するためのもの」なので、「どのバージョンを今使いたいのか」を教えてあげる必要があります。nodebrewでその設定をするためのコマンドが次のnodebrew useになります。

Macで使うNode.jsを指定した<version>に切り替える(use <version>)

ということで、先ほどインストールしたNode.jsのv6.0.0を有効にします。

$ nodebrew use v6.0.0
use v6.0.0

これでNode.jsが使える状態になりました。試しに先ほどcommand not foundになったnodenpmを実行してみます。

$ node -v
v6.0.0

$ npm -v
3.8.6

このようにバージョンがそれぞれ表示されればOKです。

以降、他のバージョンをインストールして使いたい場合は、install-binaryでインストールして、useで設定すれば(切り替えれば)使えるようになります。

以上、Macでのnodebrewを使ったNode.jsの複数バージョン管理についてでした。