Node.js版のrbenvのようなやつをMacにインストールした。
複数バージョンのnode.jsをホームディレクトリにインストールでき、アプリ毎に別バージョンのnode.jsを使える。

node.jsのバージョン管理のためにndenv & node-buildを作ったのとanyenvの宣伝 – As a Futurist…
https://github.com/riywo/ndenv


ndenvインストール

git clone git@github.com:riywo/ndenv.git ~/.ndenv
mkdir .ndenv/plugins
git clone git@github.com:riywo/node-build.git ~/.ndenv/plugins/node-build
インストール機能はnode-buildというプラグインにわかれている。

.bash_profileや.zshrcに設定
export PATH=$PATH:$HOME/.ndenv/bin
eval "$(ndenv init -)"


Node.jsインストール

ndenv install --list
ndenv install v0.11.5
インストール可能なnodeの一覧を見て、v0.11.5を入れた。

インストールしたnodeの一覧
ndenv versions


global/local

ndenv global v0.11.5
v0.11.5を使う

ndenv local v0.10.15
そのディレクトリ内でのみv0.10.15を使うようになる
cdでディレクトリに入るだけでnodeバージョンが切り替わる
ディレクトリに .node-version というファイルが生成されていて、その中でバージョン指定されている
アプリ毎に別バージョンのnodeを使いたい時に有用



エイリアスと実体

which node
~/.ndenv/shims/node が得られる
これはshell scriptで書かれたラッパー
ndenv関連の設定を全て読み込んでから、下記の実体を実行する

ndenv which node
~/.ndenv/versions/v0.11.5/bin/node が得られる
こっちが実体


cdしたのにnodeやnpmのバージョンがおかしい時

ndenv rehash
シンボリックリンクを貼り直す(rehash)


cronやdaemonでアプリに合わせたバージョンのnodeを使いたい時

1. アプリのディレクトリ内で ndenv local し、.node-versionを生成する
2. cronやdaemonで、アプリのディレクトリにcdする
3. /Users/ユーザー名/.ndenv/shims/node から実行する、アプリディレクトリ内の.node-versionが読まれてnodeが実行される。

~/tmp でndenv localしてglobalと別のバージョンを使うようにしておいて、
こういうcrontabを登録してみるとちゃんと切り替わっているか確認できる。
* * * * * cd $HOME && node -e 'console.log(process.version)' > ~/homedir.version
* * * * * cd $HOME/tmp && node -e 'console.log(process.version)' > ~/tmpdir.version


どれぐらいrbenvっぽいかというとこれぐらいそれっぽい