Сегодня я перешел на Gulp 4, но у меня не получается заставить работать функцию часов.
// Watch
gulp.task('watch', gulp.series('typescript', 'sass', 'browserSync', function(){
gulp.watch('./app/styles/**/*.scss', gulp.series('sass'));
gulp.watch('app/scripts/**/*.ts', gulp.series('typescript'));
gulp.watch('./app/*.html', browserSync.reload);
}));
typescript
, sass
, browserSync
запустится, но watch не реагирует на изменения файла.
У меня просто была такая же проблема. На самом деле у вас нет ссылки на инициализированный browserSync
внутри вашей задачи watch
глотком. Вместо того, чтобы ваше browserSync.init
функции в отдельной browserSync
задачи глотка, переместить его внутри watch
задачи, и она должна работать. Надеюсь это поможет!
Пример:
gulp.task('watch', gulp.series(function (){
browserSync.init({
proxy:"http://localhost:8888",
injectChanges: true,
plugins: ["bs-html-injector?files[]=*.html"]
});
var html = gulp.watch('development/index.html');
html.on('change', function(path, stats) {
console.log('you changed the html');
browserSync.notify("Compiling, please wait!");
browserSync.reload("index.html");
})
var js = gulp.watch('development/**/*.js');
js.on('change', function(path, stats) {
console.log('you changed the js');
browserSync.notify("Compiling, please wait!");
browserSync.reload();
})
var css = gulp.watch('development/**/*.css');
css.on('change', function(path, stats) {
console.log('you changed the css');
browserSync.notify("Injecting CSS!");
browserSync.reload("*.css");
})
}));
Измените gulp.watch('app/scripts/**/*.ts', gulp.series('typescript'));
к абсолютному gulp.watch('./app/scripts/**/*.ts', gulp.series('typescript'));
Также я обычно придерживаюсь этого синтаксиса для каждой задачи.
var watcher = gulp.watch('js/**/*.js', gulp.parallel('concat', 'uglify'));
watcher.on('change', function(path, stats) {
console.log('File ' + path + ' was changed');
});
cb
в примере APIfunction css(cb) { // body omitted cb();
? }