web-dev-qa-db-ja.com

NPMスクリプトを順次実行する

私が持っているとしましょう

"scripts": {
    "pre-build": "echo \"Welcome\" && exit 1",
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
    "post_build":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
  },

これらのスクリプトをすべて順次起動させるために実行できるNPMコマンドの種類。プリ/ポストフィックスを使用すると、それらは順番に起動しますが、実行前に親スクリプトが終了するのを待ちません。 async.seriesヘルパー関数でShellコマンドを起動するときにGulpタスクを順番に起動させるにはどうすればよいですか? ?私はこれがGulpでできることを知っていますが、その機能を探求するために今のところNPMに固執したいと思います。助けてくれてありがとう!

95
Rice

これらのスクリプトをnpm runで起動し、二重アンパサンドで連結します&&

npm run pre-build && npm run build_logic && npm run post_build && npm run exit

説明:

  • 順次実行するには、&&(二重アンパーサンド)を使用します。
  • 並列実行には&(シングルアンパサンド)を使用してください。
201
Mobiletainment

あなたはそれらを別のスクリプトに文字列化することができます。 "start": "pre-build && build_logic && post_build && exit"

17
Dave V

@ Mobiletainmentのすばらしい answer に続いて、 npm-run-all を使用してコマンドをもっと短くし、読みやすくすることもできます。あなたの場合:

"scripts": {
    ...
    "build": "run-s pre-build build_logic post_build exit"
}

run-snpm-run-allが提供するショートカットで、指定されたすべてのnpmスクリプトを順次実行します。したがって、-srun-snpm-run-all -sの短いバージョンです)。

16
Or A.

スクリプトが自動的に実行されるように、prepostを前に付けることができます。

"scripts": {
  "prebuild": "echo \"Welcome\" && exit 1",
  "build": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
  "postbuild":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
  "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
}

それからnpm run buildを実行してください

5
Tzach Ovadia