Files
DisCal-Discord-Bot/gulpfile.js
T
NovaFox161 e8d013a709 Get Typescript working on web + some extras
This commit gets typescript compiling to browser-safe javascript using webpack.
Also fix some issues regarding handling status endpoints, missed debug and error reports, and cleaning some other things up.

Last change involves getting maven to automatically compile typescript and styles for the website without needing to do it in cli before the package
2020-03-07 21:24:11 -06:00

143 lines
3.7 KiB
JavaScript

let gulp = require('gulp');
let sass = require('gulp-sass');
let header = require('gulp-header');
let cleanCSS = require('gulp-clean-css');
let rename = require("gulp-rename");
let autoprefixer = require('gulp-autoprefixer');
let del = require("del");
let pkg = require('./package.json');
let browserSync = require('browser-sync').create();
// Set the banner content
let banner = ['/*!\n',
' */\n',
'\n'
].join('');
// Copy third party libraries from /node_modules into /vendor
gulp.task('vendor', gulp.series(function(done) {
// Bootstrap
gulp.src([
'./node_modules/bootstrap/dist/**/*',
'!./node_modules/bootstrap/dist/css/bootstrap-grid*',
'!./node_modules/bootstrap/dist/css/bootstrap-reboot*'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/bootstrap'));
// jQuery
gulp.src([
'./node_modules/jquery/dist/*',
'!./node_modules/jquery/dist/core.js'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/jquery'));
// jQuery Easing
gulp.src([
'./node_modules/jquery.easing/*.js'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/jquery-easing'));
//ChartJS
gulp.src([
'./node_modules/chart.js/dist/*.js'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/chart.js'));
//DataTables
gulp.src([
'./node_modules/datatables.net/js/*.js',
'./node_modules/datatables.net-bs4/js/*.js',
'./node_modules/datatables.net-bs4/css/*.css'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/datatables'));
// Font Awesome 5
gulp.src([
'./node_modules/@fortawesome/**/*'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor'));
// Simple Line Icons
gulp.src([
'./node_modules/simple-line-icons/fonts/**'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/simple-line-icons/fonts'));
gulp.src([
'./node_modules/simple-line-icons/css/**'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/simple-line-icons/css'));
done();
}));
gulp.task('clean:all', gulp.series(function () {
return del([
"./web/build",
"./web/src/main/resources/static/assets/js/**",
"./web/src/main/resources/static/assets/css/**"
])
}));
gulp.task('clean:build', gulp.series(function () {
return del([
"./web/build"
])
}));
// Compile SCSS
gulp.task('css:compile', gulp.series(function () {
return gulp.src('./web/src/main/less/**/*.scss')
.pipe(sass.sync({
outputStyle: 'expanded'
}).on('error', sass.logError))
.pipe(autoprefixer({
overrideBrowserslist: ['last 2 versions'],
cascade: false
}))
.pipe(header(banner, {
pkg: pkg
}))
.pipe(gulp.dest('./web/src/main/resources/static/assets/css'))
}));
// Minify CSS
gulp.task('css:minify', gulp.series(['css:compile'], function () {
return gulp.src([
'./web/src/main/resources/static/assets/css/*.css',
'!./web/src/main/resources/static/assets/css/*.min.css'
])
.pipe(cleanCSS())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest('./web/src/main/resources/static/assets/css'));
}));
// CSS
gulp.task('css', gulp.series(['css:compile', 'css:minify']));
// Default task
gulp.task('default', gulp.series(['clean:all', 'css', 'vendor', 'clean:build']));
gulp.task('build', gulp.series(['clean:all', 'css', 'clean:build']));
// Configure the browserSync task
gulp.task('browserSync', gulp.series(function() {
browserSync.init({
server: {
baseDir: "./web/src/main/resources/"
}
});
}));
// Dev task
gulp.task('dev', gulp.series(['css', 'browserSync'], function () {
gulp.watch('./web/src/main/less/**/*.scss').on('change', gulp.series['css']);
gulp.watch('/web/src/main/resources/templates/*.html').on('change', function () {
browserSync.reload();
});
gulp.watch('/web/src/main/resources/static/assets/js/*.js').on('change', function () {
browserSync.reload();
});
}));