'use strict'; const gulp = require('gulp'); const gutil = require('gutil'); const watchify = require('watchify'); const browserify = require('browserify'); const source = require('vinyl-source-stream'); const buffer = require('vinyl-buffer'); const rename = require('gulp-rename'); const uglify = require('gulp-uglify-es').default; const es = require('event-stream'); const cleanCSS = require('gulp-clean-css'); const nodemon = require('gulp-nodemon'); const sourcemaps = require('gulp-sourcemaps'); const path = require('path'); const glob = require('glob'); let jsFiles = { src: [ glob.sync('app/public/services/*.js'), glob.sync('app/public/panel/**/*.js'), glob.sync('app/public/shimapan/**/*.js'), ], dest: 'shimapan.bundle.js' }; let staticJs = [{ src: 'app/public/index/typegraph.js', dest: 'typegraph.min.js' }]; const bundler = () => browserify({ entries: jsFiles.src, debug: true, cache: {}, packageCache: {} }); const watcher = watchify(bundler()); watcher.on('log', gutil.log); const bundle = pkg => pkg.bundle() .pipe(source(jsFiles.dest)) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(uglify()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('public/js')); gulp.task('build', () => bundle(bundler())); gulp.task('watch', () => { bundle(watcher); watcher.on('update', () => bundle(watcher)); }); gulp.task('minify', () => { const tasks = staticJs.map(file => gulp.src(file.src) .pipe(rename(file.dest)) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(uglify()) .pipe(sourcemaps.write('./'))); return es.merge(tasks) .pipe(gulp.dest('public/js')); }); gulp.task('default', gulp.parallel('build', 'minify'));