BrowserSync: перезагружать HTML при изменении

Я использую Gulp + BrowserSync и пытаюсь перезагрузить свой веб-сайт разработки, когда в мои файлы HTML вносятся изменения, но я не могу заставить его работать.

Я не получаю никаких ошибок в командной строке, моя страница, кажется, перезагружается, но сделанные мной изменения не отображаются в браузере, если я не выйду из задачи gulp и не запущу ее снова.

Это моя текущая установка:

var gulp = require('gulp');
var browserify = require('browserify');
var swig = require('gulp-swig');
var browserSync = require('browser-sync');
var reload = browserSync.reload;

gulp.task('serve', function () {
  browserSync({
    server: {
      baseDir: './Build'
    }
  });
});

gulp.task('templates', function() {
  return gulp.src('./src/*.html')
    .pipe(swig())
    .pipe(gulp.dest('./Build'))
    .pipe(reload({stream: true}))
});

// Default task
gulp.task('default', ['serve', 'templates', 'sass', 'js'], function() {
  gulp.watch('./src/*.html', ['templates']);
  gulp.watch(['./src/scss/*.scss', './src/scss/**/*.scss'], ['sass']);
  gulp.watch('./src/js/*.js', ['js']);
});

Любая помощь в этом приветствуется. Заранее спасибо!


person realph    schedule 01.04.2015    source источник


Ответы (1)


Проблема в этой настройке, кажется, swig. Когда вы проверяете файлы в ./Build, они не изменились, поэтому браузер загружает файлы правильно. Но swig не получает изменений. Отключение функции кэширования swig должно решить эту проблему:

gulp.task('templates', function() {
  return gulp.src('./src/*.html')
    .pipe(swig({
      defaults: { cache: false }
    }))
    .pipe(gulp.dest('./Build'))
    .pipe(reload({stream: true}));
});
person naeramarth7    schedule 10.04.2015
comment
Это убивало меня. Установка кеша на false работает. Спасибо. - person user1464317; 10.09.2015