2014/07/02 Wed
通常、 npm で実行コマンドをインストールするときは、以下のようにグローバルオプションを つけてインストールすることが多いと思う。
$ npm install -g gulp
だけど、これではプロジェクトごとに違うバージョンを使いたい!などの場合にこまる。 そこで direnv 。
これを使うとあるディレクトリでは、「〜〜する」というのが簡単に出来る。
まず、 direnv はgoを使うので、goをインストールしておく。
$ brew install go --cross-compile-common
以下を .zshenv
に記載。
# 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のコマンドをインストールする。
$ npm install gulp
ローカルにインストールした場合、通常以下の場所に実行コマンドが配置される。
$ ls node_modules/.bin
bower cake coffee gulp nodemon nodewebkit wiredep
なので、この場所をPATHに追加すればよい。 direnv では、以下のようにする。
$ direnv edit .
これで、エディタで .envrc
というファイルが開くので、以下の行を記載。
export PATH=$PWD/node_modules/.bin:$PATH
これでOK。こうすると、このディレクトリに来た場合は自動的にPATHに追加され、 反対にディレクトリから出た場合、自動的にPATHから削除される。
$ cd ~/.ghq/github.com/yukimemi/hogehoge
direnv: loading .envrc
direnv: export ~PATH
$ cd
direnv: unloading
これで、プロジェクトローカルなコマンドをかんたんに実行出来る。
direnvで解決するGOPATHの3つの問題点 - None is None is None