mirror of https://github.com/webpack/webpack.git
				
				
				
			more performance improvements
This commit is contained in:
		
							parent
							
								
									da29d21ae4
								
							
						
					
					
						commit
						f4ab7fc7e2
					
				|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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 + "."); | ||||||
|  |  | ||||||
|  | @ -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() { | ||||||
|  |  | ||||||
|  | @ -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)); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -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 = { | ||||||
|  |  | ||||||
|  | @ -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) { | ||||||
|  |  | ||||||
|  | @ -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() { | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|  |  | ||||||
|  | @ -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") | ||||||
|  | 		); | ||||||
|  | 	}); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -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) { | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
| 			}); | 			}); | ||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -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"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -471,6 +471,9 @@ | ||||||
|               "type": "object" |               "type": "object" | ||||||
|             } |             } | ||||||
|           ] |           ] | ||||||
|  |         }, | ||||||
|  |         "useSyncFileSystemCalls": { | ||||||
|  |           "type": "boolean" | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|       "type": "object" |       "type": "object" | ||||||
|  |  | ||||||
|  | @ -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), | ||||||
|  |  | ||||||
|  | @ -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), | ||||||
|  |  | ||||||
|  | @ -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] | ||||||
|  |  | ||||||
|  | @ -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] | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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] | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue