2013-09-26 41 views
0

我有多個子任務的呼嚕聲手錶任務看LESS,CoffeeScript的等如何在更新多個文件時防止多次實時重新加載grunt?

watch: 
     jade: 
      files: ['<%= yeoman.app %>/*.jade'] 
      tasks: ['jade'] 
     less: 
      files: ['<%= yeoman.css %>/*.less'] 
      tasks: ['less'] 
     coffee: 
      files: ['<%= yeoman.scripts %>/*.coffee'] 
      tasks: ['coffee'] 
     edge: 
      files: ['<%= yeoman.comp %>/*'] 
      tasks: ['edge'] 
     livereload: 
      options: 
       livereload: true 
      files: [ 
       '<%= yeoman.app %>/*.html' 
       '<%= yeoman.css %>/*.css' 
       '<%= yeoman.scripts %>/*.js' 
      ] 

我也有我寫的是負責處理一組第三方文件得到經常更新的自定義任務。任務更新第三方javascript和html文件中的幾個路徑,然後將它們重新分配到主項目中的適當位置。

問題是,當這些文件中的每一個寫入到它們的目的地,相關的grunt任務運行時,每一個都會觸發一個實時重新加載。因此,如果寫入4個文件,則會發生4次單獨的重新加載。

是否有任何方法來配置監視任務,將所有實時重裝事件合併到一個單獨的「重新加載」事件中?

回答

1

我還沒有親自嘗試過這個,但你可能會發現tiny-lr值得研究。如果你正在編寫自定義任務,那麼你可以張貼到微小-LR服務器的請求一次重新加載多個文件(你可以通過像咕嚕殼可能做到這一點):

# notify a single change 
curl http://localhost:35729/changed?files=style.css 

# notify using a longer path 
curl http://localhost:35729/changed?files=js/app.js 

# notify multiple changes, comma or space delimited 
curl http://localhost:35729/changed?files=index.html,style.css,docs/docco.css 

我不是肯定,如果標準配置確實需要你對自己的東西,但它值得一試:

grunt.loadNpmTasks('tiny-lr'); 
grunt.initConfig({ 
    watch: { 
    reload: { 
     files: ['**/*.html', '**/*.js', '**/*.css', '**/*.{png,jpg}'], 
     tasks: 'tinylr-reload' 
    } 
    } 
}); 

grunt.registerTask('reload', ['tinylr-start', 'watch']); 

還有grunt-newer它只能運行基於已更改的文件的任務。我將這與我的手錶設置一起使用,並節省了大量時間,因爲每次只保存一個文件時不需要處理每個文件。

希望這會有所幫助。

相關問題