2013-09-08 4 views
6

Sto solo imparando Grunt. Userò la bussola per il ritmo verticale e la generazione di sprite di immagini e autoprefixer per il prefisso degli stili css3.grunt-autoprefixer loop infinitamente quando si usa grunt-contrib-watch

Ecco il mio Gruntfile.js.

module.exports = function(grunt) { 
    var globalConfig = { 
    sassDir: 'sass', 
    cssDir: 'css' 
    }; 

    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 
    // Project configuration. 
    grunt.initConfig({ 
    globalConfig: globalConfig, 
    pkg: grunt.file.readJSON('package.json'), 
    compass: { 
     dev: { 
     options: { 
      sassDir: '<%= globalConfig.sassDir %>', 
      cssDir: '<%= globalConfig.cssDir %>' 
     } 
     } 
    }, 
    autoprefixer: { 
     dev: { 
     options: { 
      browsers: ['last 2 versions'] 
     }, 
     src: '<%= globalConfig.cssDir %>/style.css', 
     dest: '<%= globalConfig.cssDir %>/style.css' 
     } 
    }, 
    watch: { 
     compass: { 
     files: ['<%= globalConfig.sassDir %>/**/*.scss'], 
     tasks: ['compass:dev'], 
     }, 
     autoprefixer: { 
     files: ['<%= globalConfig.cssDir %>/style.css'], 
     tasks: ['autoprefixer:dev'] 
     }, 
     livereload: { 
     options: { livereload: true }, 
     files: ['<%= globalConfig.cssDir %>/style.css'] 
     } 
    } 
    }); 

    // Default task(s) that will be run by invoking 'grunt' w/o args 
    grunt.registerTask('styles:dev', ['compass', 'autoprefixer']); 
    grunt.registerTask('default', ['styles:dev', 'watch']); 
}; 

Ma ogni volta che lo eseguo

grunt 

Tutto funziona come previsto, tranne che grugnito-contrib-Watch chiede grugnito-autoprefixer all'infinito.

Sto appena iniziando a imparare Grunt. E 'probabilmente una configurazione sbagliata sul mio Gruntfile.js

Spero che mi potrebbe aiutare qui.

risposta

10

modificare la configurazione compito di:

watch: { 
    compass: { 
    files: ['<%= globalConfig.sassDir %>/**/*.scss'], 
    tasks: ['compass:dev', 'autoprefixer:dev'] 
    }, 
    livereload: { 
    options: { livereload: true }, 
    files: ['<%= globalConfig.cssDir %>/style.css'] 
    } 
} 

In sostanza, grugnito-contrib-orologio verrà eseguito compiti ogni volta che viene aggiornato un file, e poiché i file di origine e di destinazione sono gli stessi che lo trasforma in un ciclo infinito . Basta eseguire la correzione automatica quando il tuo compito sulla bussola ha costruito il tuo css. Spero che questo ti aiuti. :-)

+1

sì, è stato risolto. grazie mille. – chanHXC

+0

se non ti dispiace, potresti condividere alcuni suggerimenti sulle migliori pratiche con la configurazione di gruntfile.js? :) grazie. – chanHXC

+0

Una volta che ci si abitua alla configurazione delle attività, troverete un carico di plugin diversi che possono automatizzare tutti i tipi di lavori di sviluppo comuni. Non ci sono molte best practice a cui posso riferirti in questo caso, hai già impostato una configurazione per le directory comuni, usato il trucco matchdep ecc. Ho scoperto che è tutto abbastanza semplice funzionare, a condizione che tu leggi la documentazione per ogni plugin. Sicuramente curiosando tra i repository npm per i nuovi plugin, c'è molto da scoprire :-) – Ben