UNPKG

gulp-clientappcompile

Version:

Gulp tasks for compiling all js into one single file. Based on gulp-este.

51 lines (46 loc) 1.4 kB
var gulp; gulp = require('gulp'); /** @param {(string|Array.<string>)} paths @param {string} dest @param {Object} customOptions @return {Stream} Node.js Stream. */ module.exports = function(paths, dest, customOptions) { var closureCompiler, gutil, options, size, _; _ = require('lodash'); closureCompiler = require('gulp-closure-compiler'); gutil = require('gulp-util'); size = require('gulp-size'); if (!Array.isArray(paths)) { paths = [paths]; } options = { fileName: 'app.js', compilerFlags: { closure_entry_point: 'app.main', compilation_level: 'ADVANCED_OPTIMIZATIONS', define: ["goog.DEBUG=" + (this.production === 'debug')], extra_annotation_name: 'jsx', only_closure_dependencies: true, output_wrapper: '(function(){%output%})();', warning_level: 'VERBOSE' } }; if (this.production === 'debug') { options.compilerFlags.debug = true; options.compilerFlags.formatting = 'PRETTY_PRINT'; options.compilerFlags.compilation_level = 'SIMPLE_OPTIMIZATIONS'; } _.merge(options, customOptions, function(a, b) { if (Array.isArray(a)) { return a.concat(b); } }); return gulp.src(paths).pipe(closureCompiler(options)).on('error', function(err) { return gutil.log(gutil.colors.red(err.message)); }).pipe(size({ showFiles: true, gzip: true })).pipe(gulp.dest(dest)); };