more performance improvements

This commit is contained in:
Tobias Koppers 2016-12-04 23:47:19 +01:00
parent da29d21ae4
commit f4ab7fc7e2
21 changed files with 226 additions and 147 deletions

View File

@ -7,7 +7,7 @@ try {
fs.mkdirSync(fixtures); fs.mkdirSync(fixtures);
} catch(e) {} } catch(e) {}
for(var i = 0; i < 1000; i++) { for(var i = 0; i < 10000; i++) {
var source = []; var source = [];
if(i > 8) if(i > 8)
source.push("require(" + JSON.stringify("./" + (i / 8 | 0) + ".js") + ");"); source.push("require(" + JSON.stringify("./" + (i / 8 | 0) + ".js") + ");");
@ -21,7 +21,7 @@ for(var i = 0; i < 1000; i++) {
fs.writeFileSync(path.join(fixtures, i + ".js"), source.join("\n"), "utf-8"); fs.writeFileSync(path.join(fixtures, i + ".js"), source.join("\n"), "utf-8");
} }
for(var i = 0; i < 1000; i++) { for(var i = 0; i < 10000; i++) {
var source = []; var source = [];
source.push("require.ensure([], function(require) {"); source.push("require.ensure([], function(require) {");
if(i > 8) if(i > 8)

View File

@ -1,7 +1,6 @@
var path = require("path"); var path = require("path");
var fs = require("fs"); var fs = require("fs");
fs.existsSync = fs.existsSync || path.existsSync; fs.existsSync = fs.existsSync || path.existsSync;
var resolve = require("enhanced-resolve");
var interpret = require("interpret"); var interpret = require("interpret");
var WebpackOptionsDefaulter = require("../lib/WebpackOptionsDefaulter"); var WebpackOptionsDefaulter = require("../lib/WebpackOptionsDefaulter");
@ -249,6 +248,7 @@ module.exports = function(yargs, argv, convertOptions) {
var path; var path;
try { try {
var resolve = require("enhanced-resolve");
path = resolve.sync(process.cwd(), name); path = resolve.sync(process.cwd(), name);
} catch(e) { } catch(e) {
console.log("Cannot resolve plugin " + name + "."); console.log("Cannot resolve plugin " + name + ".");

View File

@ -316,7 +316,9 @@ Chunk.prototype.getChunkMaps = function(includeEntries, realHash) {
}; };
function byId(a, b) { function byId(a, b) {
return a.id - b.id; if(a.id < b.id) return -1;
if(b.id < a.id) return 1;
return 0;
} }
Chunk.prototype.sortItems = function() { Chunk.prototype.sortItems = function() {
@ -332,6 +334,8 @@ Chunk.prototype.sortItems = function() {
if(origin.reasons) if(origin.reasons)
origin.reasons.sort(); origin.reasons.sort();
}); });
this.parents.sort(byId);
this.chunks.sort(byId);
}; };
Chunk.prototype.toString = function() { Chunk.prototype.toString = function() {

View File

@ -116,7 +116,7 @@ Compilation.prototype.findModule = function(identifier) {
Compilation.prototype.buildModule = function(module, optional, origin, dependencies, thisCallback) { Compilation.prototype.buildModule = function(module, optional, origin, dependencies, thisCallback) {
var _this = this; var _this = this;
_this.applyPlugins("build-module", module); _this.applyPlugins1("build-module", module);
if(module.building) return module.building.push(thisCallback); if(module.building) return module.building.push(thisCallback);
var building = module.building = [thisCallback]; var building = module.building = [thisCallback];
@ -142,10 +142,10 @@ Compilation.prototype.buildModule = function(module, optional, origin, dependenc
}, this); }, this);
module.dependencies.sort(Dependency.compare); module.dependencies.sort(Dependency.compare);
if(err) { if(err) {
_this.applyPlugins("failed-module", module, err); _this.applyPlugins2("failed-module", module, err);
return callback(err); return callback(err);
} }
_this.applyPlugins("succeed-module", module); _this.applyPlugins1("succeed-module", module);
return callback(); return callback();
}); });
}; };
@ -509,7 +509,7 @@ Compilation.prototype.finish = function finish() {
}; };
Compilation.prototype.unseal = function unseal() { Compilation.prototype.unseal = function unseal() {
this.applyPlugins("unseal"); this.applyPlugins0("unseal");
this.chunks.length = 0; this.chunks.length = 0;
this.namedChunks = {}; this.namedChunks = {};
this.additionalChunkAssets.length = 0; this.additionalChunkAssets.length = 0;
@ -533,13 +533,8 @@ Compilation.prototype.seal = function seal(callback) {
chunk.addModule(module); chunk.addModule(module);
module.addChunk(chunk); module.addChunk(chunk);
chunk.entryModule = module; chunk.entryModule = module;
if(typeof module.index !== "number") { self.assignIndex(module);
module.index = self.nextFreeModuleIndex++;
}
self.processDependenciesBlockForChunk(module, chunk); self.processDependenciesBlockForChunk(module, chunk);
if(typeof module.index2 !== "number") {
module.index2 = self.nextFreeModuleIndex2++;
}
}, self); }, self);
self.sortModules(self.modules); self.sortModules(self.modules);
self.applyPlugins0("optimize"); self.applyPlugins0("optimize");
@ -583,7 +578,7 @@ Compilation.prototype.seal = function seal(callback) {
self.applyPlugins1("optimize-chunk-ids", self.chunks); self.applyPlugins1("optimize-chunk-ids", self.chunks);
self.applyPlugins1("after-optimize-chunk-ids", self.chunks); self.applyPlugins1("after-optimize-chunk-ids", self.chunks);
self.sortItemswithChunkIds(); self.sortItemsWithChunkIds();
if(shouldRecord) if(shouldRecord)
self.applyPlugins2("record-modules", self.modules, self.records); self.applyPlugins2("record-modules", self.modules, self.records);
@ -676,47 +671,112 @@ Compilation.prototype.addChunk = function addChunk(name, module, loc) {
return chunk; return chunk;
}; };
Compilation.prototype.assignIndex = function assignIndex(module) {
var _this = this;
function assignIndexToModule(module) {
// enter module
if(typeof module.index !== "number") {
module.index = _this.nextFreeModuleIndex++;
queue.push(function() {
// leave module
module.index2 = _this.nextFreeModuleIndex2++;
});
// enter it as block
assignIndexToDependencyBlock(module);
}
}
function assignIndexToDependency(dependency) {
if(dependency.module) {
queue.push(function() {
assignIndexToModule(dependency.module);
});
}
}
function assignIndexToDependencyBlock(block) {
var allDependencies = [];
function iteratorDependency(d) {
allDependencies.push(d);
}
function iteratorBlock(b) {
queue.push(function() {
assignIndexToDependencyBlock(b);
});
}
if(block.variables) {
block.variables.forEach(function(v) {
v.dependencies.forEach(iteratorDependency);
});
}
if(block.dependencies) {
block.dependencies.forEach(iteratorDependency);
}
if(block.blocks) {
block.blocks.slice().reverse().forEach(iteratorBlock, this);
}
allDependencies.reverse();
allDependencies.forEach(function(d) {
queue.push(function() {
assignIndexToDependency(d);
});
});
}
var queue = [function() {
assignIndexToModule(module);
}];
while(queue.length) {
queue.pop()();
}
};
Compilation.prototype.processDependenciesBlockForChunk = function processDependenciesBlockForChunk(block, chunk) { Compilation.prototype.processDependenciesBlockForChunk = function processDependenciesBlockForChunk(block, chunk) {
if(block.variables) { var queue = [[block, chunk]];
block.variables.forEach(function(v) { while(queue.length) {
v.dependencies.forEach(iteratorDependency, this); var queueItem = queue.pop();
}, this); block = queueItem[0];
chunk = queueItem[1];
if(block.variables) {
block.variables.forEach(function(v) {
v.dependencies.forEach(iteratorDependency, this);
}, this);
}
if(block.dependencies) {
block.dependencies.forEach(iteratorDependency, this);
}
if(block.blocks) {
block.blocks.forEach(iteratorBlock, this);
}
} }
if(block.dependencies) {
block.dependencies.forEach(iteratorDependency, this); function iteratorBlock(b) {
} var c;
if(block.blocks) { if(!b.chunks) {
block.blocks.forEach(function(b) { c = this.addChunk(b.chunkName, b.module, b.loc);
var c; b.chunks = [c];
if(!b.chunks) { c.addBlock(b);
c = this.addChunk(b.chunkName, b.module, b.loc); } else {
b.chunks = [c]; c = b.chunks[0];
c.addBlock(b); }
} else { chunk.addChunk(c);
c = b.chunks[0]; c.addParent(chunk);
} queue.push([b, c]);
chunk.addChunk(c);
c.addParent(chunk);
this.processDependenciesBlockForChunk(b, c);
}, this);
} }
function iteratorDependency(d) { function iteratorDependency(d) {
if(!d.module) { if(!d.module) {
return; return;
} }
if(typeof d.module.index !== "number") {
d.module.index = this.nextFreeModuleIndex++;
}
if(d.weak) { if(d.weak) {
return; return;
} }
if(chunk.addModule(d.module)) { if(chunk.addModule(d.module)) {
d.module.addChunk(chunk); d.module.addChunk(chunk);
this.processDependenciesBlockForChunk(d.module, chunk); queue.push([d.module, chunk]);
}
if(typeof d.module.index2 !== "number") {
d.module.index2 = this.nextFreeModuleIndex2++;
} }
} }
}; };
@ -842,11 +902,14 @@ Compilation.prototype.sortItemsWithModuleIds = function sortItemsWithModuleIds()
}); });
}; };
Compilation.prototype.sortItemswithChunkIds = function sortItemswithChunkIds() { Compilation.prototype.sortItemsWithChunkIds = function sortItemsWithChunkIds() {
this.chunks.sort(byId); this.chunks.sort(byId);
this.modules.forEach(function(module) { this.modules.forEach(function(module) {
module.sortItems(); module.sortItems();
}); });
this.chunks.forEach(function(chunk) {
chunk.sortItems();
});
}; };
Compilation.prototype.summarizeDependencies = function summarizeDependencies() { Compilation.prototype.summarizeDependencies = function summarizeDependencies() {
@ -924,7 +987,7 @@ Compilation.prototype.createHash = function createHash() {
} else { } else {
this.chunkTemplate.updateHashForChunk(chunkHash); this.chunkTemplate.updateHashForChunk(chunkHash);
} }
this.applyPlugins("chunk-hash", chunk, chunkHash); this.applyPlugins2("chunk-hash", chunk, chunkHash);
chunk.hash = chunkHash.digest(hashDigest); chunk.hash = chunkHash.digest(hashDigest);
hash.update(chunk.hash); hash.update(chunk.hash);
chunk.renderedHash = chunk.hash.substr(0, hashDigestLength); chunk.renderedHash = chunk.hash.substr(0, hashDigestLength);
@ -949,7 +1012,7 @@ Compilation.prototype.createModuleAssets = function createModuleAssets() {
var cacheAssetsAndApplyPlugins = function cacheAssetsAndApplyPlugins(name) { var cacheAssetsAndApplyPlugins = function cacheAssetsAndApplyPlugins(name) {
var file = this.getPath(name); var file = this.getPath(name);
this.assets[file] = module.assets[name]; this.assets[file] = module.assets[name];
this.applyPlugins("module-asset", module, file); this.applyPlugins2("module-asset", module, file);
} }
for(var i = 0; i < this.modules.length; i++) { for(var i = 0; i < this.modules.length; i++) {
@ -999,7 +1062,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
throw new Error("Conflict: Multiple assets emit to the same filename '" + file + "'"); throw new Error("Conflict: Multiple assets emit to the same filename '" + file + "'");
this.assets[file] = source; this.assets[file] = source;
chunk.files.push(file); chunk.files.push(file);
this.applyPlugins("chunk-asset", chunk, file); this.applyPlugins2("chunk-asset", chunk, file);
} catch(err) { } catch(err) {
this.errors.push(new ChunkRenderError(chunk, file || filenameTemplate, err)); this.errors.push(new ChunkRenderError(chunk, file || filenameTemplate, err));
} }

View File

@ -156,9 +156,9 @@ function Compiler() {
this.contextTimestamps = {}; this.contextTimestamps = {};
this.resolvers = { this.resolvers = {
normal: new Resolver(null), normal: null,
loader: new Resolver(null), loader: null,
context: new Resolver(null) context: null
}; };
var deprecationReported = false; var deprecationReported = false;
this.parser = { this.parser = {

View File

@ -15,53 +15,65 @@ FlagDependencyUsagePlugin.prototype.apply = function(compiler) {
module.used = false; module.used = false;
}) })
var queue = [];
compilation.chunks.forEach(function(chunk) { compilation.chunks.forEach(function(chunk) {
if(chunk.entryModule) { if(chunk.entryModule) {
processModule(chunk.entryModule, true); processModule(chunk.entryModule, true);
} }
}); });
}); while(queue.length) {
var queueItem = queue.pop();
processDependenciesBlock(queueItem[0], queueItem[1]);
}
function processModule(module, usedExports) { function processModule(module, usedExports) {
module.used = true; module.used = true;
if(usedExports === true || module.usedExports === true) if(module.usedExports === true)
module.usedExports = true; return;
else if(Array.isArray(usedExports)) else if(usedExports === true)
module.usedExports = addToSet(module.usedExports || [], usedExports) module.usedExports = true;
else if(Array.isArray(module.usedExports)) else if(Array.isArray(usedExports)) {
module.usedExports = module.usedExports; var old = module.usedExports ? module.usedExports.length : -1;
else module.usedExports = addToSet(module.usedExports || [], usedExports);
module.usedExports = false; if(module.usedExports.length === old)
return;
}
else if(Array.isArray(module.usedExports))
return;
else
module.usedExports = false;
processDependenciesBlock(module, module.usedExports); queue.push([module, module.usedExports]);
} }
function processDependenciesBlock(depBlock, usedExports) { function processDependenciesBlock(depBlock, usedExports) {
depBlock.dependencies.forEach(function(dep) { depBlock.dependencies.forEach(function(dep) {
processDependency(dep, usedExports);
});
depBlock.variables.forEach(function(variable) {
variable.dependencies.forEach(function(dep) {
processDependency(dep, usedExports); processDependency(dep, usedExports);
}); });
}); depBlock.variables.forEach(function(variable) {
depBlock.blocks.forEach(function(block) { variable.dependencies.forEach(function(dep) {
processDependenciesBlock(block, usedExports); processDependency(dep, usedExports);
}); });
} });
depBlock.blocks.forEach(function(block) {
function processDependency(dep, usedExports) { queue.push([block, usedExports]);
var reference = dep.getReference && dep.getReference(); });
if(!reference) return;
var module = reference.module;
var importedNames = reference.importedNames;
var oldUsed = module.used;
var oldUsedExports = module.usedExports;
if(!oldUsed || (importedNames && (!oldUsedExports || !isSubset(oldUsedExports, importedNames)))) {
processModule(module, importedNames);
} }
}
function processDependency(dep, usedExports) {
var reference = dep.getReference && dep.getReference();
if(!reference) return;
var module = reference.module;
var importedNames = reference.importedNames;
var oldUsed = module.used;
var oldUsedExports = module.usedExports;
if(!oldUsed || (importedNames && (!oldUsedExports || !isSubset(oldUsedExports, importedNames)))) {
processModule(module, importedNames);
}
}
});
function addToSet(a, b) { function addToSet(a, b) {
b.forEach(function(item) { b.forEach(function(item) {

View File

@ -183,7 +183,7 @@ function NormalModuleFactory(context, resolvers, options) {
], function(err, results) { ], function(err, results) {
if(err) return callback(err); if(err) return callback(err);
loaders = results[0].concat(loaders).concat(results[1]).concat(results[2]); loaders = results[0].concat(loaders).concat(results[1]).concat(results[2]);
onDoneResolving(); process.nextTick(onDoneResolving);
}); });
function onDoneResolving() { function onDoneResolving() {

View File

@ -283,15 +283,16 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
} }
compiler.applyPlugins("after-plugins", compiler); compiler.applyPlugins("after-plugins", compiler);
if(!compiler.inputFileSystem) throw new Error("No input filesystem provided");
compiler.resolvers.normal = ResolverFactory.createResolver(assign({ compiler.resolvers.normal = ResolverFactory.createResolver(assign({
resolver: compiler.resolvers.normal fileSystem: compiler.inputFileSystem
}, options.resolve)); }, options.resolve));
compiler.resolvers.context = ResolverFactory.createResolver(assign({ compiler.resolvers.context = ResolverFactory.createResolver(assign({
resolver: compiler.resolvers.context, fileSystem: compiler.inputFileSystem,
resolveToContext: true resolveToContext: true
}, options.resolve)); }, options.resolve));
compiler.resolvers.loader = ResolverFactory.createResolver(assign({ compiler.resolvers.loader = ResolverFactory.createResolver(assign({
resolver: compiler.resolvers.loader fileSystem: compiler.inputFileSystem
}, options.resolveLoader)); }, options.resolveLoader));
compiler.applyPlugins("after-resolvers", compiler); compiler.applyPlugins("after-resolvers", compiler);
return options; return options;

View File

@ -118,18 +118,20 @@ AMDPlugin.prototype.apply = function(compiler) {
setTypeof("require", "function"); setTypeof("require", "function");
}); });
}); });
compiler.resolvers.normal.apply( compiler.plugin("after-resolvers", function() {
new AliasPlugin("described-resolve", { compiler.resolvers.normal.apply(
name: "amdefine", new AliasPlugin("described-resolve", {
alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") name: "amdefine",
}, "resolve"), alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
new AliasPlugin("described-resolve", { }, "resolve"),
name: "webpack amd options", new AliasPlugin("described-resolve", {
alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js") name: "webpack amd options",
}, "resolve"), alias: path.join(__dirname, "..", "..", "buildin", "amd-options.js")
new AliasPlugin("described-resolve", { }, "resolve"),
name: "webpack amd define", new AliasPlugin("described-resolve", {
alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js") name: "webpack amd define",
}, "resolve") alias: path.join(__dirname, "..", "..", "buildin", "amd-define.js")
); }, "resolve")
);
});
}; };

