[英]Running NPM scripts sequentially
假設我有
"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 幫助程序 function 中觸發 shell 命令時按順序觸發 Gulp 任務? ? 我知道這可以用 Gulp 來完成,但我想暫時堅持使用 NPM 來探索它的功能。 謝謝你的幫助!
通過調用運行NPM與雙符號鏈他們這些腳本&&
:
npm run pre-build && npm run build_logic && npm run post_build && npm run exit
說明:
&&
(雙與號)進行順序執行。&
(單&
)進行並行執行。遵循@Mobiletainment 的精彩回答,您還可以使用npm-run-all使命令更短且更具可讀性。 在你的情況下:
"scripts": {
...
"build": "run-s pre-build build_logic post_build exit"
}
run-s
是npm-run-all
提供的快捷方式,它按順序運行所有給定的 npm-scripts,因此-s
( run-s
是npm-run-all -s
的較短版本)。
您可以在腳本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
您可以將它們串成另一個腳本。 "start": "pre-build && build_logic && post_build && exit"
您可以使用npm-run-all以多種不同方式組合多個命令
例如,如果您的package.json
有以下腳本:
"scripts": {
"clean": "rimraf dist",
"lint": "eslint src",
"build": "babel src -o lib"
}
您可以像這樣按順序運行它們:
$ npm-run-all clean lint build
請參閱此問題以了解如何並行運行多個 npm 命令
你可以試試:
"scripts": {
"clean-dist": "rm -f ./dist/*.js && rm -f ./dist/*.map",
"build": "npm run clean-dist && parcel build ./packages/index.html"
},
如果您需要混合,我將執行以下操作以確保 command_1 首先運行並完成,而 command_2a 和 command_2b 可以並行運行。
"dev": "yarn command_1 && (yarn command_2a & yarn command_2b)"
實際例子:
"dev": "yarn buildPackage && (yarn watchPackageSource & yarn watchExamplePage)"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.