40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
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;
|