Edited at

node.js のインストール・アップデート・バージョン切替えの手順(nodebrew、Mac)

More than 1 year has passed since last update.

ホームディレクトリにインストールするための手順。環境はMac OSX 10.11 El Capitan。以下、ターミナルでの操作。

修正(2014-06-07):PATHを通す箇所、.bashrc→.bash_profileに変更(Macでは.bash_profileから読み込ませる必要がある)。


すでにインストーラーで入れた node.js と npm が入っている場合、一旦アンインストールする

インストーラーでインストールした node.js のアンインストール

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \

| while read i; do
sudo rm /usr/local/${i}
done
sudo rm -rf /usr/local/lib/node \
/usr/local/lib/node_modules \
/var/db/receipts/org.nodejs.*

npm(ホームディレクトリにある)のアンインストール

sudo rm -rf ~/.npm


nodebrew のインストールと設定

インストール。ホームディレクトリで以下コマンド

curl https://raw.githubusercontent.com/hokaccha/nodebrew/master/nodebrew | perl - setup

ホームディレクトリにインストールされる(.nodebrewディレクトリ)

インストールできたか確認(※helpにハイフン不要)

nodebrew help

ヘルプが表示されない場合はPATHを確認

echo $PATH

"ホームディレクトリ/.nodebrew/current/bin"へのPATHが通っていなければ、PATHを通す。viでホームディレクトリ/.bash_profile を編集。無ければ作成

vi ホームディレクトリ/.bash_profile

.bash_profileに追記

vi操作:iで編集モード、escキーで戻り、:wqで上書き保存

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

ターミナル再起動する(or source ~/.bash_profile

上記コマンドでPATHを確認。/Users/taku_n/.nodebrew/current/bin が追加されていればO.K.

特定バージョンを使いたいなら.bash_profile に以下を追記

nodebrew use v0.11

nodebrew自身を最新版にアップデート

nodebrew selfupdate


node.js,npmのインストールとバージョン切替え

nodebrew でインストール済みの node.js のバージョンのリストを確認

nodebrew ls

現在使用中のバージョン(current:v0.0.0)を覚えとく

Use of uninitialized value $a1 in numeric comparison (<=>) at /Users/(ユーザ)/.nodebrew/current/bin/nodebrew line 675. とメッセージが出る場合は、rm /Users/(ユーザー)/.nodebrew/node/.DS_Store で解消

一応 nodebrew 自身を最新版にアップデート

nodebrew selfupdate

node.js のインストール ※600MB以上あり結構時間かかるので注意

最新版:nodebrew install latest

安定版:nodebrew install stable

特定バージョン:nodebrew install v8.5.0

バージョンの切替え

(シンボリックリンク ~/.nodebrew/current が書き換えられる)

最新版:nodebrew use latest

安定版:nodebrew use stable

特定バージョン:nodebrew use v8.5.0

バージョンが無事切り替わっているか確認

node -v

補足。あるスクリプトを「一時的に」特定のバージョンで実行したい場合

(例:app.js を v6.11 で実行)

nodebrew exec v6.11.0 -- node app.js

npm自身に新しいバージョンが出てるかチェック(今は同梱なので不要?)

npm -v

→ 最新バージョンをチェック

最新版が出てたらアップデート

npm update -g npm

使っていたパッケージのインストール or 旧バージョンのパッケージにエイリアスを貼り使えるようにする

(パッケージはバージョンごとのディレクトリ内(~/.nodebrew/node/vx.x.x/lib/node_modules)にあるため、nodebrew use で node.js のバージョンを切り替えると、切替え前のバージョンでインストールしていたパッケージ群は使えなくなる)

新バージョンに移行後、旧バージョンを削除する、もしくは将来削除する可能性がある場合は新規にインストールする(良いやり方が用意されてそうな気がする。あれば教えてください)。

~/.nodebrew/node/vx.x.x[旧バージョン]/lib/node_modules

で旧バージョンのパッケージ名をコピペしエディタ等で半角スペース区切りに整形

新バージョンに切り替えた状態でnpmでグローバルにインストール

例) npm install -g csslint gulp gulp-cli jshint npm-check-updates phplint sass-lint

補足:移行後のバージョンに切り替えている状態で nodebrew migrate-package vx.xx.xx(移行前のバージョン) とすると、移行前バージョンでインストールしていたパッケージ群を現在のバージョンから使えるようにしてくれる。しかし、これは、~/.nodebrew/node/vx.x.x(現バージョン)/lib/node_modules/ にハードリンク(エイリアス)を作成するというものであり、実ファイルをコピーしてくれるわけではないので、移行前のバージョンを削除すると使えなくなる。なお、パスを通す必要がある(~/.nodebrew/node/vx.x.x/bin 中に反映)ので、node_modules 中の各パッケージのディレクトリを新バージョンのそれにコピーするだけでは動作しない。パッケージごとにパスを通す作業を考えると、新規にインストールした方が楽という判断。


node.jsの特定バージョンのアンインストール

アップデートした場合、何か問題が起きた時に戻せるように元のバージョンはしばらく残しといた方が良いと思う。

nodebrew uninstall v7.9.0


さらに


nodebrew clean v7.9.0

削除後残ってるゴミファイルがないかどうかの確認は

~/.nodebrew/src/~/.nodebrew/node を確認(nodebrew ls の出力と比較)


nodebrew のアンインストール・入れ直し

nodebrew コマンド としても反応が無くなり(エラーは出ない)ハマった時があった。

一旦アンインストールして入れ直そうと .nodebrew ディレクトリを削除し、上記インストールのワンライナーを実行してもインストールできなかった。

git.io/nodebrewをホームディレクトリにダウンロード、perl nodebrew setup で入れ直すことができた。完了後、ダウンロードした git.io/nodebrew は削除。


参考サイト