complexer dedupe example and fixed bugs
This commit is contained in:
parent
a9cb6256b3
commit
a91cff49b6
|
@ -5,32 +5,174 @@
|
|||
// index.js and x.js can be deduplicated
|
||||
require(["../dedupe/a", "bundle?lazy!../dedupe/b"]);
|
||||
|
||||
// index.js and x.js cannot be deduplicated
|
||||
require(["../dedupe/a"]);
|
||||
require(["../dedupe/b"]);
|
||||
|
||||
```
|
||||
|
||||
# js/output.js
|
||||
|
||||
``` javascript
|
||||
/******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // object to store loaded and loading chunks
|
||||
/******/ // "0" means "already loaded"
|
||||
/******/ // Array means "loading", array contains callbacks
|
||||
/******/ var installedChunks = {0:0};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function 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] = {
|
||||
/******/ exports: {},
|
||||
/******/ id: moduleId,
|
||||
/******/ loaded: false
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(null, module, module.exports, require);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.loaded = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/ // This file contains only the entry chunk.
|
||||
/******/ // The chunk loading function for additional chunks
|
||||
/******/ require.e = function requireEnsure(chunkId, callback) {
|
||||
/******/ // "0" is the signal for "already loaded"
|
||||
/******/ if(installedChunks[chunkId] === 0)
|
||||
/******/ return callback.call(null, require);
|
||||
/******/
|
||||
/******/ // an array means "currently loading".
|
||||
/******/ if(installedChunks[chunkId] !== undefined) {
|
||||
/******/ installedChunks[chunkId].push(callback);
|
||||
/******/ } else {
|
||||
/******/ // start chunk loading
|
||||
/******/ installedChunks[chunkId] = [callback];
|
||||
/******/ var head = document.getElementsByTagName('head')[0];
|
||||
/******/ var script = document.createElement('script');
|
||||
/******/ script.type = 'text/javascript';
|
||||
/******/ script.charset = 'utf-8';
|
||||
/******/ script.src = modules.c + "" + chunkId + ".output.js";
|
||||
/******/ head.appendChild(script);
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ require.modules = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ require.cache = installedModules;
|
||||
/******/
|
||||
/******/ // install a JSONP callback for chunk loading
|
||||
/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules) {
|
||||
/******/ // add "moreModules" to the modules object,
|
||||
/******/ // then flag all "chunkIds" as loaded and fire callback
|
||||
/******/ var moduleId, chunkId, callbacks = [];
|
||||
/******/ while(chunkIds.length) {
|
||||
/******/ chunkId = chunkIds.shift();
|
||||
/******/ if(installedChunks[chunkId])
|
||||
/******/ callbacks.push.apply(callbacks, installedChunks[chunkId]);
|
||||
/******/ installedChunks[chunkId] = 0;
|
||||
/******/ }
|
||||
/******/ for(moduleId in moreModules) {
|
||||
/******/ var _m = moreModules[moduleId];
|
||||
/******/ switch(typeof _m) {
|
||||
/******/ case "number":
|
||||
/******/ modules[moduleId] = modules[_m];
|
||||
/******/ break;
|
||||
/******/ case "object":
|
||||
/******/ modules[moduleId] = (function(_m) {
|
||||
/******/ var args = _m.slice(1), fn = modules[_m[0]];
|
||||
/******/ return function (a,b,c) {
|
||||
/******/ fn.apply(null, [a,b,c].concat(args));
|
||||
/******/ };
|
||||
/******/ }(_m));
|
||||
/******/ break;
|
||||
/******/ default:
|
||||
/******/ modules[moduleId] = _m;
|
||||
/******/ }
|
||||
/******/ }
|
||||
/******/ while(callbacks.length)
|
||||
/******/ callbacks.shift().call(null, require);
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return require(0);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ((function(modules) {
|
||||
for(var i in modules) {
|
||||
switch(typeof modules[i]) {
|
||||
case "number":
|
||||
modules[i] = modules[modules[i]];
|
||||
break;
|
||||
case "object":
|
||||
modules[i] = (function(_m) {
|
||||
var args = _m.slice(1), fn = modules[_m[0]];
|
||||
return function (a,b,c) {
|
||||
fn.apply(null, [a,b,c].concat(args));
|
||||
};
|
||||
}(modules[i]));
|
||||
}
|
||||
}
|
||||
return modules;
|
||||
}({
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ c: "",
|
||||
|
||||
/***/ 0:
|
||||
/*!********************!*\
|
||||
!*** ./example.js ***!
|
||||
\********************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
// index.js and x.js can be deduplicated
|
||||
require.e/* require */(1, function(require) {[(require(/*! ../dedupe/a */ 1)), (require(/*! bundle?lazy!../dedupe/b */ 3))];});
|
||||
|
||||
// index.js and x.js cannot be deduplicated
|
||||
require.e/* require */(3, function(require) {[(require(/*! ../dedupe/a */ 1))];});
|
||||
require.e/* require */(2, function(require) {[(require(/*! ../dedupe/b */ 2))];});
|
||||
|
||||
|
||||
/***/ }
|
||||
/******/ })))
|
||||
```
|
||||
|
||||
# js/1.output.js
|
||||
|
||||
``` javascript
|
||||
webpackJsonp([1],
|
||||
webpackJsonp([1,3],
|
||||
{
|
||||
|
||||
/***/ 1:
|
||||
/*!***************************************************************************************************************************!*\
|
||||
[9, 5, 6],
|
||||
|
||||
/***/ 3:
|
||||
/*!****************************************************************************************************!*\
|
||||
!*** (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js ***!
|
||||
\***************************************************************************************************************************/
|
||||
\****************************************************************************************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = function(cb) {
|
||||
require.e/*nsure*/(2, function(require) {
|
||||
cb(require(/*! !../dedupe/b/index.js */ 6));
|
||||
require.e/*nsure*/(4, function(require) {
|
||||
cb(require(/*! !../dedupe/b/index.js */ 2));
|
||||
});
|
||||
}
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 2:
|
||||
[9, 4, 5],
|
||||
|
||||
/***/ 3:
|
||||
/***/ 4:
|
||||
/*!**********************!*\
|
||||
!*** ../dedupe/z.js ***!
|
||||
\**********************/
|
||||
|
@ -40,7 +182,7 @@ webpackJsonp([1],
|
|||
|
||||
/***/ },
|
||||
|
||||
/***/ 4:
|
||||
/***/ 5:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/a/x.js ***!
|
||||
\************************/
|
||||
|
@ -50,7 +192,7 @@ webpackJsonp([1],
|
|||
|
||||
/***/ },
|
||||
|
||||
/***/ 5:
|
||||
/***/ 6:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/a/y.js ***!
|
||||
\************************/
|
||||
|
@ -69,7 +211,7 @@ webpackJsonp([1],
|
|||
module.exports = {
|
||||
x: require(__webpack_module_template_argument_0__),
|
||||
y: require(__webpack_module_template_argument_1__),
|
||||
z: require(/*! ../z */ 3)
|
||||
z: require(/*! ../z */ 4)
|
||||
}
|
||||
|
||||
/***/ }
|
||||
|
@ -81,14 +223,122 @@ webpackJsonp([1],
|
|||
# js/2.output.js
|
||||
|
||||
``` javascript
|
||||
webpackJsonp([2],
|
||||
webpackJsonp([2,4],
|
||||
{
|
||||
|
||||
/***/ 2:
|
||||
/*!****************************!*\
|
||||
!*** ../dedupe/b/index.js ***!
|
||||
\****************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {
|
||||
x: require(/*! ./x */ 7),
|
||||
y: require(/*! ./y */ 8),
|
||||
z: require(/*! ../z */ 4)
|
||||
}
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 4:
|
||||
/*!**********************!*\
|
||||
!*** ../dedupe/z.js ***!
|
||||
\**********************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "z"};
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 7:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/b/x.js ***!
|
||||
\************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "x"};
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 8:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/b/y.js ***!
|
||||
\************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "y", "but in": "b"};
|
||||
|
||||
/***/ }
|
||||
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
# js/3.output.js
|
||||
|
||||
``` javascript
|
||||
webpackJsonp([3],
|
||||
{
|
||||
|
||||
/***/ 1:
|
||||
/*!****************************!*\
|
||||
!*** ../dedupe/a/index.js ***!
|
||||
\****************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {
|
||||
x: require(/*! ./x */ 5),
|
||||
y: require(/*! ./y */ 6),
|
||||
z: require(/*! ../z */ 4)
|
||||
}
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 4:
|
||||
/*!**********************!*\
|
||||
!*** ../dedupe/z.js ***!
|
||||
\**********************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "z"};
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 5:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/a/x.js ***!
|
||||
\************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "x"};
|
||||
|
||||
/***/ },
|
||||
|
||||
/***/ 6:
|
||||
/*!************************!*\
|
||||
!*** ../dedupe/a/y.js ***!
|
||||
\************************/
|
||||
/***/ function(module, exports, require) {
|
||||
|
||||
module.exports = {"this is": "y", "but in": "a"};
|
||||
|
||||
/***/ }
|
||||
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
# js/4.output.js
|
||||
|
||||
``` javascript
|
||||
webpackJsonp([4],
|
||||
{
|
||||
|
||||
/***/ 2:
|
||||
[9, 7, 8],
|
||||
|
||||
/***/ 7:
|
||||
4,
|
||||
5,
|
||||
|
||||
/***/ 8:
|
||||
/*!************************!*\
|
||||
|
@ -109,71 +359,123 @@ webpackJsonp([2],
|
|||
## Uncompressed
|
||||
|
||||
```
|
||||
Hash: 81148181bfb1b39e2c48
|
||||
Hash: 46d170ad35acc40bf3ea
|
||||
Version: webpack 0.10.0-beta20
|
||||
Time: 78ms
|
||||
Time: 101ms
|
||||
Asset Size Chunks Chunk Names
|
||||
output.js 4424 0 [emitted] main
|
||||
1.output.js 1548 1 [emitted]
|
||||
2.output.js 261 2 [emitted]
|
||||
chunk {0} output.js (main) 94 [rendered]
|
||||
[0] ./example.js 94 {0} [built]
|
||||
chunk {1} 1.output.js 508 {0} [rendered]
|
||||
[1] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 231 {1} [built]
|
||||
amd require bundle?lazy!../dedupe/b [0] ./example.js 2:0-51
|
||||
[2] ../dedupe/a/index.js 80 {1} [built]
|
||||
output.js 4645 0 [emitted] main
|
||||
1.output.js 1485 1, 3 [emitted]
|
||||
2.output.js 877 2, 4 [emitted]
|
||||
3.output.js 875 3 [emitted]
|
||||
4.output.js 261 4 [emitted]
|
||||
chunk {0} output.js (main) 197 [rendered]
|
||||
[0] ./example.js 197 {0} [built]
|
||||
chunk {1} 1.output.js 492 {0} [rendered]
|
||||
[1] ../dedupe/a/index.js 84 {1} {3} [built]
|
||||
amd require ../dedupe/a [0] ./example.js 2:0-51
|
||||
[3] ../dedupe/z.js 34 {1} [built]
|
||||
cjs require ../z [2] ../dedupe/a/index.js 4:4-19
|
||||
cjs require ../z [6] ../dedupe/b/index.js 4:4-19
|
||||
[4] ../dedupe/a/x.js 34 {1} [built]
|
||||
cjs require ./x [2] ../dedupe/a/index.js 2:4-18
|
||||
[5] ../dedupe/a/y.js 49 {1} [built]
|
||||
cjs require ./y [2] ../dedupe/a/index.js 3:4-18
|
||||
[9] 80 {1} [not cacheable] [built]
|
||||
template 3 [2] ../dedupe/a/index.js
|
||||
template 3 [6] ../dedupe/b/index.js
|
||||
chunk {2} 2.output.js 163 {1} [rendered]
|
||||
[6] ../dedupe/b/index.js 80 {2} [built]
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [1] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-150
|
||||
[7] ../dedupe/b/x.js 34 {2} [built]
|
||||
cjs require ./x [6] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} [built]
|
||||
cjs require ./y [6] ../dedupe/b/index.js 3:4-18
|
||||
amd require ../dedupe/a [0] ./example.js 5:0-24
|
||||
[3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 207 {1} [built]
|
||||
amd require bundle?lazy!../dedupe/b [0] ./example.js 2:0-51
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
[5] ../dedupe/a/x.js 34 {1} {3} [built]
|
||||
cjs require ./x [1] ../dedupe/a/index.js 2:4-18
|
||||
[6] ../dedupe/a/y.js 49 {1} {3} [built]
|
||||
cjs require ./y [1] ../dedupe/a/index.js 3:4-18
|
||||
[9] 84 {1} [not cacheable] [built]
|
||||
template 4 [1] ../dedupe/a/index.js
|
||||
template 4 [2] ../dedupe/b/index.js
|
||||
chunk {2} 2.output.js 201 {0} [rendered]
|
||||
[2] ../dedupe/b/index.js 84 {2} {4} [built]
|
||||
amd require ../dedupe/b [0] ./example.js 6:0-24
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-126
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
[7] ../dedupe/b/x.js 34 {2} {4} [built]
|
||||
cjs require ./x [2] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} {4} [built]
|
||||
cjs require ./y [2] ../dedupe/b/index.js 3:4-18
|
||||
chunk {3} 3.output.js 201 {0} [rendered]
|
||||
[1] ../dedupe/a/index.js 84 {1} {3} [built]
|
||||
amd require ../dedupe/a [0] ./example.js 2:0-51
|
||||
amd require ../dedupe/a [0] ./example.js 5:0-24
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
[5] ../dedupe/a/x.js 34 {1} {3} [built]
|
||||
cjs require ./x [1] ../dedupe/a/index.js 2:4-18
|
||||
[6] ../dedupe/a/y.js 49 {1} {3} [built]
|
||||
cjs require ./y [1] ../dedupe/a/index.js 3:4-18
|
||||
chunk {4} 4.output.js 167 {1} [rendered]
|
||||
[2] ../dedupe/b/index.js 84 {2} {4} [built]
|
||||
amd require ../dedupe/b [0] ./example.js 6:0-24
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-126
|
||||
[7] ../dedupe/b/x.js 34 {2} {4} [built]
|
||||
cjs require ./x [2] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} {4} [built]
|
||||
cjs require ./y [2] ../dedupe/b/index.js 3:4-18
|
||||
```
|
||||
|
||||
## Minimized (uglify-js, no zip)
|
||||
|
||||
```
|
||||
Hash: 81148181bfb1b39e2c48
|
||||
Hash: 46d170ad35acc40bf3ea
|
||||
Version: webpack 0.10.0-beta20
|
||||
Time: 172ms
|
||||
Time: 273ms
|
||||
Asset Size Chunks Chunk Names
|
||||
output.js 1096 0 [emitted] main
|
||||
1.output.js 292 1 [emitted]
|
||||
2.output.js 88 2 [emitted]
|
||||
chunk {0} output.js (main) 94 [rendered]
|
||||
[0] ./example.js 94 {0} [built]
|
||||
chunk {1} 1.output.js 508 {0} [rendered]
|
||||
[1] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 231 {1} [built]
|
||||
amd require bundle?lazy!../dedupe/b [0] ./example.js 2:0-51
|
||||
[2] ../dedupe/a/index.js 80 {1} [built]
|
||||
output.js 1151 0 [emitted] main
|
||||
1.output.js 294 1, 3 [emitted]
|
||||
2.output.js 210 2, 4 [emitted]
|
||||
3.output.js 208 3 [emitted]
|
||||
4.output.js 88 4 [emitted]
|
||||
chunk {0} output.js (main) 197 [rendered]
|
||||
[0] ./example.js 197 {0} [built]
|
||||
chunk {1} 1.output.js 492 {0} [rendered]
|
||||
[1] ../dedupe/a/index.js 84 {1} {3} [built]
|
||||
amd require ../dedupe/a [0] ./example.js 2:0-51
|
||||
[3] ../dedupe/z.js 34 {1} [built]
|
||||
cjs require ../z [2] ../dedupe/a/index.js 4:4-19
|
||||
cjs require ../z [6] ../dedupe/b/index.js 4:4-19
|
||||
[4] ../dedupe/a/x.js 34 {1} [built]
|
||||
cjs require ./x [2] ../dedupe/a/index.js 2:4-18
|
||||
[5] ../dedupe/a/y.js 49 {1} [built]
|
||||
cjs require ./y [2] ../dedupe/a/index.js 3:4-18
|
||||
[9] 80 {1} [not cacheable] [built]
|
||||
template 3 [2] ../dedupe/a/index.js
|
||||
template 3 [6] ../dedupe/b/index.js
|
||||
chunk {2} 2.output.js 163 {1} [rendered]
|
||||
[6] ../dedupe/b/index.js 80 {2} [built]
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [1] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-150
|
||||
[7] ../dedupe/b/x.js 34 {2} [built]
|
||||
cjs require ./x [6] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} [built]
|
||||
cjs require ./y [6] ../dedupe/b/index.js 3:4-18
|
||||
amd require ../dedupe/a [0] ./example.js 5:0-24
|
||||
[3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 207 {1} [built]
|
||||
amd require bundle?lazy!../dedupe/b [0] ./example.js 2:0-51
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
[5] ../dedupe/a/x.js 34 {1} {3} [built]
|
||||
cjs require ./x [1] ../dedupe/a/index.js 2:4-18
|
||||
[6] ../dedupe/a/y.js 49 {1} {3} [built]
|
||||
cjs require ./y [1] ../dedupe/a/index.js 3:4-18
|
||||
[9] 84 {1} [not cacheable] [built]
|
||||
template 4 [1] ../dedupe/a/index.js
|
||||
template 4 [2] ../dedupe/b/index.js
|
||||
chunk {2} 2.output.js 201 {0} [rendered]
|
||||
[2] ../dedupe/b/index.js 84 {2} {4} [built]
|
||||
amd require ../dedupe/b [0] ./example.js 6:0-24
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-126
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
[7] ../dedupe/b/x.js 34 {2} {4} [built]
|
||||
cjs require ./x [2] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} {4} [built]
|
||||
cjs require ./y [2] ../dedupe/b/index.js 3:4-18
|
||||
chunk {3} 3.output.js 201 {0} [rendered]
|
||||
[1] ../dedupe/a/index.js 84 {1} {3} [built]
|
||||
amd require ../dedupe/a [0] ./example.js 2:0-51
|
||||
amd require ../dedupe/a [0] ./example.js 5:0-24
|
||||
[4] ../dedupe/z.js 34 {1} {2} {3} [built]
|
||||
cjs require ../z [1] ../dedupe/a/index.js 4:4-19
|
||||
cjs require ../z [2] ../dedupe/b/index.js 4:4-19
|
||||
[5] ../dedupe/a/x.js 34 {1} {3} [built]
|
||||
cjs require ./x [1] ../dedupe/a/index.js 2:4-18
|
||||
[6] ../dedupe/a/y.js 49 {1} {3} [built]
|
||||
cjs require ./y [1] ../dedupe/a/index.js 3:4-18
|
||||
chunk {4} 4.output.js 167 {1} [rendered]
|
||||
[2] ../dedupe/b/index.js 84 {2} {4} [built]
|
||||
amd require ../dedupe/b [0] ./example.js 6:0-24
|
||||
cjs require !!(webpack)\examples\dedupe\b\index.js [3] (webpack)/~/bundle-loader?lazy!../dedupe/b/index.js 3:5-126
|
||||
[7] ../dedupe/b/x.js 34 {2} {4} [built]
|
||||
cjs require ./x [2] ../dedupe/b/index.js 2:4-18
|
||||
[8] ../dedupe/b/y.js 49 {2} {4} [built]
|
||||
cjs require ./y [2] ../dedupe/b/index.js 3:4-18
|
||||
```
|
|
@ -1,2 +1,6 @@
|
|||
// index.js and x.js can be deduplicated
|
||||
require(["../dedupe/a", "bundle?lazy!../dedupe/b"]);
|
||||
|
||||
// index.js and x.js cannot be deduplicated
|
||||
require(["../dedupe/a"]);
|
||||
require(["../dedupe/b"]);
|
||||
|
|
|
@ -5,6 +5,12 @@
|
|||
{{example.js}}
|
||||
```
|
||||
|
||||
# js/output.js
|
||||
|
||||
``` javascript
|
||||
{{js/output.js}}
|
||||
```
|
||||
|
||||
# js/1.output.js
|
||||
|
||||
``` javascript
|
||||
|
@ -17,6 +23,18 @@
|
|||
{{js/2.output.js}}
|
||||
```
|
||||
|
||||
# js/3.output.js
|
||||
|
||||
``` javascript
|
||||
{{js/3.output.js}}
|
||||
```
|
||||
|
||||
# js/4.output.js
|
||||
|
||||
``` javascript
|
||||
{{js/4.output.js}}
|
||||
```
|
||||
|
||||
# Info
|
||||
|
||||
## Uncompressed
|
||||
|
|
|
@ -18,7 +18,7 @@ ChunkTemplate.prototype.render = function(chunk, moduleTemplate, dependencyTempl
|
|||
chunk.modules.forEach(function(module, idx) {
|
||||
if(idx != 0) source.add(",\n");
|
||||
source.add("\n/***/ " + module.id + ":\n");
|
||||
source.add(moduleTemplate.render(module, dependencyTemplates));
|
||||
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
||||
});
|
||||
source.add("\n\n");
|
||||
source.add(this.asString(this.renderFooter(chunk)));
|
||||
|
|
|
@ -11,7 +11,7 @@ function FunctionModuleTemplate(outputOptions, requestShortener) {
|
|||
}
|
||||
module.exports = FunctionModuleTemplate;
|
||||
|
||||
FunctionModuleTemplate.prototype.render = function(module, dependencyTemplates) {
|
||||
FunctionModuleTemplate.prototype.render = function(module, dependencyTemplates, chunk) {
|
||||
var source = new ConcatSource();
|
||||
if(this.outputOptions.pathinfo) {
|
||||
var req = module.readableIdentifier(this.requestShortener);
|
||||
|
|
|
@ -48,7 +48,7 @@ MainTemplate.prototype.renderModules = function renderModules(hash, chunk, modul
|
|||
chunk.modules.forEach(function(module, idx) {
|
||||
if(idx != 0) source.add(",\n");
|
||||
source.add("\n/***/ " + module.id + ":\n");
|
||||
source.add(moduleTemplate.render(module, dependencyTemplates));
|
||||
source.add(moduleTemplate.render(module, dependencyTemplates, chunk));
|
||||
});
|
||||
source.add("\n/******/ }");
|
||||
return source;
|
||||
|
|
|
@ -35,30 +35,36 @@ DedupePlugin.prototype.apply = function(compiler) {
|
|||
});
|
||||
compilation.plugin("after-optimize-chunks", function(chunks) {
|
||||
var entryChunks = chunks.filter(function(c) { return c.entry; });
|
||||
entryChunks.forEach(function(chunk) {
|
||||
entryChunks.forEach(function(chunk) { // for each entry chunk
|
||||
(function x(dups, roots, visited, chunk) {
|
||||
var currentDups = [];
|
||||
var currentRoots = [];
|
||||
chunk.modules.forEach(function(module) {
|
||||
if(module.duplicates) {
|
||||
if(!module.rootDuplicatesChunks)
|
||||
module.rootDuplicatesChunks = module.chunks.slice();
|
||||
var chunkIndex = module.rootDuplicatesChunks.indexOf(chunk);
|
||||
if(!module.rootDuplicates) module.rootDuplicates = [];
|
||||
var idx = currentDups.indexOf(module.duplicates);
|
||||
if(idx >= 0) {
|
||||
module.rootDuplicates = currentRoots[idx];
|
||||
module.rootDuplicates.push(module);
|
||||
module.rootDuplicates.commonModules = mergeCommonModules(module.rootDuplicates.commonModules, module.getAllModuleDependencies());
|
||||
module.rootDuplicates[chunkIndex] = currentRoots[idx];
|
||||
module.rootDuplicates[chunkIndex].push(module);
|
||||
module.rootDuplicates[chunkIndex].commonModules =
|
||||
mergeCommonModules(module.rootDuplicates[chunkIndex].commonModules, module.getAllModuleDependencies());
|
||||
} else {
|
||||
idx = dups.indexOf(module.duplicates);
|
||||
if(idx < 0) {
|
||||
module.rootDuplicates = [module];
|
||||
module.rootDuplicates.commonModules = module.getAllModuleDependencies();
|
||||
module.rootDuplicates.initialCcommonModulesLength = module.rootDuplicates.commonModules.length;
|
||||
module.rootDuplicates[chunkIndex] = [module];
|
||||
module.rootDuplicates[chunkIndex].commonModules = module.getAllModuleDependencies();
|
||||
module.rootDuplicates[chunkIndex].initialCommonModulesLength = module.rootDuplicates[chunkIndex].commonModules.length;
|
||||
dups = dups.concat([module.duplicates]);
|
||||
roots = roots.concat([module.rootDuplicates]);
|
||||
roots = roots.concat([module.rootDuplicates[chunkIndex]]);
|
||||
currentDups = currentDups.concat([module.duplicates]);
|
||||
currentRoots = currentRoots.concat([module.rootDuplicates]);
|
||||
currentRoots = currentRoots.concat([module.rootDuplicates[chunkIndex]]);
|
||||
} else {
|
||||
module.rootDuplicates = roots[idx];
|
||||
module.rootDuplicates.commonModules = mergeCommonModules(module.rootDuplicates.commonModules, module.getAllModuleDependencies());
|
||||
module.rootDuplicates[chunkIndex] = roots[idx];
|
||||
module.rootDuplicates[chunkIndex].commonModules =
|
||||
mergeCommonModules(module.rootDuplicates[chunkIndex].commonModules, module.getAllModuleDependencies());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +76,7 @@ DedupePlugin.prototype.apply = function(compiler) {
|
|||
|
||||
currentRoots.forEach(function(roots) {
|
||||
var commonModules = roots.commonModules;
|
||||
var initialLength = roots.initialCcommonModulesLength;
|
||||
var initialLength = roots.initialCommonModulesLength;
|
||||
if(initialLength !== commonModules.length) {
|
||||
var template = roots[0].createTemplate(commonModules);
|
||||
roots.template = template;
|
||||
|
@ -160,15 +166,18 @@ function DedupModuleTemplateDecorator(template) {
|
|||
this.template = template;
|
||||
}
|
||||
|
||||
DedupModuleTemplateDecorator.prototype.render = function(module, dependencyTemplates) {
|
||||
if(!module.rootDuplicates) return this.template.render(module, dependencyTemplates);
|
||||
if(module.rootDuplicates.template) {
|
||||
module.rootDuplicates.template.addReason(module, {
|
||||
DedupModuleTemplateDecorator.prototype.render = function(module, dependencyTemplates, chunk) {
|
||||
if(!module.rootDuplicatesChunks) return this.template.render(module, dependencyTemplates, chunk);
|
||||
var chunkIndex = module.rootDuplicatesChunks.indexOf(chunk);
|
||||
if(!module.rootDuplicates || !module.rootDuplicates[chunkIndex]) return this.template.render(module, dependencyTemplates, chunk);
|
||||
var rootDuplicates = module.rootDuplicates[chunkIndex];
|
||||
if(rootDuplicates.template) {
|
||||
rootDuplicates.template.addReason(module, {
|
||||
type: "template",
|
||||
request: module.request,
|
||||
templateModules: module.rootDuplicates.template.templateModules
|
||||
templateModules: rootDuplicates.template.templateModules
|
||||
});
|
||||
var array = [module.rootDuplicates.template.id].concat(module.getTemplateArguments(module.rootDuplicates.template.templateModules).map(function(module) {
|
||||
var array = [rootDuplicates.template.id].concat(module.getTemplateArguments(rootDuplicates.template.templateModules).map(function(module) {
|
||||
if(typeof module.id !== "number")
|
||||
return "(function webpackMissingModule() { throw new Error(" + JSON.stringify("Cannot find module") + "); }())"
|
||||
return module.id;
|
||||
|
@ -176,11 +185,11 @@ DedupModuleTemplateDecorator.prototype.render = function(module, dependencyTempl
|
|||
var source = new ConcatSource("[" + array.join(", ") + "]");
|
||||
return source;
|
||||
} else {
|
||||
module.rootDuplicates.sort(function(a, b) {
|
||||
rootDuplicates.sort(function(a, b) {
|
||||
return a.id - b.id;
|
||||
});
|
||||
if(module === module.rootDuplicates[0]) return this.template.render(module, dependencyTemplates);
|
||||
var source = new ConcatSource("" + module.rootDuplicates[0].id);
|
||||
if(module === rootDuplicates[0]) return this.template.render(module, dependencyTemplates, chunk);
|
||||
var source = new ConcatSource("" + rootDuplicates[0].id);
|
||||
return source;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "webpack",
|
||||
"version": "0.10.0-beta20",
|
||||
"version": "0.10.0-beta21",
|
||||
"author": "Tobias Koppers @sokra",
|
||||
"description": "Packs CommonJs/AMD/Labeled Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jade, coffee, css, less, ... and your custom stuff.",
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in New Issue