2016-11-18 9 views
0

npmでスクリプトを連鎖させるのに問題があります。私はwebpackを使用してビルドスクリプトを実行し、その後にbashファイルを実行したいと思います。どちらのコマンドも動作していますが、連鎖している場合は動作しません。私はnpm run build-staging実行する場合webpackをnpmでビルドした後にbashスクリプトを実行する方法

"scripts": { 
    "build-staging": "webpack --config webpack-staging.config.js -p || ./build-staging.sh" 
    }, 

それはWebPACKのビルドを実行し、正常に動作します:私のpackage.jsonで

私は、これは持っています。しかし、私のbuild-staing.shは実行されません。手動でこのbashファイルを実行すると、実行されているので、問題が連鎖していて、Webpackスクリプトが完了した後に実行されます。私はパイプ||はこれを行う必要がありますが、幸運を見てきました。

パイプが間違っているのですか、またはwebpackが一度終了したスクリプトを「強制終了」しないため、bashスクリプトは実行されませんか?私はCrtl + Cを使用しない限り、これ以上のコマンドを実行することができません。おそらく問題でしょうか?

ありがとうございます!

答えて

5

||は、前のコマンドが失敗した場合(ゼロ以外の状態を返した場合)にプログラムを実行するためにのみ使用されます。

$ bash -c "exit 0" || echo "This won't run" 
$ bash -c "exit 1" || echo "This will run" 
This will run 
$ 

あなたは2つ目のスクリプトにかかわらず、実行する場合は、あなたが

"scripts": { 
    "build-staging": "webpack --config webpack-staging.config.js -p ; ./build-staging.sh" 
    }, 

を使用することができますまたはあなたが唯一のそれは(可能性が高いです)成功を実行する場合、あなたは&&の代わりに使用することができます||。ご使用のプラットフォームでは;がサポートされていない場合があります。コメントで述べたように、;はWindowsでは動作しませんが、&&は動作します。

+1

これは、 ';'がウィンドウでは機能しないという事実を反映するように編集する必要があります。 '&&'はそうです。 – RyanZim

+0

うん、 '||'が私の問題だった。 '&&'それを修正しました。 – IamFace

関連する問題