var gulp = require('gulp'); var rename = require('gulp-rename'); var less = require('gulp-less'); var cssminify = require('gulp-csso'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); // ---------------------------------- // Config // ---------------------------------- var config = { lessPattern: 'app/assets/less/**/*.less', lessSrc: 'app/assets/less/application.less', cssOutputDir: 'public/css', jsSrc: [ 'node_modules/jquery/dist/jquery.js', // Bootstrap 'app/assets/js/bootstrap/tooltip.js', 'app/assets/js/bootstrap/affix.js', 'app/assets/js/bootstrap/alert.js', 'app/assets/js/bootstrap/button.js', 'app/assets/js/bootstrap/carousel.js', 'app/assets/js/bootstrap/collapse.js', 'app/assets/js/bootstrap/dropdown.js', 'app/assets/js/bootstrap/modal.js', 'app/assets/js/bootstrap/popover.js', 'app/assets/js/bootstrap/scrollspy.js', 'app/assets/js/bootstrap/tab.js', 'app/assets/js/bootstrap/transition.js', // Font Awesome 'app/assets/js/font-awesome/fa-regular.js', 'app/assets/js/font-awesome/fa-solid.js', 'app/assets/js/font-awesome/fa-brands.js', 'app/assets/js/font-awesome/fontawesome.js' ], jsOutputDir: 'public/js' }; // ---------------------------------- // Tasks // ---------------------------------- gulp.task('build-css', function () { return gulp.src(config.lessSrc) .pipe(less()) .pipe(cssminify()) .pipe(rename({ basename: 'application', suffix: '.min'})) .pipe(gulp.dest(config.cssOutputDir)) }); gulp.task('build-js', function () { return gulp.src(config.jsSrc) .pipe(uglify()) .pipe(concat('application.min.js')) .pipe(gulp.dest(config.jsOutputDir)); }); gulp.task('watch-less', function() { gulp.watch(config.lessPattern, ['build-css']); }); gulp.task('build-assets', ['build-css', 'build-js']); gulp.task('default', ['watch-less']);