From 2eb16eb04ea099d44cefc9e1d7556c521b98ff2a Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Mon, 2 Feb 2015 18:17:40 -0500 Subject: [PATCH] Clean up broccoli build --- Brocfile.js | 192 ++++++++++++++------------------- awx/ui/templates/ui/index.html | 4 +- 2 files changed, 84 insertions(+), 112 deletions(-) diff --git a/Brocfile.js b/Brocfile.js index 0c0b594e3d..a3e7bd5bc9 100644 --- a/Brocfile.js +++ b/Brocfile.js @@ -1,130 +1,102 @@ +/* jshint node: true */ + +var flatten = require('lodash/array/flatten'); +var isUndefined = require('lodash/lang/isUndefined'); +var path = require('path'); +var parseArgs = require('minimist'); var mergeTrees = require('broccoli-merge-trees'); var uglifyFiles = require('broccoli-uglify-sourcemap'); var concatFiles = require('broccoli-sourcemap-concat'); -var pickFiles = require('broccoli-static-compiler'); -var findBowerTrees = require('broccoli-bower'); var compileLess = require('broccoli-less-single'); +var gzip = require('broccoli-gzip'); +var debug = require('broccoli-stew').debug; -var vendorMin = concatFiles('awx/ui/static/lib', { - sourceMapConfig: { - enabled: false - }, - outputFile: '/out/vendor-min.js', - inputFiles: [ - 'jquery/dist/jquery.min.js', - 'angular/angular.min.js', - 'angular-route/angular-route.min.js', - 'angular-resource/angular-resource.min.js', - 'angular-cookies/angular-cookies.min.js', - 'angular-sanitize/angular-sanitize.min.js', - 'angular-md5/angular-md5.min.js', - 'jquery-ui/jquery-ui.min.js', - 'bootstrap/dist/js/bootstrap.min.js', - 'js-yaml/dist/js-yaml.min.js', - 'select2/select2.min.js', - 'angular-animate/angular-animate.min.js', - 'angular-tz-extensions/packages/jstimezonedetect/jstz.min.js', - 'socket.io-client/dist/socket.io.min.js', - 'd3js/build/d3.v3.min.js', - 'novus-nvd3/nv.d3.min.js' - ] -}); +// Get extra args after '--' +var allArgs = parseArgs(process.argv.slice(2), { '--': true }); +var args = parseArgs(allArgs['--']); -var sourceMaps = pickFiles('awx/ui/static/lib', { - srcDir: '/', - destDir: 'out', - files: [ - 'angular-animate/angular-animate.min.js.map', - '**/*.min.js.map', - '**/*.min.map' - ] -}); +var shouldCompress = isUndefined(args.compress) ? false : args.compress; +var debugMode = isUndefined(args.debug) ? false : args.debug; +var silentMode = isUndefined(args.silent) ? false : args.silent; -var vendorMaps = concatFiles(sourceMaps, { - sourceMapConfig: { - enabled: false - }, - outputFile: '/out/vendor-min.js.map', - inputFiles: ['out/**/*.map'] -}); +var vendorFiles = + [ 'jquery/dist/jquery.js', + 'angular/angular.js', + 'angular-route/angular-route.js', + 'angular-resource/angular-resource.js', + 'angular-cookies/angular-cookies.js', + 'angular-sanitize/angular-sanitize.js', + 'angular-md5/angular-md5.js', + 'jquery-ui/jquery-ui.js', + 'bootstrap/dist/js/bootstrap.js', + 'js-yaml/dist/js-yaml.js', + 'select2/select2.js', + 'angular-animate/angular-animate.js', + 'angular-tz-extensions/packages/jstimezonedetect/jstz.js', + 'socket.io-client/dist/socket.io.js', + 'd3js/build/d3.v3.js', + 'novus-nvd3/nv.d3.js', + 'angular-codemirror/lib/AngularCodeMirror.js', + 'timezone-js/src/date.js', + 'underscore/underscore.js', + 'rrule/lib/rrule.js', + 'rrule/lib/nlp.js', + 'angular-tz-extensions/lib/angular-tz-extensions.js', + 'angular-scheduler/lib/angular-scheduler.js', + 'angular-filters/dist/angular-filters.js', + 'bootstrap/dist/js/bootstrap.js', + 'codemirror/lib/codemirror.js', + 'd3Donut/d3Donut.js', + 'jPushMenu/jPushMenu.js', + 'jQuery.dotdotdot/src/js/jquery.dotdotdot.js', + 'jquery-ui/jquery-ui.js', + 'js-yaml/dist/js-yaml.js', + 'lrInfiniteScroll/lrInfiniteScroll.js', + 'scrollto/lib/jquery-scrollto.js', + 'select2/select2.js', + 'sizzle/dist/sizzle.js', + 'ansible/*.js' + ]; -var vendorMinWithMaps = mergeTrees([vendorMin, vendorMaps]); +function log() { + var msgs = Array.prototype.splice.apply(arguments); -var vendorConcat = concatFiles('awx/ui/static/lib', { - outputFile: 'out/vendor-concat.js', - inputFiles: [ - 'angular-codemirror/lib/AngularCodeMirror.js', - 'timezone-js/src/date.js', - 'underscore/underscore.js', - 'rrule/lib/rrule.js', - 'rrule/lib/nlp.js', - 'angular-tz-extensions/lib/angular-tz-extensions.js', - 'angular-scheduler/lib/angular-scheduler.js', - 'angular-filters/dist/angular-filters.js', - 'bootstrap/dist/js/bootstrap.js', - 'codemirror/lib/codemirror.js', - 'd3Donut/d3Donut.js', - 'jPushMenu/jPushMenu.js', - 'jQuery.dotdotdot/src/js/jquery.dotdotdot.js', - 'jquery-ui/jquery-ui.js', - 'js-yaml/dist/js-yaml.js', - 'lrInfiniteScroll/lrInfiniteScroll.js', - 'scrollto/lib/jquery-scrollto.js', - 'select2/select2.js', - 'sizzle/dist/sizzle.js', - ] -}); - -function uglifyFast(tree, opts) { - opts = opts || {}; - opts.compress = false; - opts.mangle = false; - opts.sourceMapIncludeSources = false; - return uglifyFiles(tree, opts); + if (!silentMode) { + console.log.apply(null, msgs); + } } -function uglifySlow(tree) { - return uglifyFiles(tree); +function prependLibDir(file) { + return path.join('lib', file); } -var ansibleLib = pickFiles('awx/ui/static/lib/ansible', { - srcDir: '/', - destDir: 'out' -}); +vendorFiles = vendorFiles.map(prependLibDir); -var src = pickFiles('awx/ui/static/js', { - srcDir: '/', - destDir: 'out' -}); +var root = 'awx/ui/static'; +var app = root; -var filesToConcat = mergeTrees([vendorConcat, ansibleLib, src]); +function log(msg, obj) { + console.log(msg + ":", obj); + return obj; +} -console.log('here1'); -var concated = concatFiles(filesToConcat, { - outputFile: '/out/tower-concat.js', - inputFiles: ['out/**/*.js'] -}); -var merged = mergeTrees([vendorMinWithMaps, concated], { - description: "TreeMerge (vendor and sourcemaps)", -}) -var minified = uglifyFast(merged, { - outSourceMap: 'tower-concat.map' -}); +app = concatFiles(app, + { outputFile: 'tower.concat.js', + inputFiles: flatten([vendorFiles, ['js/**/*.js', 'js/app.js', 'js/config.js', 'js/local_config.js']]) + }); -var finalMap = pickFiles(minified, { - srcDir: '/out', - destDir: '', - files: ['tower-concat.map'] -}); +app = debug(app, {name: 'concat'}); -var finalized = concatFiles(minified, { - sourceMapConfig: { - enabled: false - }, - outputFile: '/tower-concat.js', - inputFiles: ['out/vendor-min.js', 'out/tower-concat.js'] -}); +var styles = compileLess(path.join(root, 'less'), 'ansible-ui.less', 'tower.min.css'); -var less = compileLess('awx/ui/static/less', 'ansible-ui.less', 'awx.min.css'); +app = mergeTrees([app, styles]); -module.exports = mergeTrees([finalMap, finalized, less]); +if (shouldCompress) { + app = uglifyFiles(app); + app = gzip(app, + { keepUncompressed: true, + extensions: ['js', 'css'] + }); +} + +module.exports = app; diff --git a/awx/ui/templates/ui/index.html b/awx/ui/templates/ui/index.html index 4273c6cf22..eb42d5303d 100644 --- a/awx/ui/templates/ui/index.html +++ b/awx/ui/templates/ui/index.html @@ -15,14 +15,14 @@ - + - +