it-swarm.com.ru

Запуск сценариев 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 можно запустить, чтобы все эти сценарии запускались последовательно. Когда я использую исправление до/после, они запускаются последовательно, но не ожидают завершения родительского сценария перед выполнением. Я предполагаю, что единственное решение выглядит так: Как заставить задачи Gulp запускаться последовательно при запуске команд Shell в вспомогательной функции async.series? ? Я знаю, что это можно сделать с помощью 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, вы также можете использовать npm-run-all , чтобы сделать команду намного короче и более читаемой. В твоем случае:

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

run-s - это ярлык, предоставляемый npm-run-all, который последовательно запускает все указанные npm-скрипты, следовательно, -s (run-s - более короткая версия npm-run-all -s).

16
Or A.

Вы можете использовать префиксы ваших скриптов pre и post, чтобы они выполнялись автоматически:

"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