Katakanlah saya punya
"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\""
},
Apa perintah NPM yang bisa saya jalankan untuk membiarkan semua skrip ini diluncurkan secara berurutan. Ketika saya menggunakan pra / post fixing mereka diluncurkan secara berurutan tetapi mereka tidak menunggu skrip induk selesai sebelum dijalankan. Saya mengasumsikan satu-satunya solusi adalah seperti: Bagaimana cara saya mendapatkan tugas Gulp untuk memecat secara berurutan ketika menjalankan perintah shell dalam fungsi helper async.series? ? Saya tahu ini bisa dilakukan dengan Gulp tetapi saya ingin tetap menggunakan NPM untuk saat ini untuk mengeksplorasi kemampuannya. Terima kasih atas bantuannya!
javascript
node.js
npm
cmd
Nasi
sumber
sumber
Start
perintah, Anda harus dapat menggunakan/wait
parameter (Mulai aplikasi dan tunggu sampai diakhiri)Jawaban:
Aktifkan skrip ini melalui npm run dan rangkai dengan double ampersand
&&
:Penjelasan:
&&
(amper ganda) untuk eksekusi berurutan.&
(single ampersand) untuk eksekusi paralel.sumber
&&
dievaluasi oleh shell dan tidak berfungsi di Windows.&&
sintaksnya adalah konstruk UNIX. Ini akan berperilaku salah pada mesin Window, dengan konsekuensi berpotensi melanggar untuk proses membangun Anda.npm-run-all
dokumen: "kadang-kadang kita gunakan&
untuk menjalankan beberapa perintah secara paralel, tetapi Windowscmd.exe
... tidak mendukung [operator ini]." Jadi sepertinya Anda benar - setidaknya dari riset singkat saya,&&
operator tampaknya sangat kompatibel lintas platform.Mengikuti jawaban hebat @ Mobiletainment , Anda juga dapat menggunakan npm-run-all untuk membuat perintah lebih pendek dan lebih mudah dibaca. Dalam kasus Anda:
run-s
adalah pintasan yangnpm-run-all
menyediakan, yang menjalankan semua skrip npm yang diberikan secara berurutan, karenanya-s
(run-s
adalah versi yang lebih pendeknpm-run-all -s
).sumber
Anda bisa merangkai mereka ke skrip lain.
"start": "pre-build && build_logic && post_build && exit"
sumber
start
perintah Anda menjalankan di windows teknis adalah selesai. Gunakan/wait
bendera denganstart
untuk memaksastart
aplikasi tetap terbuka sampai metode internal juga selesai.start notepad
dari prompt perintah, lalu lihat prompt perintah asli. Anda harus bisa mengetikkan perintah lain. Kemudian jalankanstart /wait notepad
. Thestart
perintah harus terus "run" sementara jendela notepad Anda terbuka (lihat perintah lagi prompt). Maka setelah Anda menutup notepad,start
akan selesai.Anda dapat awalan script Anda
pre
danpost
sehingga mereka akan mengeksekusi secara otomatis:lalu lari
npm run build
sumber
Anda dapat mencoba:
sumber
Anda dapat menggunakan npm-run-all untuk menggabungkan beberapa perintah dalam banyak cara berbeda
Misalnya, jika Anda memiliki skrip berikut di
package.json
:Anda dapat menjalankan semuanya secara berurutan seperti ini:
Lihat pertanyaan ini untuk cara menjalankan beberapa perintah npm secara paralel
sumber