8月102013
0
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インストール機能はnode-buildというプラグインにわかれている。
mkdir .ndenv/plugins
git clone git@github.com:riywo/node-build.git ~/.ndenv/plugins/node-build
.bash_profileや.zshrcに設定
export PATH=$PATH:$HOME/.ndenv/bin
eval "$(ndenv init -)"
Node.jsインストール
ndenv install --listインストール可能なnodeの一覧を見て、v0.11.5を入れた。
ndenv install v0.11.5
インストールしたnodeの一覧
ndenv versions
global/local
ndenv global v0.11.5v0.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っぽいかというとこれぐらいそれっぽい