CodeAbode/gulpfile.js

127 lines
2.8 KiB
JavaScript
Raw Permalink Normal View History

2024-06-02 20:32:07 +02:00
// based on https://gist.github.com/torgeir/8507130
// Load plugins
let gulp = require("gulp"),
autoprefixer = require("gulp-autoprefixer"),
csso = require("gulp-csso"),
uglify = require("gulp-uglify"),
htmlmin = require("gulp-html-minimizer"),
clean = require("gulp-clean"),
purgecss = require("gulp-purgecss"),
connect = require("gulp-connect");
// Styles
gulp.task("styles", function () {
return gulp
.src("./css/*.css")
.pipe(
purgecss({
content: ["index.html", "js/*.js"],
})
)
.pipe(autoprefixer())
.pipe(csso())
.pipe(gulp.dest("./dist/css"))
.pipe(connect.reload());
});
// Scripts
gulp.task("scripts", function () {
return gulp
.src("./js/*.js")
.pipe(uglify())
.pipe(gulp.dest("./dist/js"))
.pipe(connect.reload());
});
// Images
gulp.task("images", function () {
return gulp
2024-06-07 23:12:30 +02:00
.src(["./images/**/*"], { removeBOM: false })
2024-06-02 20:32:07 +02:00
.pipe(gulp.dest("./dist/images"))
.pipe(connect.reload());
});
2024-06-02 21:35:24 +02:00
// Fonts
gulp.task("fonts", function () {
return gulp
2024-06-07 23:12:30 +02:00
.src(["./fonts/**/*"], { removeBOM: false })
2024-06-02 21:35:24 +02:00
.pipe(gulp.dest("./dist/fonts"))
.pipe(connect.reload());
});
2024-06-07 23:12:30 +02:00
// Other useless content
2024-06-03 23:45:58 +02:00
gulp.task("other", function () {
return gulp
2024-06-07 23:12:30 +02:00
.src(["./other/**/*"], { removeBOM: false })
2024-06-03 23:45:58 +02:00
.pipe(gulp.dest("./dist/other"))
.pipe(connect.reload());
});
2024-06-02 20:32:07 +02:00
gulp.task("html", function () {
return gulp
.src("./*.html")
2024-06-02 20:32:07 +02:00
.pipe(
htmlmin({
collapseWhitespace: true,
removeComments: true,
minifyCSS: true,
minifyJS: true,
removeAttributeQuotes: true,
removeRedundantAttributes: true,
removeOptionalTags: true,
removeStyleLinkTypeAttributes: true,
removeScriptTypeAttributes: true,
})
)
.pipe(gulp.dest("./dist"))
.pipe(connect.reload());
});
// Clean
gulp.task("clean", function () {
return gulp
.src(["dist/css", "dist/js", "dist/images", "dist/*.html", "dist/fonts"], {
read: false,
allowEmpty: true,
})
2024-06-02 20:32:07 +02:00
.pipe(clean());
});
// Default task
gulp.task(
"default",
gulp.series("clean", async function minifyAll() {
2024-06-07 23:12:30 +02:00
return gulp.parallel(
"styles",
"scripts",
"images",
"html",
"fonts",
"other"
)();
2024-06-02 20:32:07 +02:00
})
);
// Connect server
gulp.task("connect", function () {
// Listen on port 8080
connect.server({
root: "dist",
port: 8080,
livereload: true,
});
});
// Watch
gulp.task("watch", function () {
gulp.watch("./css/*.css", gulp.series("styles"));
gulp.watch("./js/*.js", gulp.series("scripts"));
gulp.watch("./images/**/*", gulp.series("images"));
gulp.watch("./*.html", gulp.series("html"));
2024-06-02 21:35:24 +02:00
gulp.watch("./fonts/**/*", gulp.series("fonts"));
2024-06-07 23:12:30 +02:00
gulp.watch("./other/**/*", gulp.series("other"));
2024-06-02 20:32:07 +02:00
});
gulp.task("dev", gulp.series("default", gulp.parallel("connect", "watch")));