Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gulp: How to use Browsersync, Sourcemaps, Autoprefixer and CSS Cleaner together?

See below. The problem I'm having with my current code is that Sourcemaps aren't getting injected via Browsersync. Am I missing something here or doing it the wrong way?

For reference: https://www.browsersync.io/docs/gulp/#gulp-sass-maps

// requirements
var gulp         = require('gulp');
var sass         = require('gulp-ruby-sass');
var browserSync  = require('browser-sync').create();
var prefix       = require('gulp-autoprefixer');
var rename       = require('gulp-rename');
var sourcemaps   = require('gulp-sourcemaps');
var cssclean     = require('gulp-clean-css');

// create sass tasks
gulp.task('sass', function() {
  return sass('assets/scss/style.scss', {sourcemap: true, style: 'compact'})
    .on('error', function (err) {
        console.error('Error!', err.message);
    })
    .pipe(rename({suffix: '.min'}))
    .pipe(cssclean())
    .pipe(prefix("last 2 versions", "> 1%", "ie 8", "Android 2", "Firefox ESR"))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('assets/styles'))
    .pipe(browserSync.stream({match: '**/*.css'}))
});

gulp.task('serve', ['sass'], function() {

  browserSync.init({
    proxy: "localhost/portfolio2014",
    open:false
  });

  gulp.watch("assets/scss/**/*.scss", ['sass']);
  gulp.watch(["assets/styles/*.css", "site/**/*", "content/**/*", "assets/javascript/*.js"]).on('change', browserSync.reload);
});

// default task (just run gulp)
gulp.task('default', ['serve'] );
like image 513
gburning Avatar asked Mar 16 '16 20:03

gburning


1 Answers

Do you have to use gulp-ruby-sass? The gulpfile.js below is adding sourcemaps with gulp-sass and updating the browser when saving .scss files with sourcemaps.

        var gulp = require('gulp');
        var sass = require('gulp-sass');
        var browserSync = require('browser-sync').create();
        var prefix = require('gulp-autoprefixer');
        var rename = require('gulp-rename');
        var sourcemaps = require('gulp-sourcemaps');
        var cssclean = require('gulp-clean-css');

        // create sass tasks
        gulp.task('sass', function () {
            return gulp.src('assets/scss/test.scss')
                .pipe(sourcemaps.init())
                .pipe(sass())
                .pipe(rename({ suffix: '.min' }))
                .pipe(cssclean())
                .pipe(prefix("last 2 versions", "> 1%", "ie 8", "Android 2", "Firefox ESR"))
                .pipe(sourcemaps.write(''))
                .pipe(gulp.dest('assets/styles'))
                .pipe(browserSync.stream({ match: '**/*.css' }))
                .on('error', function (err) {
                    console.error('Error!', err.message);
                });
        });

        gulp.task('serve', ['sass'], function () {

            browserSync.init({
                proxy: "localhost/portfolio2014",
                open: false
            });

            gulp.watch("assets/scss/**/*.scss", ['sass']);
            gulp.watch(["assets/styles/*.css", "assets/javascript/*.js"]).on('change', browserSync.reload);
        });

        // default task (just run gulp)
        gulp.task('default', ['serve']);
like image 136
Barryman9000 Avatar answered Sep 27 '22 18:09

Barryman9000