Files
Photography/gulpfile.mjs
Kroonk 5434298c25 Initial commit: Photography portfolio based on rampatra/photography
- Jekyll-based photography portfolio template
- Added Brain.md (project knowledge base) and Skill.md (skill commands)
- Configured remote to Kroonk/Photography.git
- Added .claude/ to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 13:14:44 +02:00

83 lines
2.4 KiB
JavaScript

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'));