diff --git a/src/optimize/base_optimizer.js b/src/optimize/base_optimizer.js index 5b4d1493725111..27d2a17ec79eb6 100644 --- a/src/optimize/base_optimizer.js +++ b/src/optimize/base_optimizer.js @@ -3,10 +3,6 @@ import { writeFile } from 'fs'; import Boom from 'boom'; import ExtractTextPlugin from 'extract-text-webpack-plugin'; import webpack from 'webpack'; -import CommonsChunkPlugin from 'webpack/lib/optimize/CommonsChunkPlugin'; -import DefinePlugin from 'webpack/lib/DefinePlugin'; -import UglifyJsPlugin from 'webpack/lib/optimize/UglifyJsPlugin'; -import NoEmitOnErrorsPlugin from 'webpack/lib/NoEmitOnErrorsPlugin'; import Stats from 'webpack/lib/Stats'; import webpackMerge from 'webpack-merge'; @@ -98,6 +94,8 @@ export default class BaseOptimizer { }); } + const nodeModulesPath = fromRoot('node_modules'); + /** * Adds a cache loader if we're running in dev mode. The reason we're not adding * the cache-loader when running in production mode is that it creates cache @@ -141,12 +139,20 @@ export default class BaseOptimizer { allChunks: true }), - new CommonsChunkPlugin({ + new webpack.optimize.CommonsChunkPlugin({ name: 'commons', - filename: 'commons.bundle.js' + filename: 'commons.bundle.js', + minChunks: 2, + }), + + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendors', + filename: 'vendors.bundle.js', + // only combine node_modules from Kibana + minChunks: module => module.context && module.context.indexOf(nodeModulesPath) !== -1 }), - new NoEmitOnErrorsPlugin(), + new webpack.NoEmitOnErrorsPlugin(), ], module: { @@ -233,12 +239,12 @@ export default class BaseOptimizer { return webpackMerge(commonConfig, { plugins: [ - new DefinePlugin({ + new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': '"production"' } }), - new UglifyJsPlugin({ + new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false }, diff --git a/src/ui/ui_render/views/ui_app.jade b/src/ui/ui_render/views/ui_app.jade index 1595059410bfa0..120f26ad9046af 100644 --- a/src/ui/ui_render/views/ui_app.jade +++ b/src/ui/ui_render/views/ui_app.jade @@ -120,8 +120,11 @@ block content return anchor.href; } var files = [ + bundleFile('vendors.style.css'), bundleFile('commons.style.css'), bundleFile('#{app.getId()}.style.css'), + + bundleFile('vendors.bundle.js'), bundleFile('commons.bundle.js'), bundleFile('#{app.getId()}.bundle.js') ]; diff --git a/tasks/config/karma.js b/tasks/config/karma.js index b362b5471c6e57..b72df5f6ad7097 100644 --- a/tasks/config/karma.js +++ b/tasks/config/karma.js @@ -37,8 +37,11 @@ module.exports = function (grunt) { // list of files / patterns to load in the browser files: [ + 'http://localhost:5610/bundles/vendors.bundle.js', 'http://localhost:5610/bundles/commons.bundle.js', 'http://localhost:5610/bundles/tests.bundle.js', + + 'http://localhost:5610/bundles/vendors.style.css', 'http://localhost:5610/bundles/commons.style.css', 'http://localhost:5610/bundles/tests.style.css' ], @@ -126,8 +129,11 @@ module.exports = function (grunt) { singleRun: true, options: { files: [ + 'http://localhost:5610/bundles/vendors.bundle.js', 'http://localhost:5610/bundles/commons.bundle.js', `http://localhost:5610/bundles/tests.bundle.js?shards=${TOTAL_CI_SHARDS}&shard_num=${n}`, + + 'http://localhost:5610/bundles/vendors.style.css', 'http://localhost:5610/bundles/commons.style.css', 'http://localhost:5610/bundles/tests.style.css' ]