LoginSignup
7
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-19

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

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

7
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4