oliverbooth.dev/Gulpfile.js

65 lines
2.0 KiB
JavaScript
Raw Normal View History

2024-02-26 00:43:57 +00:00
const gulp = require("gulp");
const fs = require("fs");
2024-02-26 00:43:57 +00:00
const sass = require('gulp-sass')(require("sass"));
const cleanCSS = require("gulp-clean-css");
const rename = require("gulp-rename");
const ts = require("gulp-typescript");
const terser = require("gulp-terser");
const webpack = require("webpack-stream");
const path = require("path");
const named = require("vinyl-named");
2023-08-04 11:45:10 +00:00
2024-02-26 00:43:57 +00:00
const srcDir = "src";
const destDir = "OliverBooth/wwwroot";
2023-08-04 11:45:10 +00:00
function compileSCSS() {
2023-08-04 11:55:16 +00:00
return gulp.src(`${srcDir}/scss/**/*.scss`)
2024-02-26 00:43:57 +00:00
.pipe(sass().on("error", sass.logError))
.pipe(cleanCSS({compatibility: "ie11"}))
.pipe(rename({suffix: ".min"}))
2023-08-04 11:55:16 +00:00
.pipe(gulp.dest(`${destDir}/css`));
}
function compileTS() {
2023-08-10 13:34:01 +00:00
return gulp.src(`${srcDir}/ts/**/*.ts`)
.pipe(ts("tsconfig.json"))
2023-08-04 11:55:16 +00:00
.pipe(terser())
.pipe(gulp.dest(`tmp/js`));
2023-08-10 13:34:01 +00:00
}
function bundleJS(done) {
const tasks = fs.readdirSync("tmp/js", {withFileTypes: true})
.filter(dirent => dirent.isDirectory())
.map(d => bundleDir(d.name));
return gulp.parallel(...tasks)(done);
function bundleDir(directory) {
return () => gulp.src(`tmp/js/${directory}/${directory}.js`)
.pipe(webpack({mode: "production", output: {filename: `${directory}.min.js`}}))
.pipe(gulp.dest(`${destDir}/js`));
}
2023-08-04 11:45:10 +00:00
}
2023-08-08 00:20:11 +00:00
function copyJS() {
return gulp.src(`${srcDir}/ts/**/*.js`)
2024-02-26 00:43:57 +00:00
.pipe(rename({suffix: ".min"}))
2023-08-08 00:20:11 +00:00
.pipe(gulp.dest(`${destDir}/js`));
}
function copyCSS() {
return gulp.src(`${srcDir}/scss/**/*.css`)
2024-02-26 00:43:57 +00:00
.pipe(rename({suffix: ".min"}))
2023-08-08 00:20:11 +00:00
.pipe(gulp.dest(`${destDir}/css`));
}
2023-08-06 15:05:44 +00:00
function copyImages() {
return gulp.src(`${srcDir}/img/**/*.*`)
.pipe(gulp.dest(`${destDir}/img`));
}
exports.assets = copyImages;
exports.styles = gulp.parallel(compileSCSS, copyCSS);
exports.scripts = gulp.parallel(copyJS, gulp.series(compileTS, bundleJS));
exports.default = gulp.parallel(exports.styles, exports.scripts, exports.assets);