diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..232a52b --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,66 @@ +const {src, dest, series, parallel} = require('gulp') +const fs = require('fs') +const path = require('path') +const concat = require('gulp-concat') +const sourcemaps = require('gulp-sourcemaps') +const babel = require('gulp-babel') +const uglify = require('gulp-uglify') +const rename = require('gulp-rename') +const merge = require('merge-stream') +const sass = require('gulp-dart-sass') + +let base_dir_js = 'resources/assets/scripts/' +let output_dir_js = 'public/assets/scripts/' + +function getFolders(dir) { + return fs.readdirSync(dir) + .filter(function(file) { + return fs.statSync(path.join(dir, file)).isDirectory() + }) +} + +function bundle_base_js(done) { + return src(base_dir_js + '*.js') + .pipe(concat('main.js')) + .pipe(dest(output_dir_js)) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(babel()) + .pipe(uglify()) + .pipe(rename('main.min.js')) + .pipe(sourcemaps.write('./')) + .pipe(dest(output_dir_js)) +} + +function bundle_js(done) { + let folders = getFolders(base_dir_js) + let tasks = folders.map(function(folder) { + return src(path.join(base_dir_js, folder, '**/*.js')) + .pipe(concat(folder + '.js', {newLine: ';'})) + .pipe(dest(output_dir_js)) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(babel()) + .pipe(uglify()) + .pipe(rename(folder + '.min.js')) + .pipe(sourcemaps.write('./')) + .pipe(dest(output_dir_js)) + }) + + return merge(tasks) +} + +let base_dir_sass = 'resources/assets/sass/' +let output_dir_css = 'public/assets/styles/' + +function bundle_base_sass(done) { + return src([base_dir_sass + '*.scss', '!' + base_dir_sass + '_*.scss']) + .pipe(sass()) + .pipe(rename({extname: '.css'})) + .pipe(dest(output_dir_css)) + .pipe(sourcemaps.init({loadMaps: true})) + .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) + .pipe(rename({extname: '.min.css'})) + .pipe(sourcemaps.write('./')) + .pipe(dest(output_dir_css)) +} + +exports.default = series(bundle_base_js, bundle_js, bundle_base_sass)