gulp
やらeslint
にbrowser-sync
やら、日々20か30種類のコマンドをnpm
からインストールして使っている気がします。でも、これらのツールはプロジェクトごとにインストールされるので、グローバルにインストールされる普通のUNIXコマンドと同じ扱いはできません。グローバルにはインストールするべきでないし、毎度npm scriptsを経由する↓のもまどろっこしいです。
$ npm run eslint -- index.js
次のようにも書けますが、どちらにしろ 11文字も余計に打たないといけない。
$ $(npm bin)/eslint index.js
実は、補完が効く分、素直にパスを打った方がまだ速いですが、それでも n
tab
.
b
tab
で 少なくとも5ストローク余計です。
$ node_modules/.bin/eslint index.js
なんとか、これだけ↓で動くようにできないものか。
$ eslint index.js
エイリアスで解決する
そうだ。cd
を改造すればいいじゃないか。
# .bashrc
DEFAULT_PATH=$PATH;
add_local_node_modules_to_path(){
NODE_MODULES='./node_modules/.bin';
if [ -d $NODE_MODULES ]; then
PATH=$DEFAULT_PATH:$NODE_MODULES;
else
PATH=$DEFAULT_PATH;
fi
}
cd () {
builtin cd "$@";
add_local_node_modules_to_path;
}
add_local_node_modules_to_path;
これで、cd
で移動するたびに$PATH
を変えることができました。
めでたし、めでたし。
(ただし、改造していることを忘れないように。to 自分)
こちらも忘れずに
もし、普段.bashrc
を使っていない場合、.bash_profile
の最後にも一行入れる必要があるかもしれません。
# .bash_profile
test -r ~/.bashrc && . ~/.bashrc
サーバではNG
あと、これセキュリティーの穴になるので、サーバでは使っちゃダメなやつです。念のため。