Webpacking

Existing Situation

  • r.js bundles
  • requireize'd files
    ng-templates
  • require.config (browser? build?)

Uglify

'use strict';
var path = require('path'),
    build = require('./build'),
    webpack = require('webpack');

var PATHS = {
    JS: {
        FTNT_SHARED: path.resolve('./js/ftnt_shared.js'),
        FTNT_SHARED_NOTIFY: path.resolve('./js/ftnt_shared/notify.js'),
        FTNT_SHARED_GRID_LIST: path.resolve('./js/ftnt_shared/grid_list.js')
    }
};
module.exports = {
    cache: true,
    entry: {
        ng: './ng/main'
    },
    output: {
        path: build.BUILD_DIR,
        publicPath: build.BUILD.CONFIG_GUI_NO,
        filename: '[name].bundle.js',
        chunkFilename: '[name]_[chunkhash].chunk.js'
    },
    module: {
        loaders: [
            { test: /\.html$/, loader: 'ngtemplate-loader!html-loader' },
            // TODO: add css, stylus, text loaders.
            // icons
            { test: /\.woff$/,
                loader: 'url-loader?prefix=font/&limit=5000&mimetype=application/font-woff' },

            // TODO: switch to json loader instead
            // allow monitor api endpoints to have '.json' extension?
            { test: /^\/api\/v2\/monitor/, loader: 'raw-loader' }
        ]
    },
    resolve: {
        alias: {
            /*'jquery': 'jquery/dist/jquery.js',
            'hammer': 'hammerjs/'*/
            'fweb': path.resolve('./js/fweb.js'),
            'fweb_build_partial':
                path.resolve(path.join(build.BUILD_DIR, 'js/fweb_build_partial.js')),
            'js/ftnt_shared': PATHS.JS.FTNT_SHARED,
            // TODO: there has got to be a better way.
            'notify': PATHS.JS.FTNT_SHARED_NOTIFY,
            'grid-list': PATHS.JS.FTNT_SHARED_GRID_LIST,
            'jquery.ui': 'jquery-ui-bundle/jquery-ui.js',
            'legacy.util': path.resolve('./js/Util.js'),
            'qed_list': path.resolve('./js/jquery.qlist'),
            'join-path': 'join-path-js',
            //TODO: npm?
            'closure-ipaddress': path.resolve('./js/closure-ipaddress.omin.js')
        }
    },
    plugins: [
        // TODO: refactor this out of our qlist modules?
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery',
            'window.jQuery': 'jquery'
        })
    ],
    stats: { errorDetails: true }

};
entry: {
        ng: './ng/main'
}
diff --git a/migadmin/js/jquery.ng_app.js b/migadmin/js/jquery.ng_app.js
index 18222f45877..f4c80a46cea 100644
--- a/migadmin/js/jquery.ng_app.js
+++ b/migadmin/js/jquery.ng_app.js
@@ -52,7 +52,7 @@ $.fn.ng_app = function(params) {
     } else if (running_apps[app_name]) {
         throw new Error('A ng app named "' + app_name + '" already exists');
     }
-    /*require.ensure([
+    require.ensure([
         'angular',
         '../ng/services/loader',
         '../ng/services/interceptor',
@@ -62,7 +62,7 @@ $.fn.ng_app = function(params) {
         '../ng/directives/menu/menu_items',
         // TODO: '../ng/directives/menu/templates',
         '../ng/filters/ftnt'
-    ], function() {*/
+    ], function() {
         var $controllerProvider;
         var angular = arguments[0];
         var app = angular.module(app_name, ng_modules);
@@ -114,6 +114,6 @@ $.fn.ng_app = function(params) {
         angular.bootstrap(element, [app_name]);
         running_apps[app_name] = app;
         deferred.resolve(app);
-    //});
+    });
     return deferred.promise();
 };
diff --git a/migadmin/js/qlist/inlineHandlers.js b/migadmin/js/qlist/inlineHandlers.js
index af891a3869c..9aa794f06f2 100644
--- a/migadmin/js/qlist/inlineHandlers.js
+++ b/migadmin/js/qlist/inlineHandlers.js
@@ -1080,7 +1080,7 @@ $.extend(QListInlineHandlers.prototype, {
 
 
         function initMenus() {
-            //require.ensure(['angular', '../jquery.ng_app'], function() {
+            require.ensure(['angular', '../jquery.ng_app'], function() {
                 var angular = require('angular'),
                     ng_app = require('../jquery.ng_app');
                 var $menuAppElem = $(h.menuSelector),
@@ -1088,7 +1088,7 @@ $.extend(QListInlineHandlers.prototype, {
                 module.controller(ng_app.DEFAULT_QLIST_MENU_ITEMS_CONTROLLER,
                     ['$scope', controller]);
                 $menuAppElem.ng_app({modules: [h.menuSelector]});
-            //});
+            });
         }
         function controller($scope) {
             //testing to see if this controller exists, quit immediately.
diff --git a/migadmin/js/qlist/menu_items.js b/migadmin/js/qlist/menu_items.js
index a13e60d8f07..97b072ec977 100644
--- a/migadmin/js/qlist/menu_items.js
+++ b/migadmin/js/qlist/menu_items.js
@@ -253,7 +253,7 @@
                     handler: f_events.reportExceptions(function(q) {
                         var entries = get_entries(q, column),
                             $dlg, json;
-//                        require.ensure(['../jquery.ui_dependencies', '../ajax_setup'], function() {
+                        require.ensure(['../jquery.ui_dependencies', '../ajax_setup'], function() {
                             if (entries.length > 0) {
                                 json = {
                                     ip_addresses: entries.map(pluck(column))
@@ -298,7 +298,7 @@
                                 //no destroy yet?
diff --git a/migadmin/ng/main.js b/migadmin/ng/main.js
index fa6ecd9b1d1..7c4d2101cf8 100644
--- a/migadmin/ng/main.js
+++ b/migadmin/ng/main.js
@@ -1,100 +1,100 @@
 'use strict';
 Promise.all([
-       require('../js/early_state').promise,
-       require('../js/early_object_urls').promise,
-       require('../js/early_lang').promise
+    require('../js/early_state').promise,
+    require('../js/early_object_urls').promise,
+    require('../js/early_lang').promise
 ]).then(function() {
\ No newline at end of file
+    // split along fweb/angular line?
+    require.ensure(['fweb'], function() {

Webpacking

By Jamie Pate

Webpacking

  • 863