View File

@ -10,11 +10,8 @@ var CachedInputFileSystem = require("enhanced-resolve/lib/CachedInputFileSystem"
function NodeEnvironmentPlugin() {} function NodeEnvironmentPlugin() {}
module.exports = NodeEnvironmentPlugin; module.exports = NodeEnvironmentPlugin;
NodeEnvironmentPlugin.prototype.apply = function(compiler) { NodeEnvironmentPlugin.prototype.apply = function(compiler) {
compiler.inputFileSystem = new NodeJsInputFileSystem(); compiler.inputFileSystem = new CachedInputFileSystem(new NodeJsInputFileSystem(), 60000);
var inputFileSystem = compiler.inputFileSystem = new CachedInputFileSystem(compiler.inputFileSystem, 60000); var inputFileSystem = compiler.inputFileSystem;
compiler.resolvers.normal.fileSystem = compiler.inputFileSystem;
compiler.resolvers.context.fileSystem = compiler.inputFileSystem;
compiler.resolvers.loader.fileSystem = compiler.inputFileSystem;
compiler.outputFileSystem = new NodeOutputFileSystem(); compiler.outputFileSystem = new NodeOutputFileSystem();
compiler.watchFileSystem = new NodeWatchFileSystem(compiler.inputFileSystem); compiler.watchFileSystem = new NodeWatchFileSystem(compiler.inputFileSystem);
compiler.plugin("before-run", function(compiler, callback) { compiler.plugin("before-run", function(compiler, callback) {

View File

@ -62,8 +62,8 @@ OccurrenceOrderPlugin.prototype.apply = function(compiler) {
}); });
// TODO refactor to Map // TODO refactor to Map
modules.forEach(function(m) { modules.forEach(function(m) {
delete m.__OccurenceOrderPlugin_occursInEntry; m.__OccurenceOrderPlugin_occursInEntry = undefined;
delete m.__OccurenceOrderPlugin_occurs; m.__OccurenceOrderPlugin_occurs = undefined;
}); });
}); });
compilation.plugin("optimize-chunk-order", function(chunks) { compilation.plugin("optimize-chunk-order", function(chunks) {
@ -104,7 +104,7 @@ OccurrenceOrderPlugin.prototype.apply = function(compiler) {
}); });
// TODO refactor to Map // TODO refactor to Map
chunks.forEach(function(c) { chunks.forEach(function(c) {
delete c.__OccurenceOrderPlugin_occursInEntry; c.__OccurenceOrderPlugin_occursInEntry = undefined;
}); });
}); });
}); });

