import gulp from 'gulp'; import imageResize from 'gulp-image-resize'; import dartSass from 'sass'; import gulpSass from 'gulp-sass'; import uglify from 'gulp-uglify'; import rename from 'gulp-rename'; import filter from 'gulp-filter'; import path from 'path'; import del from 'del'; const sass = gulpSass(dartSass); const cssSourceGlob = './assets/sass/**/*.scss'; const cssOutputDir = './assets/css'; const generatedCssFiles = [ `${cssOutputDir}/custom.min.css`, `${cssOutputDir}/main.min.css`, `${cssOutputDir}/noscript.min.css` ]; gulp.task('delete', function () { return del(['images/*.*']); }); gulp.task('resize-images', function () { return gulp.src('images/*.*') .pipe(imageResize({ width: 1024, imageMagick: true })) .pipe(gulp.dest('images/fulls')) .pipe(imageResize({ width: 512, imageMagick: true })) .pipe(gulp.dest('images/thumbs')); }); // clear previously generated css gulp.task('clean-css', function () { return del(generatedCssFiles); }); // compile scss to css gulp.task('sass', gulp.series('clean-css', function compileSass() { return gulp.src(cssSourceGlob) // Target all .scss files .pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError)) .pipe(rename(function (path) { path.basename += '.min'; // Append .min to the output filename })) .pipe(gulp.dest(cssOutputDir)); // Output to the CSS directory })); // watch changes in scss files and run sass task gulp.task('sass:watch', function () { gulp.watch('./assets/sass/**/*.scss', gulp.series('sass')); }); // minify js gulp.task('minify-js', function () { return gulp.src('./assets/js/**/*.js') .pipe(filter(function (file) { const filePath = file.path; const basename = path.basename(filePath, '.js'); // Skip files that are already minified return !basename.endsWith('.min'); })) .pipe(uglify()) .pipe(rename(function (path) { path.basename += '.min'; path.extname = '.js'; })) .pipe(gulp.dest('./assets/js')); }); // build task gulp.task('build', gulp.series('sass', 'minify-js')); // resize images gulp.task('resize', gulp.series('delete', 'resize-images')); // default task gulp.task('default', gulp.series('build', 'resize'));