Grunt

2013-02-08 16 views
9

ile 2 async görevini yürütüyorum Küçük bir düğüm projesinde çalışıyorum ve coffeescript ve istemci tarafı kodu için daha az kullanıyorum. Geliştirme ortamımı homurdanı kullanarak kurmaya çalışıyorum. Böyle çalışan sunucu için özel hırıltı görev uyguladık: sorudurGrunt

grunt.initConfig 
    watch: 
     coffee: 
      files: ['public/coffee/**/*.coffee'] 
      tasks: ['coffee'] 
     jade: 
      files: ['public/jade/**/*.jade'] 
      tasks: ['jade'] 
     less: 
      files: ['public/less/**/*.less'] 
      tasks: ['less'] 

:

start = require './start' #just a function to start express.js application 
grunt.registerTask 'server', 'Starting server', -> 
    grunt.log.write 'Preparing server to start' 
    done = do @async 
    start (err) -> 
     grunt.log.write "server running at localhost:4000" 

Ben de hırıltı-contrib-izle eklentisi kullanarak "seyretmek" görevi çalıştırmak istediğiniz nasıl Bu iki görevi (izlemek ve sunucu) aynı anda çalıştırmak için? Bir sunucu çalıştırmak ve çalıştırmak istiyorum ve bazı istemci tarafı kodu değiştiğinde her zaman yeniden yüklemek istemiyorum.

cevap

6

Şimdiden teşekkürler. Görevlerinize önek verin ve done = do @async sunucu görevinin içinden kurtulun.

tasks: ['server', 'coffee']

Sen "çalışan boyu" ya da olmamak sunucu görevi için Grunt yapılandırmasında bir seçenek belirtmek istiyoruz. Daha sonra uzun süre koşmanız gerekiyorsa (izleme görevi olmadan) @async numaralı telefonu arayabilirsiniz.

+1

Bu işe yaramazsa Sonuç olarak, asla denetleme görevine geri dönmez. – Griffin

+0

Evet, bitiyor; cevabımda açıkladığım gibi, görevin bitmesine izin veren async() çağrısını kaldırırsınız ve ardından bir seçeneğe bağlı olarak koşullu olarak tekrar eklersiniz. – tbranyen

+3

Kafam karıştı. Sunucunun her zaman uzun süredir olmasını istiyor ve saatin uzun sürmesini istiyor ve her ikisinin de aynı anda tek bir homurdanma çağrısı yapmasını istiyor. Burada elde ettiğin şey bu mu? –

0

Aynı anda hem monitörü hem de sunucuyu gıcırtılı bir görevden başlatamamakla ilgili aynı sorunu yaşıyordum. sorunu çözmek için

, ben grunt connect:preview & sonunda benim Gruntfile

işareti (&) bir arka plan işlemi olarak sunucuyu başlar şeydir içinde hırıltı-exec arka plan işlemi olarak sunucuyu başladı.

,exec: { 
    start_server: { 
    command: 'grunt connect:preview &' 
    } 
} 

Ve sonra bunu yapmak için daha iyi bir yolu olmalı var bu

grunt.registerTask('preview', ['clean:preview', 'template', 'exec', 'watch' ]); 

gibi hırıltı görevi kaydettiği ancak şimdiye kadar düşünebildiğim en iyisidir.

Bu iki paketlerinden birini kullanarak aynı anda iki veya daha fazla görevi çalıştırabilir
+0

gibi görünmüyor Grunt-exec yerine grunt-shell kullanıyorum ve '&' hiçbir etkisi yok gibi görünüyor. –