nodeのバージョンをプロジェクトごとに指定する (nvm + direnv)
久しぶりの案件の更新!
$ gulp
!
$ npm run
!!
… あーそっかそっか、nodeのバージョンが… ってことが増えてきて、非常にストレスになってきました。
えーっとこのプロジェクトで使ってたのってどのバージョンだっけ…
つーか、毎回 $ nvm use ***
するのめんどくさい…
前提
- nodejsのバージョン管理には、nvmを使用。
- コマンド実行して、エラー出てからバージョン確認して、
$ nvm use **
して… というのは嫌なので、あまり意識せずに切り替えてほしい。
使用ツール
- nvm
- direnv
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の環境変数用に言われるがまま入れてただけだったけど、かなり便利。
他にも使いみちいろいろありそうなので、使っていきたい。