const gulp = require('gulp'); const sass = require('gulp-sass')(require('sass')); const coffee = require('gulp-coffee'); const sourcemaps = require('gulp-sourcemaps'); const plumber = require('gulp-plumber'); // Compile .sass files to compressed CSS function compileSass() { return gulp.src('assets/styles/**/*.sass') .pipe(plumber()) .pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError)) .pipe(gulp.dest('public/css')); } // Compile .coffee files to JavaScript with source maps function compileCoffee() { return gulp.src('assets/scripts/*.coffee', { sourcemaps: true }) .pipe(plumber()) .pipe(coffee({ bare: true })) .pipe(gulp.dest('public/js', { sourcemaps: '.' })); } // Watch files for changes function watchFiles() { gulp.watch('assets/styles/**/*.sass', compileSass); gulp.watch('assets/scripts/**/*.coffee', compileCoffee); } // Define default task exports.default = gulp.series( gulp.parallel(compileSass, compileCoffee), watchFiles ); // one-time build exports.build = gulp.parallel(compileSass, compileCoffee); // start builds with file watching exports.watch = watchFiles;