View File

@ -9,8 +9,5 @@ function WebEnvironmentPlugin(inputFileSystem, outputFileSystem) {
module.exports = WebEnvironmentPlugin; module.exports = WebEnvironmentPlugin;
WebEnvironmentPlugin.prototype.apply = function(compiler) { WebEnvironmentPlugin.prototype.apply = function(compiler) {
var inputFileSystem = compiler.inputFileSystem = this.inputFileSystem; var inputFileSystem = compiler.inputFileSystem = this.inputFileSystem;
compiler.resolvers.normal.fileSystem = inputFileSystem;
compiler.resolvers.context.fileSystem = inputFileSystem;
compiler.resolvers.loader.fileSystem = inputFileSystem;
compiler.outputFileSystem = this.outputFileSystem; compiler.outputFileSystem = this.outputFileSystem;
}; };

View File

@ -25,11 +25,11 @@ function webpack(options, callback) {
new WebpackOptionsDefaulter().process(options); new WebpackOptionsDefaulter().process(options);
compiler = new Compiler(); compiler = new Compiler();
compiler.options = options;
compiler.options = new WebpackOptionsApply().process(options, compiler);
new NodeEnvironmentPlugin().apply(compiler); new NodeEnvironmentPlugin().apply(compiler);
compiler.applyPlugins("environment"); compiler.applyPlugins("environment");
compiler.applyPlugins("after-environment"); compiler.applyPlugins("after-environment");
compiler.options = options;
compiler.options = new WebpackOptionsApply().process(options, compiler);
} else { } else {
throw new Error("Invalid argument: options"); throw new Error("Invalid argument: options");
} }

