Search code examples
javascriptgulpbrowser-syncgulp-watchgulp-sass

There's an issue with my browserSync, it isn't reloading my sass file


I'm trying to get my gulpfile to watch reload when I change my sass file. Currently I have to close gulp cmd in terminal and refresh for it to work.

What am I missing here?

Thanks in advance!

let gulp = require('gulp');
let sass = require('gulp-sass');
let browserSync = require('browser-sync').create();

gulp.task('styles', function() {
    gulp.src("app/scss/*.scss")
        .pipe(sass())
        .pipe(gulp.dest("app/css"))
        .pipe(browserSync.reload({stream: true}));
});

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

    gulp.watch('app/scss/*.scss', ['styles']);
    gulp.watch('app/**/*.html').on('change', browserSync.reload)
});

gulp.task('default', ['styles', 'serve']);


Solution

  • If you using the Gulp 4. Used this code:

    let gulp = require('gulp');
    let sass = require('gulp-sass');
    let browserSync = require('browser-sync');
    
    gulp.task('styles', function() {
      return gulp.src('app/scss/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('app/css')) //removed semicolon
        .pipe(browserSync.reload({ stream:true }));
    });
    
    // watch Sass files for changes, run the Sass preprocessor with the 'sass' task and reload
    gulp.task('serve', gulp.series('styles', function() {
      browserSync({
        server: {
          baseDir: './app'
        }
      });
    
      gulp.watch('app/scss/*.scss', gulp.series('styles'));
      gulp.watch('app/css/*.css', browserSync.reload);
      gulp.watch('app/**/*.html', browserSync.reload);
    }));
    

    If you using old Gulp:

    let gulp = require("gulp");
    let sass = require("gulp-sass");
    let browserSync = require("browser-sync").create();
    let runSequence = require('run-sequence'); // npm install run-sequence --save-dev
    
    gulp.task("styles", function () {
        gulp
          .src("app/scss/*.scss")
          .pipe(sass())
          .pipe(gulp.dest('app/css'))
    });
    
    // Static server
    gulp.task("serve", function () {
        browserSync.init({
            server: {
                baseDir: "./"
            }
        });
    });
    
    
    //watch for files changes
    gulp.task('watch', ['styles', 'serve'], function () {
        // sass files changes
        gulp.watch('app/scss/*.scss', ['styles']);
    
        // CSS files changes
        gulp.watch('app/css/*.css', browserSync.reload);
    
        // html files changes
        ulp.watch('app/**/*.html', browserSync.reload)
    });
    
    // The default task (called when you run 'gulp' from cli)
    gulp.task('default', function (callback) {
        runSequence(['styles', 'serve', 'watch'],
          callback
        )
    })