complexer dedupe example and fixed bugs

This commit is contained in:
Tobias Koppers 2013-06-14 15:13:44 +02:00
parent a9cb6256b3
commit a91cff49b6
8 changed files with 428 additions and 95 deletions

View File

@ -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
```

View File

@ -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"]);

View File

@ -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

View File

@ -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)));

View File

@ -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);

View File

@ -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;

View File

@ -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;
}
};

View File

@ -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": {