direnv for npm local commands
通常、 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
これで、プロジェクトローカルなコマンドをかんたんに実行出来る。
参考:
Thanks for reading! Read other posts?