import gulp from 'gulp'; import concat from 'gulp-concat'; import strip from 'gulp-strip-comments'; import uglyfy from 'gulp-uglify'; import sourceMaps from 'gulp-sourcemaps'; import BundleResources from '../helpers/bundleResources'; import { reload } from '../../dev-server'; const GUI_BASE = '../../web/gui/src/main/webapp/'; const bundleFiles = [ // NOTE: Bundle the important files first 'app/directives.js', 'app/fw/util/util.js', 'app/fw/mast/mast.js', 'app/fw/nav/nav.js', 'app/fw/svg/svg.js', 'app/fw/remote/remote.js', 'app/fw/widget/widget.js', 'app/fw/layer/layer.js', // NOTE: bundle everything else 'app/fw/**/*.js', 'app/view/**/*.js' ]; const vendor = [ 'tp/angular.js', 'tp/angular-route.js', 'tp/angular-cookies.js', 'tp/d3.js', 'tp/topojson.v1.min.js', 'tp/Chart.js', 'tp/lodash.min.js', ]; function bundle(files, exportName) { // TODO: Use util.noop once npm issues have been resolved if (process.argv.indexOf('--development') > -1) { return gulp.src(BundleResources(GUI_BASE, files)) .pipe(sourceMaps.init()) .on('error', (e, file, line) => console.error(e)) .pipe(concat(exportName)) .pipe(sourceMaps.write('source-map')) .pipe(gulp.dest(GUI_BASE + '/dist/')) .on('end', () => { reload(); }) } return gulp.src(BundleResources(GUI_BASE, files)) .pipe(sourceMaps.init()) .pipe(strip()) .pipe(uglyfy()) .on('error', (e, file, line) => console.error(e)) .pipe(concat(exportName)) .pipe(sourceMaps.write('source-map')) .pipe(gulp.dest(GUI_BASE + '/dist/')); } const tasks = function () { // gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js')); gulp.task('bundle-js', () => bundle(bundleFiles, 'onos.js')); gulp.task('watch-js', () => { gulp.watch([GUI_BASE + 'app/**/*.js'], ['bundle-js']); }).on('change', (event) => { console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); }); }; export default tasks();