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

  • 225
    Like
  • 4
    Comment

ホームディレクトリにインストールするための手順。環境は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)を覚えとく

一応 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 は削除。

参考サイト