按顺序运行 NPM 脚本

2022-08-30 01:09:29

假设我有

"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来探索它的功能。感谢您的任何帮助!


答案 1

通过 npm 运行调用这些脚本,并用双与号 &&

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

解释:

  • 使用 &&(双与号)按顺序执行。
  • 使用 &(单个与号)进行并行执行。

答案 2

根据@Mobiletainment的精彩答案,您还可以使用 npm-run-all 使命令更短,可读性更强。在您的情况下:

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

run-s是提供的快捷方式,它按顺序运行所有给定的 npm 脚本,因此 ( 是 的较短版本)。npm-run-all-srun-snpm-run-all -s