// Require npm-modules var del = require('del'), gulp = require('gulp'), sass = require('gulp-sass'), autoprefixer = require('gulp-autoprefixer'), cssnano = require('gulp-cssnano'), livereload = require('gulp-livereload'), notify = require('gulp-notify'), plumber = require('gulp-plumber'), rename = require('gulp-rename'); var sassConfig = { inputDirectory: '_source/sass/**/*.scss', outputDirectory: '_dist/css', options: { outputStyle: 'expanded' }, autoprefixer: ['last 2 version', 'IE 11', 'Firefox ESR', 'ios 10', 'android 4.4'] } // Tasks // clean the folders gulp.task('clean', function(cb) { return del([sassConfig.outputDirectory + '/*'], cb) }); // watcher gulp.task('watch', function() { gulp.watch(sassConfig.inputDirectory, ['sass']); livereload.listen() }); // render SASS gulp.task('sass', function() {var onError = function(err) { notify.onError({ title: "Gulp", subtitle: "Failure!", message: "Error: <%= error.message %>", sound: "Submarine" })(err); this.emit('end'); }; return gulp .src(sassConfig.inputDirectory) .pipe(plumber({errorHandler: onError})) .pipe(sass(sassConfig.options).on('error', sass.logError)) .pipe(autoprefixer(sassConfig.autoprefixer)) .pipe(gulp.dest(sassConfig.outputDirectory)) .pipe(cssnano()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest(sassConfig.outputDirectory)) .pipe(notify({ message: 'SASS rendered' })) .pipe(livereload()); }); gulp.task('sass-only', function() { return gulp .src(sassConfig.inputDirectory) .pipe(sass(sassConfig.options).on('error', sass.logError)) .pipe(gulp.dest(sassConfig.outputDirectory)); }); // Default: First 'clean', then the rest gulp.task('default', ['clean'], function() { gulp.start('sass'); });