2016-04-13 9 views
1

Ich benutze Schluck Concat und Browserync. Wenn ich gulp starte, startet es browserync und verkettet und lädt alle js-Dateien, die in Modulen gefunden wurden, neu. Das Problem ist, dass es die Verkettung von js-Dateien nur einmal durchführt, also muss ich aufhören, gulp auszuführen und es erneut ausführen, damit ich alle Änderungen sehen kann, die sich in js-Dateien widerspiegeln. Ich sehe nur den Schluck benachrichtigen Task nach dem Stoppen und Neustart Schluck auch. Wie richte ich gulp so ein, dass es immer die js bündelt und kompiliert und dann browersync ausführt?Schluck Concat + Browereryn Neustart

Hier ist meine gulpfile

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var browserSync = require('browser-sync').create(); 
var notify = require('gulp-notify'); 


// default 
gulp.task('default', ['browserSync', 'scripts'], function(){ 
// Reloads the browser whenever HTML or JS files change 
gulp.watch('app/*.html', browserSync.reload); 
gulp.watch('app/modules/**/*.js', browserSync.reload); 
}); 

gulp.task('scripts', function() { 
return gulp.src('app/modules/**/**.js') 
    .pipe(concat('main.js')) 
    .pipe(gulp.dest('app/build/js')) 
    .pipe(notify({ message: 'Scripts in modules have been bundled!' })); 
}); 

//start browsersync 
gulp.task('browserSync', function() { 
browserSync.init({ 
server: { 
    baseDir: 'app' 
}, 
}) 
}) 

Antwort

1

Try this:

// watch 
gulp.task('watch', ['browserSync', 'scripts'], function(){ 
    // Reloads the browser whenever HTML or JS files change 
    gulp.watch('app/*.html', browserSync.reload); 
    gulp.watch('app/modules/**/*.js', ['scripts']); 
}); 

gulp.task('scripts', function() { 
    return gulp.src('app/modules/**/**.js') 
     .pipe(concat('main.js')) 
     .pipe(gulp.dest('app/build/js')) 
     .pipe(notify({ message: 'Scripts in modules have been bundled!' })) 
     .pipe(browserSync.reload({ 
      stream: true 
     })); 
}); 

gulp.task('default', ['watch', 'scripts']); 
+0

Dies funktioniert, obwohl ich ein zusätzliches ')' nach 'stream: true' hinzufügen musste. Aus irgendeinem Grund funktioniert gulp notify jetzt nicht, aber es ist nicht entscheidend. Der Build funktioniert jetzt ohne Neustart, danke! – Mills

+0

Ah. Ich habe eine schließende Klammer am Ende der Benachrichtigungs-Pipe verpasst. Versuchen Sie das hinzuzufügen und sehen Sie, ob das funktioniert. Das sollte es beheben. – timolawl

+0

das funktioniert, danke '' '.pipe (notify ({message: 'Skripte in Modulen wurden gebündelt!'})) .pipe (browserSync.reload ({ stream: true })); '' ' – Mills

0

Ich bin nicht sicher, aber könnten Sie versuchen

gulp.watch('app/modules/**/*.js', ['scripts']);

unter Aufgabe "default" zu setzen

Wie ich verstehe, hat Ihr Schluck Ihre Dateien nicht angesehen und das Skript

P.S. Ich bin kein Experte in Schluck, wenn es nicht klappt, tut mir leid.