Gulp LiveReload использует устаревший файл CSS

Я использую следующую настройку gulp для компиляции моих sass-документов в один минимизированный css-документ, для минимизации моих js и для перезагрузки браузера при сохранении любого документа в моей IDE (Atom).

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var sass = require('gulp-ruby-sass');
var plumber = require('gulp-plumber');
var livereload = require('gulp-livereload');
var prefix = require('gulp-autoprefixer');


/* ===== HTML TASKS ===== */
gulp.task('html', function(){
   gulp.src('index.html')
   .pipe(livereload());
});


/* ===== SCRIPT TASKS ===== */
//Uglifies
gulp.task('scripts', function(){
   gulp.src('js/*.js')
   .pipe(plumber())
   .pipe(uglify())
   .pipe(gulp.dest('js/minjs'));
});

/* ===== STYLE TASKS ===== */
//compiling and compressing scss files
gulp.task('styles', function () {
  return sass('scss/**/*.scss', { style: 'compressed' })
    .on('error', sass.logError)
    .pipe(gulp.dest('css'))
    .pipe(livereload());
});


/* ===== WATCH ===== */
//watches JS and SCSS
gulp.task('watch', function(){

   livereload.listen();

   gulp.watch('index.html', ['html']);
   gulp.watch('js/*.js', ['scripts']);
   gulp.watch('scss/*', ['styles']);
});

/* ===== DEFAULT ===== */
gulp.task('default', ['scripts', 'styles', 'watch']);

Когда я редактирую один из моих файлов sass, мой браузер Chrome автоматически обновляет мою страницу localhost (MAMP). Но когда я сохраняю, например, мою страницу index.html в IDE или обновляю страницу в браузере, Chrome использует старую версию моего скомпилированного файла CSS и не отображает текущие изменения.

Это почему? И как мне это исправить?

1 ответ

Если проблема здесь фактически такая же, как у меня, то есть состояние гонки, поможет следующее:

...
/* ===== STYLE TASKS ===== */
//compiling and compressing scss files
gulp.task('styles', function () {
  return sass('scss/**/*.scss', { style: 'compressed' })
    .on('error', sass.logError)
    .pipe(gulp.dest('css'))
    .on('end', function() {
        livereload.reload()
    });
});
...

Или, если вы используете Gulp 4, возможно, вы могли бы изменить задачу 'watch' следующим образом (не проверено!):

...
gulp.watch('index.html', gulp.series('html', function(){
    liverelaod.reload();
}));
...

или же

gulp.task('reload', function() {
    livereload.reload();
});

...

gulp.task('watch', function() {
    livereload.listen();
    ...
    gulp.watch('index.html', gulp.series('html', 'reload'));
    ...
});
Другие вопросы по тегам