diff --git a/examples/build-examples.js b/examples/build-examples.js
index 509e68f6..b1deff37 100644
--- a/examples/build-examples.js
+++ b/examples/build-examples.js
@@ -27,7 +27,8 @@ examples.forEach(function (exampleName) {
}
}));
config.mode = 'production';
- config.optimization = { minimizer: [] };
+ config.optimization = config.optimization || {};
+ config.optimization.minimizer = [];
}
rimraf.sync(path.join(examplePath, 'dist', 'webpack-' + webpackMajorVersion));
diff --git a/examples/chunk-optimization/dist/webpack-4/entryA.html b/examples/chunk-optimization/dist/webpack-4/entryA.html
new file mode 100644
index 00000000..0125c79b
--- /dev/null
+++ b/examples/chunk-optimization/dist/webpack-4/entryA.html
@@ -0,0 +1,9 @@
+
+
+
+
+ Webpack App
+
+
+
+
\ No newline at end of file
diff --git a/examples/chunk-optimization/dist/webpack-4/entryA.js b/examples/chunk-optimization/dist/webpack-4/entryA.js
new file mode 100644
index 00000000..fbb9ffa5
--- /dev/null
+++ b/examples/chunk-optimization/dist/webpack-4/entryA.js
@@ -0,0 +1,151 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // install a JSONP callback for chunk loading
+/******/ function webpackJsonpCallback(data) {
+/******/ var chunkIds = data[0];
+/******/ var moreModules = data[1]
+/******/ var executeModules = data[2];
+/******/ // add "moreModules" to the modules object,
+/******/ // then flag all "chunkIds" as loaded and fire callback
+/******/ var moduleId, chunkId, i = 0, resolves = [];
+/******/ for(;i < chunkIds.length; i++) {
+/******/ chunkId = chunkIds[i];
+/******/ if(installedChunks[chunkId]) {
+/******/ resolves.push(installedChunks[chunkId][0]);
+/******/ }
+/******/ installedChunks[chunkId] = 0;
+/******/ }
+/******/ for(moduleId in moreModules) {
+/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ modules[moduleId] = moreModules[moduleId];
+/******/ }
+/******/ }
+/******/ if(parentJsonpFunction) parentJsonpFunction(data);
+/******/ while(resolves.length) {
+/******/ resolves.shift()();
+/******/ }
+/******/
+/******/ // add entry modules from loaded chunk to deferred list
+/******/ deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ // run deferred modules when all chunks ready
+/******/ return checkDeferredModules();
+/******/ };
+/******/ function checkDeferredModules() {
+/******/ var result;
+/******/ for(var i = 0; i < deferredModules.length; i++) {
+/******/ var deferredModule = deferredModules[i];
+/******/ var fullfilled = true;
+/******/ for(var j = 1; j < deferredModule.length; j++) {
+/******/ var depId = deferredModule[j];
+/******/ if(installedChunks[depId] !== 0) fullfilled = false;
+/******/ }
+/******/ if(fullfilled) {
+/******/ deferredModules.splice(i--, 1);
+/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ }
+/******/ }
+/******/ return result;
+/******/ }
+/******/
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // object to store loaded and loading chunks
+/******/ var installedChunks = {
+/******/ 5: 0
+/******/ };
+/******/
+/******/ var deferredModules = [];
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, {
+/******/ configurable: false,
+/******/ enumerable: true,
+/******/ get: getter
+/******/ });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ jsonpArray.push = webpackJsonpCallback;
+/******/ jsonpArray = jsonpArray.slice();
+/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ // add entry module to deferred list
+/******/ deferredModules.push([8,2,3,1,0]);
+/******/ // run deferred modules when ready
+/******/ return checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 8:
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(1);
+var multiply = __webpack_require__(0);
+var concat = __webpack_require__(3);
+var h1 = document.createElement('h1');
+h1.innerHTML = concat('Hello world from Entry ', multiply(1, 1));
+document.body.appendChild(h1);
+
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/examples/chunk-optimization/dist/webpack-4/entryA~entryB.js b/examples/chunk-optimization/dist/webpack-4/entryA~entryB.js
new file mode 100644
index 00000000..10865bc3
--- /dev/null
+++ b/examples/chunk-optimization/dist/webpack-4/entryA~entryB.js
@@ -0,0 +1,34 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
+
+/***/ 1:
+/***/ (function(module, exports, __webpack_require__) {
+
+// style-loader: Adds some css to the DOM by adding a