2014-12-25 21 views
57

ho qualcosa di simile a questo:Come eseguire Gulp-Watch su più file?

gulp.task('default', ['css', 'browser-sync'] , function() { 

    gulp.watch(['sass/**/*.scss', 'layouts/*.css'], function() { 
     gulp.run('css'); 
    }); 

}); 

ma non funziona, perché guarda due directory, il sass e la directory layout per le modifiche.

Come faccio a farlo funzionare, in modo che gulp guardi tutto ciò che accade all'interno di quelle directory?

+0

La sintassi dell'orologio gulp è errata. Vedi https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpwatchglob-opts-tasks – Heikki

risposta

94
gulp.task('default', ['css', 'browser-sync'] , function() { 

    gulp.watch(['sass/**/*.scss', 'layouts/**/*.css'], ['css']); 

}); 

sass/**/*.scss e layouts/**/*.css guarderanno ogni directory e sottodirectory per eventuali modifiche al .scss e .css file che cambiano. Se si vuole cambiare la situazione a qualsiasi file rendere l'ultimo bit *.*

52

È possibile scrivere un orologio come questo.

gulp.task('watch', function() { 
    gulp.watch('path/to/file', ['gulp task name for css/scss']); 
    gulp.watch('path/to/file', ['gulp task name for js']); 
}); 

In questo modo è possibile impostare come molte attività che si desidera tramite il percorso del file di ciò che si desidera vedere seguito dal nome del l'attività creata. Poi si può scrivere il difetto in questo modo:

gulp.task('default', ['gulp task name for css/scss', 'gulp task name for js']); 

Se si desidera guardare semplicemente per le varie modifiche apportate ai file, poi basta guardare i file utilizzando glob come *.css nel vostro compito.

+4

Non funziona per me. Funziona solo il primo orologio. Il secondo non è attivo, immagino. – blablabla

+1

Non so cosa dire, ma funziona per me. Io lo uso per tutto il tempo. –

+1

L'ho risolto usando gulp-watch e gulp-watch-sequence. – blablabla

8

Un problema che è sorto per più persone (me compreso) è che l'aggiunta di un gulp.filter al di fuori del compito provoca gulp.watch a fallire dopo il primo passaggio. Quindi, se avete qualcosa di simile:

var filter = gulpFilter(['fileToExclude.js']) 
gulp.task('newTask', function(){ ... 

Quindi è necessario modificarla in:

gulp.task('newTask', function(){ 
    var filter = gulpFilter(['fileToExclude.js']) 

Il filtro deve essere incluso nella funzione compito. Spero che aiuti qualcuno.

Problemi correlati