2016 10 24

nodeのバージョンをプロジェクトごとに指定する (nvm + direnv)

久しぶりの案件の更新! $ gulp
$ npm run !!
… あーそっかそっか、nodeのバージョンが… ってことが増えてきて、非常にストレスになってきました。
えーっとこのプロジェクトで使ってたのってどのバージョンだっけ…
つーか、毎回 $ nvm use *** するのめんどくさい…

前提

使用ツール

nvm

https://github.com/creationix/nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

とか。

direnv

direnvのインストールにはGo言語の環境が必要であるため、$ brew install go などでインストール。
https://github.com/direnv/direnv http://qiita.com/kompiro/items/5fc46089247a56243a62

$ git clone https://github.com/direnv/direnv
$ cd direnv
$ make install
$ # or symlink ./direnv into the $PATH

自分はbashなので、下記をbashrcに追記。 eval "$(direnv hook bash)"

.nvmrc を作成

プロジェクトルートに、 .nvmrc ファイルを作成。
使用するバージョン名だけが書いてあるファイルになる。

5.12.0

direnvにnvm用の記載

# nodejs
source ~/.nvm/nvm.sh
nvm use $(cat .nvmrc)

エラーが出たら

direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

と言われたら、その通りに、 sh $ direnv allow してあげる

快適node管理

まだ使い出したばっかりだけど、かなり快適。
direnvは、dockerの環境変数用に言われるがまま入れてただけだったけど、かなり便利。
他にも使いみちいろいろありそうなので、使っていきたい。