oliverbooth.dev/Gulpfile.js

55 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-08-04 11:45:10 +00:00
const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
2023-08-04 11:45:10 +00:00
const cleanCSS = require('gulp-clean-css');
const rename = require('gulp-rename');
2023-08-04 11:55:16 +00:00
const ts = require('gulp-typescript');
const terser = require('gulp-terser');
const webpack = require('webpack-stream');
2023-08-04 11:45:10 +00:00
2023-08-04 11:55:16 +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`)
2023-08-04 11:45:10 +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
}
2023-08-10 13:34:01 +00:00
function bundleJS() {
return gulp.src('tmp/js/*.js')
.pipe(webpack({ mode: 'production', output: { filename: 'app.min.js' } }))
2023-08-04 11:55:16 +00:00
.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`)
.pipe(rename({ suffix: '.min' }))
.pipe(gulp.dest(`${destDir}/js`));
}
function copyCSS() {
return gulp.src(`${srcDir}/scss/**/*.css`)
.pipe(rename({ suffix: '.min' }))
.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);