500記事目ですが、そんなこと関係ないです。普通にいつもどおり書きます。
詳しいドキュメントがみつからなかったのがアレですが、少し調査した結果を報告いたします。
調べた経緯
最近、fish shellをメインに使っています。そこでふと「npm-scriptsの&&はfish仕様にしないとなのか?」と思い、調べてみました。
どうやらfishで実行されていないらしい
fishとbashはかなり書き方に違いがあります。たとえばbashでは次のように書きます。
command1 && command2
これがfishではこうなります。
command1; and command2
&&でつなぐとエラーになります。
ではnpm-scriptsではどうなのでしょうか?
"scripts": { "hoge": "echo hoge && echo fuga" }
bashでは当然hoge fuga
と表示されます。fish環境下で実行した場合は、なんとhoge fuga
となります。もしnpm-scriptsが現在のシェルにて実行されている場合、このスクリプトはエラーが出るはずです。
ここで問題となるのは「どのシェルで実行されているのか」です。
調査してみる
ここを元にいくつかスクリプトを書いて実行してみました。
"scripts": { "survey1": "echo ~$USER", "survey2": "echo ~ghost", "survey3": "arr=(a b c); echo ${arr[0]}" }
これらをテストしてみたところ、どうやらzshでもfishでもなくbashのようです。僕の知らない他のシェルの可能性もありますが、とりあえずbashに近いシェルであることは間違いないようです。