123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- "use strict";
- // Load plugins
- const autoprefixer = require("gulp-autoprefixer");
- const browsersync = require("browser-sync").create();
- const cleanCSS = require("gulp-clean-css");
- const del = require("del");
- const gulp = require("gulp");
- const header = require("gulp-header");
- const merge = require("merge-stream");
- const plumber = require("gulp-plumber");
- const rename = require("gulp-rename");
- const sass = require("gulp-sass");
- const uglify = require("gulp-uglify");
- // Load package.json for banner
- const pkg = require('./package.json');
- // Set the banner content
- const banner = ['/*!\n',
- ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n',
- ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n',
- ' * Licensed under <%= pkg.license %> (https://github.com/StartBootstrap/<%= pkg.name %>/blob/master/LICENSE)\n',
- ' */\n',
- '\n'
- ].join('');
- // BrowserSync
- function browserSync(done) {
- browsersync.init({
- server: {
- baseDir: "./"
- },
- port: 3000
- });
- done();
- }
- // BrowserSync reload
- function browserSyncReload(done) {
- browsersync.reload();
- done();
- }
- // Clean vendor
- function clean() {
- return del(["./vendor/"]);
- }
- // Bring third party dependencies from node_modules into vendor directory
- function modules() {
- // Bootstrap JS
- var bootstrapJS = gulp.src('./node_modules/bootstrap/dist/js/*')
- .pipe(gulp.dest('./vendor/bootstrap/js'));
- // Bootstrap SCSS
- var bootstrapSCSS = gulp.src('./node_modules/bootstrap/scss/**/*')
- .pipe(gulp.dest('./vendor/bootstrap/scss'));
- // ChartJS
- var chartJS = gulp.src('./node_modules/chart.js/dist/*.js')
- .pipe(gulp.dest('./vendor/chart.js'));
- // dataTables
- var 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('./vendor/datatables'));
- // Font Awesome
- var fontAwesome = gulp.src('./node_modules/@fortawesome/**/*')
- .pipe(gulp.dest('./vendor'));
- // jQuery Easing
- var jqueryEasing = gulp.src('./node_modules/jquery.easing/*.js')
- .pipe(gulp.dest('./vendor/jquery-easing'));
- // jQuery
- var jquery = gulp.src([
- './node_modules/jquery/dist/*',
- '!./node_modules/jquery/dist/core.js'
- ])
- .pipe(gulp.dest('./vendor/jquery'));
- return merge(bootstrapJS, bootstrapSCSS, chartJS, dataTables, fontAwesome, jquery, jqueryEasing);
- }
- // CSS task
- function css() {
- return gulp
- .src("./scss/**/*.scss")
- .pipe(plumber())
- .pipe(sass({
- outputStyle: "expanded",
- includePaths: "./node_modules",
- }))
- .on("error", sass.logError)
- .pipe(autoprefixer({
- cascade: false
- }))
- .pipe(header(banner, {
- pkg: pkg
- }))
- .pipe(gulp.dest("./css"))
- .pipe(rename({
- suffix: ".min"
- }))
- .pipe(cleanCSS())
- .pipe(gulp.dest("./css"))
- .pipe(browsersync.stream());
- }
- // JS task
- function js() {
- return gulp
- .src([
- './js/*.js',
- '!./js/*.min.js',
- ])
- .pipe(uglify())
- .pipe(header(banner, {
- pkg: pkg
- }))
- .pipe(rename({
- suffix: '.min'
- }))
- .pipe(gulp.dest('./js'))
- .pipe(browsersync.stream());
- }
- // Watch files
- function watchFiles() {
- gulp.watch("./scss/**/*", css);
- gulp.watch(["./js/**/*", "!./js/**/*.min.js"], js);
- gulp.watch("./**/*.html", browserSyncReload);
- }
- // Define complex tasks
- const vendor = gulp.series(clean, modules);
- const build = gulp.series(vendor, gulp.parallel(css, js));
- const watch = gulp.series(build, gulp.parallel(watchFiles, browserSync));
- // Export tasks
- exports.css = css;
- exports.js = js;
- exports.clean = clean;
- exports.vendor = vendor;
- exports.build = build;
- exports.watch = watch;
- exports.default = build;
|