2016-08-26 24 views
38

en ı Bu senaryoların hepsi sırayla başlatmak izin çalıştırabilirsiniz ne NPM komutRunning NPM komut sırayla

"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\"" 
    }, 

var diyelim. Önceden/sonrası sabitleme kullandığımda sırayla başlarlar ancak üst komut dosyasının yürütülmeden önce bitmesini beklemezler. Tek çözüm şu gibi: How do I get Gulp tasks to fire sequentially when firing shell commands in an async.series helper function?? Bunun Gulp ile yapılabileceğini biliyorum, ancak yeteneklerini keşfetmek için şimdilik UÖM'e bağlı kalmak istiyorum. Herhangi bir yardım için teşekkürler!

cevap

89

"start": "pre-build && build_logic && post_build && exit" çift işareti && ile NPM çalıştırmak yoluyla bu komut çağırmak ve bunları zincir:

npm run pre-build && npm run build_logic && npm run post_build && npm run exit 

Açıklaması: ardışık uygulamalar için

  • kullanımlar && (çift ve işareti). Paralel yürütme için & (tek ve işareti) kullanın.
+1

Bu, en iyi şekilde çalışır, çünkü her komutun, previos tamamlanana kadar, OP'de talep edilen şekilde yürütülmemesi koşuluyla çalışır. Teşekkürler – Rice

13

Sadece başka bir komut dosyasına dizilmiş olabilirsiniz.

+0

Birbirini bitirmesi için beklemelerini isterim, bunlar ardışık olarak patlayacaktır ama beklemeyecektir. – Rice

+0

Bunun bir düğüm/npm sorunu olduğunu düşünmüyorum. Pencerelerde teknik olarak çalıştırdığınız 'start' komutu * bitmiştir. Dahili yöntem de tamamlanana kadar 'start' uygulamasını açık kalmaya zorlamak için' start' ile '/ wait' işaretini kullanın. – dvlsg

+0

Bunu test etmek için 'start notepad' komut komut isteminden çalıştırın ve sonra orijinal komut istemine bakın. Başka bir komut yazabilmelisiniz. Ardından 'start/wait notepad' komutunu çalıştırın. Notepad penceresi açıkken 'start' komutu 'çalışmaya' devam etmelidir (tekrar komut istemine bakın). Sonra bir kez not defterini kapatırsanız, 'start' bitecektir. – dvlsg