2024-02-26 00:43:57 +00:00
|
|
|
const gulp = require("gulp");
|
2024-02-27 14:49:29 +00:00
|
|
|
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");
|
2024-02-26 00:45:00 +00:00
|
|
|
const path = require("path");
|
|
|
|
const named = require("vinyl-named");
|
2023-08-04 12:45:10 +01:00
|
|
|
|
2024-02-26 00:43:57 +00:00
|
|
|
const srcDir = "src";
|
|
|
|
const destDir = "OliverBooth/wwwroot";
|
2023-08-04 12:45:10 +01:00
|
|
|
|
|
|
|
function compileSCSS() {
|
2023-08-04 12:55:16 +01: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 12:55:16 +01:00
|
|
|
.pipe(gulp.dest(`${destDir}/css`));
|
|
|
|
}
|
|
|
|
|
|
|
|
function compileTS() {
|
2023-08-10 14:34:01 +01:00
|
|
|
return gulp.src(`${srcDir}/ts/**/*.ts`)
|
2023-08-10 04:56:12 +01:00
|
|
|
.pipe(ts("tsconfig.json"))
|
2023-08-04 12:55:16 +01:00
|
|
|
.pipe(terser())
|
2023-08-10 04:56:12 +01:00
|
|
|
.pipe(gulp.dest(`tmp/js`));
|
2023-08-10 14:34:01 +01:00
|
|
|
}
|
2023-08-10 04:56:12 +01:00
|
|
|
|
2024-02-27 14:49:29 +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 12:45:10 +01:00
|
|
|
}
|
|
|
|
|
2023-08-08 01:20:11 +01:00
|
|
|
function copyJS() {
|
|
|
|
return gulp.src(`${srcDir}/ts/**/*.js`)
|
2024-02-26 00:43:57 +00:00
|
|
|
.pipe(rename({suffix: ".min"}))
|
2023-08-08 01:20:11 +01: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 01:20:11 +01:00
|
|
|
.pipe(gulp.dest(`${destDir}/css`));
|
|
|
|
}
|
|
|
|
|
2023-08-06 16:05:44 +01:00
|
|
|
function copyImages() {
|
|
|
|
return gulp.src(`${srcDir}/img/**/*.*`)
|
|
|
|
.pipe(gulp.dest(`${destDir}/img`));
|
|
|
|
}
|
|
|
|
|
2023-08-04 12:45:10 +01:00
|
|
|
exports.default = compileSCSS;
|
2023-08-10 14:34:01 +01:00
|
|
|
exports.default = gulp.parallel(compileSCSS, gulp.series(compileTS, bundleJS), copyCSS, copyJS, copyImages);
|