最近のフロントエンドはpackage.json
があるようなディレクトリの中で作業していることが多い。
そして、npmモジュールをモリモリ使っている。
npmモジュールの中にはターミナルから叩けるコマンドを用意しているものがけっこうある。
グローバルにインストールしてどこからでも叩けるようにしたりもするんだけど、バージョンの問題もあって、プロジェクトローカルで管理したいという時もあったりする。
npm install
するとモジュールにコマンドが用意されていた場合/path/to/project/node_modules/.bin
にシンボリックリンクが張られる。
だけど、毎度パスを指定してコマンドを叩くのはしんどい。
./node_modules/.bin/command
../node_modules/.bin/command
/path/to/project/node_modules/.bin/command
npm
はローカルコマンドにアクセスするための便利な機能を提供している。
npm bin
これを叩くと該当するプロジェクトのコマンドへのパスが返ってくる。
なので、
$(npm bin)/command
でパスを解決してコマンドを叩くことができる。
これでも少し面倒な感じがある。
そこでパスを通す方法やらalias設定する方法やら試したが色々問題があった。
最終的に簡単なshellのfunctionで解決することにした。
npmbin(){[ $# -ne 0 ] && $(npm bin)/$*}
の一行を.bashrc
やら.zshrc
やらに追加すると
npmbin command
でコマンドが叩けるようになる。
設定すら面倒だという人のためにnpmモジュールを作ってみた。
npm i npmbin -g
これで、いつでもどこでもコマンドを叩けるぞ!
npmbin command
ちなみになにも渡さないと、コマンドのパスと一覧を表示するようにしてみた。
npmbin
/path/to/project/node_modules/.bin
command1
command2
command3
以上宣伝でした〜。m(_ _)m