// 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 Config = { inputDir: '_source', outputDir: '_dist' } var SassConfig = { inputDir: '_source/sass/**/*.scss', outputDir: '_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([Config.outputDir], cb) }); // render SASS gulp.task('sass', function() {var onError = function(err) { notify.onError({ title: 'gulp', subtitle: 'Error!', message: '❌ <%= error.message %>', sound: 'Submarine' })(err); this.emit('end'); }; return gulp .src(SassConfig.inputDir) .pipe(plumber({errorHandler: onError})) .pipe(sass(SassConfig.options).on('error', sass.logError)) .pipe(autoprefixer(SassConfig.autoprefixer)) .pipe(gulp.dest(SassConfig.outputDir)) .pipe(cssnano()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest(SassConfig.outputDir)) .pipe(notify({ title: 'gulp', subtitle: 'Success!', message: 'SASS compiled ✅', timeout: '2' })) .pipe(livereload()); }); gulp.task('sass-only', function() { return gulp .src(SassConfig.inputDir) .pipe(sass(SassConfig.options).on('error', sass.logError)) .pipe(gulp.dest(SassConfig.outputDir)); }); // Copy those other files gulp.task('copy', function() { gulp.src([Config.inputDir + '/*.*']) .pipe(gulp.dest(Config.outputDir)) .pipe(livereload()) gulp.src([Config.inputDir + '/inc/**/*']) .pipe(gulp.dest(Config.outputDir + '/inc')) .pipe(livereload()) gulp.src([Config.inputDir + '/js/**/*.*']) .pipe(gulp.dest(Config.outputDir + '/js')) .pipe(livereload()) }) gulp.task('watch', function() { livereload.listen() // Watch .scss files gulp.watch(SassConfig.inputDir, ['sass']); // Watch php files gulp.watch(Config.inputDir + '/*.php', ['copy']) gulp.watch(Config.inputDir + '/inc/*.php', ['copy']); }); // Default: First 'clean', then the rest gulp.task('default', ['clean'], function() { gulp.start('sass', 'copy'); });