理系学生日記

おまえはいつまで学生気分なのか

git-bash 配下の npm run で cmd.exe が使われる…だと…

npm script が楽やなと思って、便利系ツールの起動 (docker-compose.yaml がリポジトリに散らばったコンテナ群の一斉起動とか) を npm script に寄せているのですが、npm run したらエラーが出るといるメンバの溜息を聞いて調べてみるとおもしろいことが分かりました。

git bash を使っている Windows での開発者が npm run すると、git-bash 配下の bash ではなく、cmd.exe が立ち上がる。

マジですか。おどろいた。

The actual shell your script is run within is platform dependent. By default, on Unix-like systems it is the /bin/sh command, on Windows it is the cmd.exe. https://docs.npmjs.com/cli/run-script.html

ただ、npm には script-shell という設定があり、これによって npm run で起動するシェルを制御できる。

The shell to use for scripts run with the npm run command. npm Documentation

というわけで、git-bash 上の bash を起動したければ、

npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"

とでもしておけば良いでしょう。