Npm, süreçler arasındaki karmaşık ilişkileri yönetmenin en iyi aracı olduğuna inanmıyorum.
spawn
kullanarak, birlikte işlemlerin başlatılmasını ve öldürülmesini yönetmek için düğümün child_process
modülünü kullanan bir düğüm komut dosyası oluşturarak çok daha iyi bir şekilde sunulabilirdiniz.
( bash kabuğunu varsayar) gibi
Sen npm komut yapısı olabilir .. o ve her zaman doğrudan, kullanışlı cevap vermek için çalışmakla ruhunda söyledikten sonra:
scripts:{
runBoth: "npm runA & npm runB", // run tasks A and B in parallel
runA: "taskA & TASKA_PID=$!", // run task A and capture its PID into $TASKA_PID
runB: "taskB && kill $TASKA_PID" // run task B and if it completes successfully, kill task A using its saved PID
}
yalnızca 'sihirli' burada olduğunu:
- t ile arka planda bir komut çalıştırdığınızda o
bash
kabuğu (&
sonuna eklediğinizde ne olur), $!
'u kullanarak PID'yi keşfedebilirsiniz, ancak komutun hemen çalıştırılmasından hemen sonra. (Açıklamasına için Advanced Bash-Scripting Guide: Chapter 9. Another Look at Variables - 9.1. Internal Variables bakınız.)
- TASKB şart arama process.exit (0) failure başarı ya da process.exit (-1)
&&
testi doğru işlenir, böylece. (Daha fazla bilgi için this answer bakınız.) npm-run-all
paket aradığınızı olabilir
Bu Bash hilesi için teşekkürler! bu mükemmel. Cevabınız aradığım şey. – franleplant
runB'nin runA'dan $ TASK_PID'ye erişimi olduğunu sanmıyorum. – nathancahill
Benim için çalışmıyor. – prongs