var gulp = require('gulp'), sass = require('gulp-sass'), rename = require('gulp-rename'), cssmin = require('gulp-minify-css'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), cache = require('gulp-cached'), prefix = require('gulp-autoprefixer'), browserSync = require('browser-sync'), reload = browserSync.reload, size = require('gulp-size'), imagemin = require('gulp-imagemin'), minifyHTML = require('gulp-minify-html'), pngquant = require('imagemin-pngquant'), plumber = require('gulp-plumber'), deploy = require('gulp-gh-pages'), notify = require('gulp-notify'), sassLint = require('gulp-sass-lint'), twig = require('gulp-twig'); gulp.task('lib-scss', function() { var onError = function(err) { notify.onError({ title: "Gulp", subtitle: "Failure!", message: "Error: <%= error.message %>", sound: "Beep" })(err); this.emit('end'); }; return gulp.src('source/scss/**/*.scss') .pipe(plumber({errorHandler: onError})) .pipe(sass()) .pipe(size({ gzip: true, showFiles: true })) .pipe(prefix()) .pipe(gulp.dest('source/css')) .pipe(reload({stream:true})) .pipe(cssmin()) .pipe(size({ gzip: true, showFiles: true })) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest('source/css')) .pipe(gulp.dest('site/css')); }); gulp.task('site-scss', function() { var onError = function(err) { notify.onError({ title: "Gulp", subtitle: "Failure!", message: "Error: <%= error.message %>", sound: "Beep" })(err); this.emit('end'); }; return gulp.src('site/scss/**/*.scss') .pipe(plumber({errorHandler: onError})) .pipe(sass()) .pipe(size({ gzip: true, showFiles: true })) .pipe(prefix()) .pipe(gulp.dest('site/css')) .pipe(reload({stream:true})) .pipe(cssmin()) .pipe(size({ gzip: true, showFiles: true })) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest('site/css')); }); gulp.task('browser-sync', function() { browserSync({ server: { baseDir: "site" } }); }); gulp.task('deploy', function () { return gulp.src('site/**/*') .pipe(deploy()); }); gulp.task('sass-lint', function () { gulp.src('scss/**/*.scss') .pipe(sassLint()) .pipe(sassLint.format()) .pipe(sassLint.failOnError()); }); gulp.task('twig', function () { gulp.src('site/**/*.twig', {base: './'}) .pipe(twig()) .pipe(gulp.dest('./')); }); gulp.task('watch', function() { gulp.watch('source/scss/**/*.scss', ['lib-scss', 'site-scss', 'sass-lint']); gulp.watch('source/scss/**/*.html', ['minify-html']); gulp.watch('site/**/*.twig', ['twig']); }); gulp.task('jshint', function() { gulp.src('js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); gulp.task('default', ['browser-sync', 'twig', 'lib-scss', 'site-scss', 'watch']);