2014-12-25 16 views
57

Ich habe so etwas wie dies:Wie gulp-Watch mehrere Dateien?

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

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

}); 

aber es funktioniert nicht, weil es zwei Verzeichnisse Uhren, die sass und die Layouts Verzeichnis für Änderungen.

Wie mache ich es funktioniert, so dass Schluck beobachtet alles, was in diesen Verzeichnissen passiert?

+0

Die Syntax Ihrer Schluckuhr ist falsch. Siehe https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpwatchglob-opts-tasks – Heikki

Antwort

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

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

}); 

sass/**/*.scss und layouts/**/*.css wird jedes Verzeichnis und Unterverzeichnis für alle Änderungen an .scss und .css Dateien sehen, die sich ändern. Falls Sie Fragen zu jede Datei macht das letzte Bit *.*

52

Sie können eine Uhr wie folgt schreiben.

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']); 
}); 

Auf diese Weise können Sie so viele Aufgaben einstellen können, wie Sie über den Dateipfad wollen, was Sie mit dem Namen der Aufgabe, gefolgt sehen möchten Sie erstellt. Dann können Sie Ihre Standard wie folgt schreiben:

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

Wenn Sie wollen einfach für verschiedene Dateiänderungen beobachten, dann nur zuschauen Dateien glob wie *.css in Ihrer Aufgabe verwenden.

+4

Es funktioniert nicht für mich. Nur die erste Uhr funktioniert. Die zweite ist nicht aktiv, denke ich. – blablabla

+1

Ich weiß nicht, was ich sagen soll, aber es funktioniert für mich. Ich benutze es die ganze Zeit. –

+1

löste ich es mit Schluckuhr und Schluckuhr-Sequenz. – blablabla

8

Ein Problem ändern mögen, die für mehrere Personen (mich eingeschlossen) entstanden ist, dass außerhalb der Aufgabe, einen gulp.filter Zugabe verursacht gulp.watch zum Scheitern verurteilt, nachdem der erste Durchgang. Also, wenn Sie etwas davon haben:

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

Dann müssen Sie es ändern zu:

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

Der Filter hat in der Task-Funktion enthalten sein. Hoffe das hilft jemandem.