Files
DisCal-Discord-Bot/gulpfile.js
NovaFox161 0859c71be6 Update several node deps
Fingers crossed this doesn't break the website lol
2021-09-24 15:48:28 -05:00

154 lines
4.4 KiB
JavaScript

let gulp = require('gulp');
let sass = require('gulp-sass')(require('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'));
// FullCalendar
/*
gulp.src([
'./node_modules/fullcalendar/main.min.js',
'./node_modules/fullcalendar/main.min.css'
])
.pipe(gulp.dest('./web/src/main/resources/static/vendor/fullcalendar'))
*/
// 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/gulp",
"./web/src/main/resources/static/assets/js",
"./web/src/main/resources/static/assets/css",
"./web/src/main/resources/static/vendor"
])
}));
gulp.task('clean:build', gulp.series(function () {
return del([
"./web/build/gulp"
])
}));
// 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', 'vendor', 'clean:build']));
// Configure the browserSync task
gulp.task('browserSync', gulp.series(function () {
browserSync.init({
server: {
baseDir: "./web/src/main/html/"
}
});
}));
// 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/html/templates/*.html').on('change', function () {
browserSync.reload();
});
gulp.watch('/web/src/main/resources/static/assets/js/*.js').on('change', function () {
browserSync.reload();
});
}));