const gulp = require('gulp'), useref = require('gulp-useref'), gulpif = require('gulp-if'), uglify = require('gulp-uglify'), sass = require('gulp-sass'), cleanCSS = require('gulp-clean-css'), htmlmin = require('gulp-htmlmin'), rename = require("gulp-rename"), concat = require("gulp-concat"), browserSync = require('browser-sync').create(); gulp.task('copy', async function() { gulp.src('./node_modules/bootstrap/dist/js/bootstrap.js') .pipe(gulp.dest('./js/')); gulp.src('./node_modules/jquery/dist/jquery.min.js') .pipe(gulp.dest('./js/')); gulp.src('./node_modules/@fullcalendar/core/main.js') .pipe(rename('fullcalendar.js')) .pipe(gulp.dest('./js/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/core/main.css') .pipe(rename('fullcalendar.css')) .pipe(gulp.dest('./css/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/google-calendar/main.js') .pipe(rename('fullcalendar-google.js')) .pipe(gulp.dest('./js/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/daygrid/main.js') .pipe(rename('./js/fullcalendar-daygrid.js')) .pipe(gulp.dest('./js/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/daygrid/main.css') .pipe(rename('fullcalendar-daygrid.css')) .pipe(gulp.dest('./css/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/timegrid/main.js') .pipe(rename('fullcalendar-timegrid.js')) .pipe(gulp.dest('./js/', { overwrite:true } )); gulp.src('./node_modules/@fullcalendar/timegrid/main.css') .pipe(rename('fullcalendar-timegrid.css')) .pipe(gulp.dest('./css/', { overwrite:true } )); gulp.src('./node_modules/moment/min/moment.min.js') .pipe(gulp.dest('./js/')); gulp.src('./node_modules/waypoints/lib/noframework.waypoints.js') .pipe(rename('waypoints.js')) .pipe(gulp.dest('./js/')); gulp.src('./node_modules/waypoints/lib/shortcuts/inview.js') .pipe(rename('waypoints-inview.js')) .pipe(gulp.dest('./js/')); console.log("files 📄 from npm pkgs "); }); gulp.task('build', async function() { gulp.src('index.html') .pipe(useref()) .pipe(gulpif('*.js', uglify())) .pipe(gulpif('*.css', cleanCSS({level: {1: {specialComments: 0}}}))) .pipe(gulp.dest('./app/')); console.log("Assets built 🔧 for app/ "); }); gulp.task('htmlmin', () => { return gulp.src('./app/index.html') .pipe(htmlmin({ collapseWhitespace: true, removeComments:true })) .pipe(gulp.dest('./app/index.min.html')); }); function mixin() { return gulp.src('./css/_scss/**/*.scss') .pipe(sass().on('error',sass.logError)) .pipe(gulp.dest('./css/')) .pipe(browserSync.stream()); } function run() { browserSync.init({ server: { baseDir: "./", index: "/index.html" } }); gulp.watch('./css/_scss/*.scss', mixin); gulp.watch('./css/**/*.css').on('change', browserSync.reload); gulp.watch('./*.html').on('change',browserSync.reload); gulp.watch('./js/**/*.js').on('change', browserSync.reload); } exports.mixin = mixin; exports.run = run;