通常、 npm で実行コマンドをインストールするときは、以下のようにグローバルオプションを つけてインストールすることが多いと思う。
bash
1
$ npm install -g gulpだけど、これではプロジェクトごとに違うバージョンを使いたい!などの場合にこまる。 そこで direnv 。
これを使うとあるディレクトリでは、「〜〜する」というのが簡単に出来る。
導入方法
まず、 direnv はgoを使うので、goをインストールしておく。
bash
1
$ brew install go --cross-compile-common以下を .zshenv に記載。
bash
1
2
3
4
5
6
7
8
9
10
# direnv
if which go > /dev/null; then
if [ ! -d $HOME/.direnv ]; then
git clone https://github.com/zimbatm/direnv ~/.direnv
pushd ~/.direnv
make install
popd
fi
eval "$(direnv hook zsh)"
fiあとはシェルを再起動したらインストール完了。
使い方
プロジェクトのディレクトリでローカルにnpmのコマンドをインストールする。
bash
1
$ npm install gulpローカルにインストールした場合、通常以下の場所に実行コマンドが配置される。
bash
1
2
$ ls node_modules/.bin
bower cake coffee gulp nodemon nodewebkit wiredepなので、この場所をPATHに追加すればよい。 direnv では、以下のようにする。
bash
1
$ direnv edit .これで、エディタで .envrc というファイルが開くので、以下の行を記載。
bash
1
export PATH=$PWD/node_modules/.bin:$PATHこれでOK。こうすると、このディレクトリに来た場合は自動的にPATHに追加され、 反対にディレクトリから出た場合、自動的にPATHから削除される。
bash
1
2
3
$ cd ~/.ghq/github.com/yukimemi/hogehoge
direnv: loading .envrc
direnv: export ~PATHbash
1
2
$ cd
direnv: unloadingこれで、プロジェクトローカルなコマンドをかんたんに実行出来る。