Edited at

cdを改造して、11文字速くコマンドを打つ! (フロントエンド向け)

More than 1 year has passed since last update.

gulpやらeslintbrowser-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

あと、これセキュリティーの穴になるので、サーバでは使っちゃダメなやつです。念のため。