Выполнение сценариев 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 можно запустить, чтобы все эти сценарии запускались последовательно. Когда я использую pre/post fixing, они запускаются последовательно, но они не ждут завершения родительского script перед выполнением. Я предполагаю, что единственное решение похоже: Как мне получить задачи Gulp для последовательного запуска при запуске команд оболочки в вспомогательной функции async.series?? Я знаю, что это можно сделать с помощью Gulp, но я хотел бы придерживаться NPM, чтобы изучить его возможности. Спасибо за любую помощь!
Ответы
Ответ 1
Вызовите эти скрипты с помощью npm run и соедините их с двойным амперсандом &&
:
npm run pre-build && npm run build_logic && npm run post_build && npm run exit
Пояснение:
- Для последовательного выполнения используйте
&&
(двойной амперсанд).
- Для параллельного выполнения используйте
&
(одиночный амперсанд).
Ответ 2
Вы можете просто вставить их в другой script. "start": "pre-build && build_logic && post_build && exit"
Ответ 3
После отличного ответа @Mobiletainment вы также можете использовать npm-run-all, чтобы сделать команду намного короче и более читабельной. В твоем случае:
"scripts": {
...
"build": "run-s pre-build build_logic post_build exit"
}
run-s
- это ярлык npm-run-all
, который последовательно запускает все заданные npm -s сценарии, следовательно, -s
(run-s
- более короткая версия npm-run-all -s
),
Ответ 4
Вы можете использовать префиксы 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