View File

@ -471,6 +471,9 @@
"type": "object" "type": "object"
} }
] ]
},
"useSyncFileSystemCalls": {
"type": "boolean"
} }
}, },
"type": "object" "type": "object"

View File

@ -23,8 +23,8 @@ describe("Compiler (caching)", function() {
}; };
var c = new Compiler(); var c = new Compiler();
c.options = new WebpackOptionsApply().process(options, c);
new NodeEnvironmentPlugin().apply(c); new NodeEnvironmentPlugin().apply(c);
c.options = new WebpackOptionsApply().process(options, c);
var files = {}; var files = {};
c.outputFileSystem = { c.outputFileSystem = {
join: path.join.bind(path), join: path.join.bind(path),

View File

@ -20,8 +20,8 @@ describe("Compiler", function() {
}; };
var c = new Compiler(); var c = new Compiler();
c.options = new WebpackOptionsApply().process(options, c);
new NodeEnvironmentPlugin().apply(c); new NodeEnvironmentPlugin().apply(c);
c.options = new WebpackOptionsApply().process(options, c);
var files = {}; var files = {};
c.outputFileSystem = { c.outputFileSystem = {
join: path.join.bind(path), join: path.join.bind(path),

View File

@ -1,21 +1,21 @@
Hash: 8e46421d7f7a7d266a00 Hash: 94ea214f5f8dfcaa01e7
Time: Xms Time: Xms
Asset Size Chunks Chunk Names Asset Size Chunks Chunk Names
48c8b1dae03a37363ec8.js 4.24 kB 1 [emitted] 48c8b1dae03a37363ec8.js 4.24 kB 1 [emitted]
2fa7af5012a3d8b778dd.js 2.22 kB 2 [emitted] 7ae90280671106fd3e86.js 2.22 kB 2 [emitted]
a5b577236621262c2bcf.js 1.93 kB 3 [emitted] 9356e9a0fb00a97b2e73.js 1.93 kB 3 [emitted]
88d78642a86768757078.js 977 bytes 4 [emitted] 88d78642a86768757078.js 977 bytes 4 [emitted]
Entrypoint main = 48c8b1dae03a37363ec8.js a5b577236621262c2bcf.js 88d78642a86768757078.js 2fa7af5012a3d8b778dd.js Entrypoint main = 48c8b1dae03a37363ec8.js 9356e9a0fb00a97b2e73.js 88d78642a86768757078.js 7ae90280671106fd3e86.js
chunk {1} 48c8b1dae03a37363ec8.js 1.8 kB [entry] [rendered] chunk {1} 48c8b1dae03a37363ec8.js 1.8 kB [entry] [rendered]
> aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js > aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js
[0] (webpack)/test/statsCases/aggressive-splitting-entry/b.js 899 bytes {1} [built] [0] (webpack)/test/statsCases/aggressive-splitting-entry/b.js 899 bytes {1} [built]
[1] (webpack)/test/statsCases/aggressive-splitting-entry/c.js 899 bytes {1} [built] [1] (webpack)/test/statsCases/aggressive-splitting-entry/c.js 899 bytes {1} [built]
chunk {2} 2fa7af5012a3d8b778dd.js 1.91 kB [initial] [rendered] chunk {2} 7ae90280671106fd3e86.js 1.91 kB [initial] [rendered]
> aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js > aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js
[4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js 112 bytes {2} [built] [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js 112 bytes {2} [built]
[6] (webpack)/test/statsCases/aggressive-splitting-entry/f.js 899 bytes {2} [built] [6] (webpack)/test/statsCases/aggressive-splitting-entry/f.js 899 bytes {2} [built]
[7] (webpack)/test/statsCases/aggressive-splitting-entry/g.js 899 bytes {2} [built] [7] (webpack)/test/statsCases/aggressive-splitting-entry/g.js 899 bytes {2} [built]
chunk {3} a5b577236621262c2bcf.js 1.8 kB [initial] [rendered] [recorded] chunk {3} 9356e9a0fb00a97b2e73.js 1.8 kB [initial] [rendered] [recorded]
> aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js > aggressive-splitted main [4] (webpack)/test/statsCases/aggressive-splitting-entry/index.js
[2] (webpack)/test/statsCases/aggressive-splitting-entry/d.js 899 bytes {3} [built] [2] (webpack)/test/statsCases/aggressive-splitting-entry/d.js 899 bytes {3} [built]
[5] (webpack)/test/statsCases/aggressive-splitting-entry/a.js 899 bytes {3} [built] [5] (webpack)/test/statsCases/aggressive-splitting-entry/a.js 899 bytes {3} [built]

View File

@ -1,49 +1,49 @@
Hash: a562f01542f9b2e2ad89 Hash: a724b9eabbc88a7196a7
Time: Xms Time: Xms
Asset Size Chunks Chunk Names Asset Size Chunks Chunk Names
7434ce273df5c166f742.js 1.93 kB 0 [emitted] fc930a2adf8206ea2dc5.js 1.93 kB 0 [emitted]
11324f155de813ceb658.js 1.95 kB 1 [emitted] cd45585186d59208602b.js 1.95 kB 1 [emitted]
5ae9e18455b866684bd0.js 1.94 kB 2 [emitted] 6b94c231e016c5aaccdb.js 1.94 kB 2 [emitted]
e91ec4902ca3057b42bb.js 1.93 kB 3 [emitted] fd0985cee894c4f3f1a6.js 1.93 kB 3 [emitted]
0947f0875d56ab0bfe02.js 977 bytes 4 [emitted] d9fc46873c8ea924b895.js 977 bytes 4 [emitted]
6335d9dcc7fa048743b7.js 7.2 kB 6 [emitted] main 90b55464dc36b9c472a9.js 7.2 kB 6 [emitted] main
cf500be0e585f01d2ccb.js 983 bytes 9 [emitted] b08c507d4e1e05cbab45.js 983 bytes 9 [emitted]
a7bfb642a544b4302cc4.js 975 bytes 11 [emitted] 5d50e858fe6e559aa47c.js 975 bytes 11 [emitted]
Entrypoint main = 6335d9dcc7fa048743b7.js Entrypoint main = 90b55464dc36b9c472a9.js
chunk {0} 7434ce273df5c166f742.js 1.8 kB {6} [recorded] chunk {0} fc930a2adf8206ea2dc5.js 1.8 kB {6}
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72
[5] (webpack)/test/statsCases/aggressive-splitting-on-demand/f.js 899 bytes {0} [built] [5] (webpack)/test/statsCases/aggressive-splitting-on-demand/f.js 899 bytes {0} [built]
[6] (webpack)/test/statsCases/aggressive-splitting-on-demand/g.js 901 bytes {0} [built] [6] (webpack)/test/statsCases/aggressive-splitting-on-demand/g.js 901 bytes {0} [built]
chunk {1} 11324f155de813ceb658.js 1.8 kB {6} chunk {1} cd45585186d59208602b.js 1.8 kB {6} [recorded]
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 3:0-30 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 3:0-30
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72
[3] (webpack)/test/statsCases/aggressive-splitting-on-demand/d.js 899 bytes {1} [built] [3] (webpack)/test/statsCases/aggressive-splitting-on-demand/d.js 899 bytes {1} [built]
[4] (webpack)/test/statsCases/aggressive-splitting-on-demand/e.js 899 bytes {1} [built] [4] (webpack)/test/statsCases/aggressive-splitting-on-demand/e.js 899 bytes {1} [built]
chunk {2} 5ae9e18455b866684bd0.js 1.8 kB {6} [recorded] chunk {2} 6b94c231e016c5aaccdb.js 1.8 kB {6}
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72
[10] (webpack)/test/statsCases/aggressive-splitting-on-demand/j.js 901 bytes {2} [built] [10] (webpack)/test/statsCases/aggressive-splitting-on-demand/j.js 901 bytes {2} [built]
[11] (webpack)/test/statsCases/aggressive-splitting-on-demand/k.js 899 bytes {2} [built] [11] (webpack)/test/statsCases/aggressive-splitting-on-demand/k.js 899 bytes {2} [built]
chunk {3} e91ec4902ca3057b42bb.js 1.8 kB {6} chunk {3} fd0985cee894c4f3f1a6.js 1.8 kB {6} [recorded]
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 4:0-51
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72
[7] (webpack)/test/statsCases/aggressive-splitting-on-demand/h.js 899 bytes {3} [built] [7] (webpack)/test/statsCases/aggressive-splitting-on-demand/h.js 899 bytes {3} [built]
[8] (webpack)/test/statsCases/aggressive-splitting-on-demand/i.js 899 bytes {3} [built] [8] (webpack)/test/statsCases/aggressive-splitting-on-demand/i.js 899 bytes {3} [built]
chunk {4} 0947f0875d56ab0bfe02.js 899 bytes {6} [rendered] chunk {4} d9fc46873c8ea924b895.js 899 bytes {6}
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 2:0-23 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 2:0-23
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 3:0-30 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 3:0-30
[2] (webpack)/test/statsCases/aggressive-splitting-on-demand/c.js 899 bytes {4} [built] [2] (webpack)/test/statsCases/aggressive-splitting-on-demand/c.js 899 bytes {4} [built]
chunk {6} 6335d9dcc7fa048743b7.js (main) 248 bytes [entry] [rendered] chunk {6} 90b55464dc36b9c472a9.js (main) 248 bytes [entry]
> main [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js > main [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js
[9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 248 bytes {6} [built] [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 248 bytes {6} [built]
chunk {9} cf500be0e585f01d2ccb.js 899 bytes {6} chunk {9} b08c507d4e1e05cbab45.js 899 bytes {6}
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 2:0-23 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 2:0-23
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 5:0-44
> aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72 > aggressive-splitted duplicate [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 6:0-72
[1] (webpack)/test/statsCases/aggressive-splitting-on-demand/b.js 899 bytes {9} [built] [1] (webpack)/test/statsCases/aggressive-splitting-on-demand/b.js 899 bytes {9} [built]
chunk {11} a7bfb642a544b4302cc4.js 899 bytes {6} chunk {11} 5d50e858fe6e559aa47c.js 899 bytes {6}
> [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 1:0-16 > [9] (webpack)/test/statsCases/aggressive-splitting-on-demand/index.js 1:0-16
[0] (webpack)/test/statsCases/aggressive-splitting-on-demand/a.js 899 bytes {11} [built] [0] (webpack)/test/statsCases/aggressive-splitting-on-demand/a.js 899 bytes {11} [built]

View File

@ -1,4 +1,4 @@
Hash: 5957a4911072fb217ca1 Hash: 2f2e1a6509026c675e46
Time: Xms Time: Xms
Asset Size Chunks Chunk Names Asset Size Chunks Chunk Names
main.js 2.64 kB 0 [emitted] main main.js 2.64 kB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: 2c7426d5dd5764a5cfe8 Hash: 98677d85dd05d16cbe7f
Time: Xms Time: Xms
Asset Size Chunks Chunk Names Asset Size Chunks Chunk Names
0.js 220 bytes 0 [emitted] cir1 0.js 220 bytes 0 [emitted] cir1
@ -9,7 +9,7 @@ Time: Xms
5.js 293 bytes 5, 3 [emitted] cir2 from cir1 5.js 293 bytes 5, 3 [emitted] cir2 from cir1
6.js 78 bytes 6 [emitted] ac in ab 6.js 78 bytes 6 [emitted] ac in ab
main.js 6.45 kB 7 [emitted] main main.js 6.45 kB 7 [emitted] main
chunk {0} 0.js (cir1) 81 bytes {7} {5} {3} [rendered] chunk {0} 0.js (cir1) 81 bytes {3} {5} {7} [rendered]
> duplicate cir1 from cir2 [3] (webpack)/test/statsCases/optimize-chunks/circular2.js 1:0-79 > duplicate cir1 from cir2 [3] (webpack)/test/statsCases/optimize-chunks/circular2.js 1:0-79
> duplicate cir1 [8] (webpack)/test/statsCases/optimize-chunks/index.js 13:0-54 > duplicate cir1 [8] (webpack)/test/statsCases/optimize-chunks/index.js 13:0-54
[2] (webpack)/test/statsCases/optimize-chunks/circular1.js 81 bytes {0} [built] [2] (webpack)/test/statsCases/optimize-chunks/circular1.js 81 bytes {0} [built]
@ -25,7 +25,7 @@ chunk {2} 2.js (ab) 0 bytes {7} [rendered]
chunk {3} 3.js (cir2) 81 bytes {7} [rendered] chunk {3} 3.js (cir2) 81 bytes {7} [rendered]
> cir2 [8] (webpack)/test/statsCases/optimize-chunks/index.js 14:0-54 > cir2 [8] (webpack)/test/statsCases/optimize-chunks/index.js 14:0-54
[3] (webpack)/test/statsCases/optimize-chunks/circular2.js 81 bytes {3} {5} [built] [3] (webpack)/test/statsCases/optimize-chunks/circular2.js 81 bytes {3} {5} [built]
chunk {4} 4.js (chunk) 0 bytes {6} {1} [rendered] chunk {4} 4.js (chunk) 0 bytes {1} {6} [rendered]
> chunk [8] (webpack)/test/statsCases/optimize-chunks/index.js 3:2-4:13 > chunk [8] (webpack)/test/statsCases/optimize-chunks/index.js 3:2-4:13
> chunk [8] (webpack)/test/statsCases/optimize-chunks/index.js 9:1-10:12 > chunk [8] (webpack)/test/statsCases/optimize-chunks/index.js 9:1-10:12
[4] (webpack)/test/statsCases/optimize-chunks/modules/c.js 0 bytes {4} {6} [built] [4] (webpack)/test/statsCases/optimize-chunks/modules/c.js 0 bytes {4} {6} [built]

View File

@ -1,4 +1,4 @@
Hash: 37c14a3d270eb3a66a74 Hash: e94a2c6bee98efb02ae8
Time: Xms Time: Xms
Asset Size Chunks Chunk Names Asset Size Chunks Chunk Names
bundle.js 7.14 kB 0 [emitted] main bundle.js 7.14 kB 0 [emitted] main