gulp-clientappcompile
Version:
Gulp tasks for compiling all js into one single file. Based on gulp-este.
51 lines (46 loc) • 1.4 kB
JavaScript
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));
};