- 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>
83 lines
2.4 KiB
JavaScript
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')); |