From 8e3be48da400e66323fed1d4296091559ade11a8 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 5 Jun 2018 23:38:29 +0200 Subject: [PATCH] allow to disable wasm import mangle disable it by default (temporary) --- lib/WebpackOptionsApply.js | 16 +- lib/WebpackOptionsDefaulter.js | 1 + lib/node/ReadFileCompileWasmTemplatePlugin.js | 13 +- lib/wasm/WasmMainTemplatePlugin.js | 124 +++++++++----- lib/wasm/WebAssemblyGenerator.js | 17 +- lib/wasm/WebAssemblyModulesPlugin.js | 6 +- lib/wasm/WebAssemblyUtils.js | 23 ++- lib/web/FetchCompileWasmTemplatePlugin.js | 14 +- schemas/WebpackOptions.json | 4 + .../__snapshots__/StatsTestCases.test.js.snap | 160 +++++++++--------- 10 files changed, 239 insertions(+), 139 deletions(-) diff --git a/lib/WebpackOptionsApply.js b/lib/WebpackOptionsApply.js index c4cc617bd74..2c5cf6ebc38 100644 --- a/lib/WebpackOptionsApply.js +++ b/lib/WebpackOptionsApply.js @@ -87,7 +87,9 @@ class WebpackOptionsApply extends OptionsApply { FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin"); NodeSourcePlugin = require("./node/NodeSourcePlugin"); new JsonpTemplatePlugin().apply(compiler); - new FetchCompileWasmTemplatePlugin().apply(compiler); + new FetchCompileWasmTemplatePlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new FunctionModulePlugin().apply(compiler); new NodeSourcePlugin(options.node).apply(compiler); new LoaderTargetPlugin(options.target).apply(compiler); @@ -97,7 +99,9 @@ class WebpackOptionsApply extends OptionsApply { FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin"); NodeSourcePlugin = require("./node/NodeSourcePlugin"); new WebWorkerTemplatePlugin().apply(compiler); - new FetchCompileWasmTemplatePlugin().apply(compiler); + new FetchCompileWasmTemplatePlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new FunctionModulePlugin().apply(compiler); new NodeSourcePlugin(options.node).apply(compiler); new LoaderTargetPlugin(options.target).apply(compiler); @@ -111,7 +115,9 @@ class WebpackOptionsApply extends OptionsApply { new NodeTemplatePlugin({ asyncChunkLoading: options.target === "async-node" }).apply(compiler); - new ReadFileCompileWasmTemplatePlugin().apply(compiler); + new ReadFileCompileWasmTemplatePlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new FunctionModulePlugin().apply(compiler); new NodeTargetPlugin().apply(compiler); new LoaderTargetPlugin("node").apply(compiler); @@ -274,7 +280,9 @@ class WebpackOptionsApply extends OptionsApply { new JavascriptModulesPlugin().apply(compiler); new JsonModulesPlugin().apply(compiler); - new WebAssemblyModulesPlugin().apply(compiler); + new WebAssemblyModulesPlugin({ + mangleImports: options.optimization.mangleWasmImports + }).apply(compiler); new EntryOptionPlugin().apply(compiler); compiler.hooks.entryOption.call(options.context, options.entry); diff --git a/lib/WebpackOptionsDefaulter.js b/lib/WebpackOptionsDefaulter.js index 27a434654f9..e15d58d7905 100644 --- a/lib/WebpackOptionsDefaulter.js +++ b/lib/WebpackOptionsDefaulter.js @@ -257,6 +257,7 @@ class WebpackOptionsDefaulter extends OptionsDefaulter { this.set("optimization.checkWasmTypes", "make", options => isProductionLikeMode(options) ); + this.set("optimization.mangleWasmImports", false); this.set( "optimization.namedModules", "make", diff --git a/lib/node/ReadFileCompileWasmTemplatePlugin.js b/lib/node/ReadFileCompileWasmTemplatePlugin.js index 68aa59c621f..a7566b81f47 100644 --- a/lib/node/ReadFileCompileWasmTemplatePlugin.js +++ b/lib/node/ReadFileCompileWasmTemplatePlugin.js @@ -8,6 +8,10 @@ const Template = require("../Template"); const WasmMainTemplatePlugin = require("../wasm/WasmMainTemplatePlugin"); class ReadFileCompileWasmTemplatePlugin { + constructor(options) { + this.options = options || {}; + } + apply(compiler) { compiler.hooks.thisCompilation.tap( "ReadFileCompileWasmTemplatePlugin", @@ -40,8 +44,13 @@ class ReadFileCompileWasmTemplatePlugin { ]); const plugin = new WasmMainTemplatePlugin( - generateLoadBinaryCode, - false + Object.assign( + { + generateLoadBinaryCode, + supportsStreaming: false + }, + this.options + ) ); plugin.apply(compilation.mainTemplate); } diff --git a/lib/wasm/WasmMainTemplatePlugin.js b/lib/wasm/WasmMainTemplatePlugin.js index 0e60f8d7327..b946c4e00c8 100644 --- a/lib/wasm/WasmMainTemplatePlugin.js +++ b/lib/wasm/WasmMainTemplatePlugin.js @@ -27,12 +27,16 @@ function getAllWasmModules(chunk) { /** * generates the import object function for a module * @param {Module} module the module + * @param {boolean} mangle mangle imports * @returns {string} source code */ -function generateImportObject(module) { +function generateImportObject(module, mangle) { const waitForInstances = new Map(); const properties = []; - const usedWasmDependencies = WebAssemblyUtils.getUsedDependencies(module); + const usedWasmDependencies = WebAssemblyUtils.getUsedDependencies( + module, + mangle + ); for (const usedDep of usedWasmDependencies) { const dep = usedDep.dependency; const importedModule = dep.module; @@ -41,15 +45,17 @@ function generateImportObject(module) { const description = dep.description; const direct = dep.onlyDirectImport; - const propertyName = usedDep.name; + const module = usedDep.module; + const name = usedDep.name; if (direct) { const instanceVar = `m${waitForInstances.size}`; waitForInstances.set(instanceVar, importedModule.id); - properties.push( - `${JSON.stringify(propertyName)}: ${instanceVar}` + - `[${JSON.stringify(usedName)}]` - ); + properties.push({ + module, + name, + value: `${instanceVar}[${JSON.stringify(usedName)}]` + }); } else { const params = description.signature.params.map( (param, k) => "p" + k + param.valtype @@ -58,20 +64,55 @@ function generateImportObject(module) { const mod = `installedModules[${JSON.stringify(importedModule.id)}]`; const func = `${mod}.exports[${JSON.stringify(usedName)}]`; - properties.push( - Template.asString([ - `${JSON.stringify(propertyName)}: ` + - (importedModule.type.startsWith("webassembly") - ? `${mod} ? ${func} : ` - : "") + - `function(${params}) {`, + properties.push({ + module, + name, + value: Template.asString([ + (importedModule.type.startsWith("webassembly") + ? `${mod} ? ${func} : ` + : "") + `function(${params}) {`, Template.indent([`return ${func}(${params});`]), "}" ]) - ); + }); } } + let importObject; + if (mangle) { + importObject = [ + "return {", + Template.indent([ + properties.map(p => `${JSON.stringify(p.name)}: ${p.value}`).join(",\n") + ]), + "};" + ]; + } else { + const propertiesByModule = new Map(); + for (const p of properties) { + let list = propertiesByModule.get(p.module); + if (list === undefined) { + propertiesByModule.set(p.module, (list = [])); + } + list.push(p); + } + importObject = [ + "return {", + Template.indent([ + Array.from(propertiesByModule, ([module, list]) => { + return Template.asString([ + `${JSON.stringify(module)}: {`, + Template.indent([ + list.map(p => `${JSON.stringify(p.name)}: ${p.value}`).join(",\n") + ]), + "}" + ]); + }).join(",\n") + ]), + "};" + ]; + } + if (waitForInstances.size === 1) { const moduleId = Array.from(waitForInstances.values())[0]; const promise = `installedWasmModules[${JSON.stringify(moduleId)}]`; @@ -80,11 +121,7 @@ function generateImportObject(module) { `${JSON.stringify(module.id)}: function() {`, Template.indent([ `return promiseResolve().then(function() { return ${promise}; }).then(function(${variable}) {`, - Template.indent([ - "return {", - Template.indent([properties.join(",\n")]), - "};" - ]), + Template.indent(importObject), "});" ]), "}," @@ -102,12 +139,7 @@ function generateImportObject(module) { `${JSON.stringify(module.id)}: function() {`, Template.indent([ `return promiseResolve().then(function() { return Promise.all([${promises}]); }).then(function(array) {`, - Template.indent([ - `var ${variables};`, - "return {", - Template.indent([properties.join(",\n")]), - "};" - ]), + Template.indent([`var ${variables};`, ...importObject]), "});" ]), "}," @@ -115,20 +147,17 @@ function generateImportObject(module) { } else { return Template.asString([ `${JSON.stringify(module.id)}: function() {`, - Template.indent([ - "return {", - Template.indent([properties.join(",\n")]), - "};" - ]), + Template.indent(importObject), "}," ]); } } class WasmMainTemplatePlugin { - constructor(generateLoadBinaryCode, supportsStreaming) { + constructor({ generateLoadBinaryCode, supportsStreaming, mangleImports }) { this.generateLoadBinaryCode = generateLoadBinaryCode; this.supportsStreaming = supportsStreaming; + this.mangleImports = mangleImports; } apply(mainTemplate) { mainTemplate.hooks.localVars.tap( @@ -136,7 +165,9 @@ class WasmMainTemplatePlugin { (source, chunk) => { const wasmModules = getAllWasmModules(chunk); if (wasmModules.length === 0) return source; - const importObjects = wasmModules.map(generateImportObject); + const importObjects = wasmModules.map(module => { + return generateImportObject(module, this.mangleImports); + }); return Template.asString([ source, "", @@ -192,6 +223,12 @@ class WasmMainTemplatePlugin { } } ); + const createImportObject = content => + this.mangleImports + ? `{ ${JSON.stringify( + WebAssemblyUtils.MANGLED_MODULE + )}: ${content} }` + : content; return Template.asString([ source, "", @@ -219,15 +256,17 @@ class WasmMainTemplatePlugin { Template.indent([ "promise = Promise.all([WebAssembly.compileStreaming(req), importObject]).then(function(items) {", Template.indent([ - "return WebAssembly.instantiate(items[0], " + - `{ ${WebAssemblyUtils.MANGLED_MODULE}: items[1] });` + `return WebAssembly.instantiate(items[0], ${createImportObject( + "items[1]" + )});` ]), "});" ]), "} else if(typeof WebAssembly.instantiateStreaming === 'function') {", Template.indent([ - "promise = WebAssembly.instantiateStreaming(req, " + - `{ ${WebAssemblyUtils.MANGLED_MODULE}: importObject });` + `promise = WebAssembly.instantiateStreaming(req, ${createImportObject( + "importObject" + )});` ]) ]) : Template.asString([ @@ -241,8 +280,9 @@ class WasmMainTemplatePlugin { ]), "]).then(function(items) {", Template.indent([ - "return WebAssembly.instantiate(items[0], " + - `{ ${WebAssemblyUtils.MANGLED_MODULE}: items[1] });` + `return WebAssembly.instantiate(items[0], ${createImportObject( + "items[1]" + )});` ]), "});" ]) @@ -252,8 +292,9 @@ class WasmMainTemplatePlugin { "var bytesPromise = req.then(function(x) { return x.arrayBuffer(); });", "promise = bytesPromise.then(function(bytes) {", Template.indent([ - "return WebAssembly.instantiate(bytes, " + - `{ ${WebAssemblyUtils.MANGLED_MODULE}: importObject });` + `return WebAssembly.instantiate(bytes, ${createImportObject( + "importObject" + )});` ]), "});" ]), @@ -290,6 +331,7 @@ class WasmMainTemplatePlugin { hash.update("WasmMainTemplatePlugin"); hash.update("1"); hash.update(`${mainTemplate.outputOptions.webassemblyModuleFilename}`); + hash.update(`${this.mangleImports}`); }); mainTemplate.hooks.hashForChunk.tap( "WasmMainTemplatePlugin", diff --git a/lib/wasm/WebAssemblyGenerator.js b/lib/wasm/WebAssemblyGenerator.js index c205507d874..37eefcf1f57 100644 --- a/lib/wasm/WebAssemblyGenerator.js +++ b/lib/wasm/WebAssemblyGenerator.js @@ -294,7 +294,7 @@ const rewriteImports = ({ ast, usedDependencyMap }) => bin => { ); if (typeof result !== "undefined") { - path.node.module = WebAssemblyUtils.MANGLED_MODULE; + path.node.module = result.module; path.node.name = result.name; } } @@ -374,12 +374,13 @@ const addInitFunction = ({ /** * Extract mangle mappings from module * @param {Module} module current module + * @param {boolean} mangle mangle imports * @returns {Map} mappings to mangled names */ -const getUsedDependencyMap = module => { +const getUsedDependencyMap = (module, mangle) => { /** @type {Map} */ const map = new Map(); - for (const usedDep of WebAssemblyUtils.getUsedDependencies(module)) { + for (const usedDep of WebAssemblyUtils.getUsedDependencies(module, mangle)) { const dep = usedDep.dependency; const request = dep.request; const exportName = dep.name; @@ -389,6 +390,11 @@ const getUsedDependencyMap = module => { }; class WebAssemblyGenerator extends Generator { + constructor(options) { + super(); + this.options = options; + } + generate(module) { let bin = module.originalSource().source(); bin = preprocess(bin); @@ -411,7 +417,10 @@ class WebAssemblyGenerator extends Generator { const nextFuncIndex = getNextFuncIndex(ast, countImportedFunc); const nextTypeIndex = getNextTypeIndex(ast); - const usedDependencyMap = getUsedDependencyMap(module); + const usedDependencyMap = getUsedDependencyMap( + module, + this.options.mangleImports + ); const externalExports = new Set( module.dependencies .filter(d => d instanceof WebAssemblyExportImportedDependency) diff --git a/lib/wasm/WebAssemblyModulesPlugin.js b/lib/wasm/WebAssemblyModulesPlugin.js index ede7acc82b3..e1ac050c531 100644 --- a/lib/wasm/WebAssemblyModulesPlugin.js +++ b/lib/wasm/WebAssemblyModulesPlugin.js @@ -12,6 +12,10 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency"); class WebAssemblyModulesPlugin { + constructor(options) { + this.options = options; + } + apply(compiler) { compiler.hooks.compilation.tap( "WebAssemblyModulesPlugin", @@ -37,7 +41,7 @@ class WebAssemblyModulesPlugin { .tap("WebAssemblyModulesPlugin", () => { return Generator.byType({ javascript: new WebAssemblyJavascriptGenerator(), - webassembly: new WebAssemblyGenerator() + webassembly: new WebAssemblyGenerator(this.options) }); }); diff --git a/lib/wasm/WebAssemblyUtils.js b/lib/wasm/WebAssemblyUtils.js index 8514a855b86..75eb6d29577 100644 --- a/lib/wasm/WebAssemblyUtils.js +++ b/lib/wasm/WebAssemblyUtils.js @@ -12,15 +12,17 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe /** @typedef {Object} UsedWasmDependency * @property {WebAssemblyImportDependency} dependency the dependency * @property {string} name the export name + * @property {string} module the module name */ const MANGLED_MODULE = "a"; /** * @param {Module} module the module - * @returns {UsedWasmDependency[]} used dependencies and mangled name + * @param {boolean} mangle mangle module and export names + * @returns {UsedWasmDependency[]} used dependencies and (mangled) name */ -const getUsedDependencies = module => { +const getUsedDependencies = (module, mangle) => { /** @type {UsedWasmDependency[]} */ const array = []; let importIndex = 0; @@ -30,13 +32,22 @@ const getUsedDependencies = module => { continue; } - const importedModule = dep.module; const exportName = dep.name; - const usedName = importedModule && importedModule.isUsed(exportName); - if (usedName !== false) { + // TODO add the following 3 lines when removing of ModuleExport is possible + // const importedModule = dep.module; + // const usedName = importedModule && importedModule.isUsed(exportName); + // if (usedName !== false) { + if (mangle) { array.push({ dependency: dep, - name: Template.numberToIdentifer(importIndex++) + name: Template.numberToIdentifer(importIndex++), + module: MANGLED_MODULE + }); + } else { + array.push({ + dependency: dep, + name: exportName, + module: dep.request }); } } diff --git a/lib/web/FetchCompileWasmTemplatePlugin.js b/lib/web/FetchCompileWasmTemplatePlugin.js index b001acebea7..025921fcf85 100644 --- a/lib/web/FetchCompileWasmTemplatePlugin.js +++ b/lib/web/FetchCompileWasmTemplatePlugin.js @@ -7,6 +7,10 @@ const WasmMainTemplatePlugin = require("../wasm/WasmMainTemplatePlugin"); class FetchCompileWasmTemplatePlugin { + constructor(options) { + this.options = options || {}; + } + apply(compiler) { compiler.hooks.thisCompilation.tap( "FetchCompileWasmTemplatePlugin", @@ -15,7 +19,15 @@ class FetchCompileWasmTemplatePlugin { const generateLoadBinaryCode = path => `fetch(${mainTemplate.requireFn}.p + ${path})`; - const plugin = new WasmMainTemplatePlugin(generateLoadBinaryCode, true); + const plugin = new WasmMainTemplatePlugin( + Object.assign( + { + generateLoadBinaryCode, + supportsStreaming: true + }, + this.options + ) + ); plugin.apply(mainTemplate); } ); diff --git a/schemas/WebpackOptions.json b/schemas/WebpackOptions.json index b07b349c928..ed3dfa894c9 100644 --- a/schemas/WebpackOptions.json +++ b/schemas/WebpackOptions.json @@ -1546,6 +1546,10 @@ "description": "Check for incompatible wasm types when importing/exporting from/to ESM", "type": "boolean" }, + "mangleWasmImports": { + "description": "Reduce size of WASM by changing imports to shorter strings.", + "type": "boolean" + }, "namedModules": { "description": "Use readable module identifiers for better debugging", "type": "boolean" diff --git a/test/__snapshots__/StatsTestCases.test.js.snap b/test/__snapshots__/StatsTestCases.test.js.snap index 53c835df432..b398e7f124f 100644 --- a/test/__snapshots__/StatsTestCases.test.js.snap +++ b/test/__snapshots__/StatsTestCases.test.js.snap @@ -1,21 +1,21 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`StatsTestCases should print correct stats for aggressive-splitting-entry 1`] = ` -"Hash: 4fe9463156cb2a99f4a94fe9463156cb2a99f4a9 +"Hash: 4aa5beb3bbe987f505a74aa5beb3bbe987f505a7 Child fitting: - Hash: 4fe9463156cb2a99f4a9 + Hash: 4aa5beb3bbe987f505a7 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names 9ac13fb7087e9ff1b93e.js 1.05 KiB 0 [emitted] - f2e891598128a57b072c.js 11.1 KiB 1 [emitted] + 2b4c8b62a524452d2de1.js 11.1 KiB 1 [emitted] d1ba53816ff760e185b0.js 1.94 KiB 2 [emitted] 7b5b0a943e9362bc88c6.js 1.94 KiB 3 [emitted] - Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js f2e891598128a57b072c.js + Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js 2b4c8b62a524452d2de1.js chunk {0} 9ac13fb7087e9ff1b93e.js 916 bytes <{1}> <{2}> <{3}> > ./g [4] ./index.js 7:0-13 [7] ./g.js 916 bytes {0} [built] - chunk {1} f2e891598128a57b072c.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered] + chunk {1} 2b4c8b62a524452d2de1.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered] > ./index main [3] ./e.js 899 bytes {1} [built] [4] ./index.js 111 bytes {1} [built] @@ -29,19 +29,19 @@ Child fitting: [1] ./c.js 899 bytes {3} [built] [2] ./d.js 899 bytes {3} [built] Child content-change: - Hash: 4fe9463156cb2a99f4a9 + Hash: 4aa5beb3bbe987f505a7 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names 9ac13fb7087e9ff1b93e.js 1.05 KiB 0 [emitted] - f2e891598128a57b072c.js 11.1 KiB 1 [emitted] + 2b4c8b62a524452d2de1.js 11.1 KiB 1 [emitted] d1ba53816ff760e185b0.js 1.94 KiB 2 [emitted] 7b5b0a943e9362bc88c6.js 1.94 KiB 3 [emitted] - Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js f2e891598128a57b072c.js + Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js 2b4c8b62a524452d2de1.js chunk {0} 9ac13fb7087e9ff1b93e.js 916 bytes <{1}> <{2}> <{3}> > ./g [4] ./index.js 7:0-13 [7] ./g.js 916 bytes {0} [built] - chunk {1} f2e891598128a57b072c.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered] + chunk {1} 2b4c8b62a524452d2de1.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered] > ./index main [3] ./e.js 899 bytes {1} [built] [4] ./index.js 111 bytes {1} [built] @@ -57,7 +57,7 @@ Child content-change: `; exports[`StatsTestCases should print correct stats for aggressive-splitting-on-demand 1`] = ` -"Hash: 84ad1d7e4c9cdd4b13e4 +"Hash: 2e21ab9d4836a0caedb1 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -71,9 +71,9 @@ d6418937dfae4b3ee922.js 1 KiB 1 [emitted] 685acdc95ff4af957f47.js 1 KiB 7 [emitted] 606f48c13070850338b1.js 1.94 KiB 8 [emitted] c5a8eae840969538f450.js 1.94 KiB 9 [emitted] -c69b2f79fdf6e98907c4.js 9.7 KiB 10 [emitted] main +7bf22146f3e40919bde5.js 9.7 KiB 10 [emitted] main fcdf398c8972e4dcf788.js 1.94 KiB 11 [emitted] -Entrypoint main = c69b2f79fdf6e98907c4.js +Entrypoint main = 7bf22146f3e40919bde5.js chunk {0} fd868baa40dab4fc30fd.js 1.76 KiB <{10}> ={1}= ={2}= ={3}= ={7}= ={9}= [recorded] aggressive splitted > ./b ./d ./e ./f ./g [11] ./index.js 5:0-44 > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 @@ -115,7 +115,7 @@ chunk {9} c5a8eae840969538f450.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [re > ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72 [7] ./i.js 899 bytes {9} {11} [built] [8] ./j.js 901 bytes {6} {9} [built] -chunk {10} c69b2f79fdf6e98907c4.js (main) 248 bytes >{0}< >{1}< >{11}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< [entry] [rendered] +chunk {10} 7bf22146f3e40919bde5.js (main) 248 bytes >{0}< >{1}< >{11}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< [entry] [rendered] > ./index main [11] ./index.js 248 bytes {10} [built] chunk {11} fcdf398c8972e4dcf788.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted @@ -467,7 +467,7 @@ Child all: `; exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = ` -"Hash: bc5067cf597a5fece180 +"Hash: 7d8eb8b4418c6ae6a262 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -492,7 +492,7 @@ chunk {1} main1.js (main1) 136 bytes [entry] [rendered] `; exports[`StatsTestCases should print correct stats for chunks 1`] = ` -"Hash: 329edf3a78275c679fe4 +"Hash: 7762656cf5adce7c4f04 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -530,7 +530,7 @@ chunk {3} 3.bundle.js 44 bytes <{1}> [rendered] `; exports[`StatsTestCases should print correct stats for chunks-development 1`] = ` -"Hash: d9a9db28b39a3075bdb3 +"Hash: e9e5a35c80318dd22050 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -581,7 +581,7 @@ chunk {3} 3.bundle.js (c) 98 bytes <{0}> <{1}> >{0}< >{1}< [rendered] `; exports[`StatsTestCases should print correct stats for color-disabled 1`] = ` -"Hash: 259c9ad9aa282b7b9017 +"Hash: c5ad40363e9aee54c089 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -591,7 +591,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for color-enabled 1`] = ` -"Hash: 259c9ad9aa282b7b9017 +"Hash: c5ad40363e9aee54c089 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -601,7 +601,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for color-enabled-custom 1`] = ` -"Hash: 259c9ad9aa282b7b9017 +"Hash: c5ad40363e9aee54c089 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -611,7 +611,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for commons-chunk-min-size-0 1`] = ` -"Hash: ba7c69f3acc19ed72f3f +"Hash: bace8077f1ed02050b2f Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -628,7 +628,7 @@ Entrypoint entry-1 = vendor-1~entry-1.js entry-1.js `; exports[`StatsTestCases should print correct stats for commons-chunk-min-size-Infinity 1`] = ` -"Hash: f8b8bebc8cf37cf02f7f +"Hash: cb8c4bb6c365b0a67d67 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -645,9 +645,9 @@ Entrypoint entry-1 = vendor-1.js entry-1.js `; exports[`StatsTestCases should print correct stats for commons-plugin-issue-4980 1`] = ` -"Hash: b7026c887b1a4d42c4c08b5ecbff0d004a138881 +"Hash: 707868320b2a03412b3fe3b00ef4ecd794b284d6 Child - Hash: b7026c887b1a4d42c4c0 + Hash: 707868320b2a03412b3f Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -660,7 +660,7 @@ Child | ./submodule-a.js 59 bytes [built] | ./submodule-b.js 59 bytes [built] Child - Hash: 8b5ecbff0d004a138881 + Hash: e3b00ef4ecd794b284d6 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -693,9 +693,9 @@ exports[`StatsTestCases should print correct stats for concat-and-sideeffects 1` `; exports[`StatsTestCases should print correct stats for define-plugin 1`] = ` -"Hash: efa53b4a8c763381d4296ac4ef4ab386e0e18a8c +"Hash: cfe08d4450db77f81610f4228fcb997ec81e2aa6 Child - Hash: efa53b4a8c763381d429 + Hash: cfe08d4450db77f81610 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -703,7 +703,7 @@ Child Entrypoint main = main.js [0] ./index.js 24 bytes {0} [built] Child - Hash: 6ac4ef4ab386e0e18a8c + Hash: f4228fcb997ec81e2aa6 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -713,7 +713,7 @@ Child `; exports[`StatsTestCases should print correct stats for exclude-with-loader 1`] = ` -"Hash: 82110ff5e7d166cc4117 +"Hash: 52eadc5de721f000106b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -726,7 +726,7 @@ Entrypoint main = bundle.js `; exports[`StatsTestCases should print correct stats for external 1`] = ` -"Hash: 447b77fa7bc9bbdfcf31 +"Hash: 7a4bb5500ee0eddeee44 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -737,9 +737,9 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for filter-warnings 1`] = ` -"Hash: a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25a128fafbc2b7d659de25 +"Hash: 4269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b44269d427a8c1110386b4 Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -759,49 +759,49 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names bundle.js 2.89 KiB 0 [emitted] main Entrypoint main = bundle.js Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -821,7 +821,7 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -841,7 +841,7 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -861,7 +861,7 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -881,7 +881,7 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -901,7 +901,7 @@ Child Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0] Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0] Child - Hash: a128fafbc2b7d659de25 + Hash: 4269d427a8c1110386b4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -978,7 +978,7 @@ chunk {5} b.js (b) 179 bytes <{2}> >{1}< [rendered] `; exports[`StatsTestCases should print correct stats for import-context-filter 1`] = ` -"Hash: f249efcc0232c180bf68 +"Hash: 2a0d654db3e185182232 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -995,7 +995,7 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for import-weak 1`] = ` -"Hash: 9cccc27b7625bd171c12 +"Hash: 34cdd6c85db0facc427a Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1030,9 +1030,9 @@ Compilation error while processing magic comment(-s): /* webpackPrefetch: true, `; exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 1`] = ` -"Hash: 3c127dca42ce1c13b8eae6c0ceac1aa3be512946a5969fc94d792cce5364503bf42779f704747e2d +"Hash: 3f682d19df3a78cc355b84831557db9bd7a90e1a059dbb5576e98cee97e4f44eff82b7d35dbb5021 Child 1 chunks: - Hash: 3c127dca42ce1c13b8ea + Hash: 3f682d19df3a78cc355b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1046,7 +1046,7 @@ Child 1 chunks: [4] ./d.js 22 bytes {0} [built] [5] ./e.js 22 bytes {0} [built] Child 2 chunks: - Hash: e6c0ceac1aa3be512946 + Hash: 84831557db9bd7a90e1a Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1062,7 +1062,7 @@ Child 2 chunks: chunk {1} bundle.js (main) 73 bytes >{0}< [entry] [rendered] [5] ./index.js 73 bytes {1} [built] Child 3 chunks: - Hash: a5969fc94d792cce5364 + Hash: 059dbb5576e98cee97e4 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1080,7 +1080,7 @@ Child 3 chunks: chunk {2} bundle.js (main) 73 bytes >{0}< >{1}< [entry] [rendered] [5] ./index.js 73 bytes {2} [built] Child 4 chunks: - Hash: 503bf42779f704747e2d + Hash: f44eff82b7d35dbb5021 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1102,7 +1102,7 @@ Child 4 chunks: `; exports[`StatsTestCases should print correct stats for max-modules 1`] = ` -"Hash: 528955f6d280625ce14d +"Hash: 8e1f6d7b7886c5f4617d Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1132,7 +1132,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for max-modules-default 1`] = ` -"Hash: 528955f6d280625ce14d +"Hash: 8e1f6d7b7886c5f4617d Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1157,7 +1157,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for module-assets 1`] = ` -"Hash: f544bcf110bd1cf43d65 +"Hash: e1ecf80df7148b69327b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint main = main.js @@ -1339,7 +1339,7 @@ Child `; exports[`StatsTestCases should print correct stats for named-chunks-plugin 1`] = ` -"Hash: 4d266c3680a506e31e7e +"Hash: ae58e4539a3d3b521cc7 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1353,7 +1353,7 @@ Entrypoint entry = vendor.js entry.js `; exports[`StatsTestCases should print correct stats for named-chunks-plugin-async 1`] = ` -"Hash: b54cb3a3bc63561b46b3 +"Hash: b6aa15eeabc33e889828 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1367,7 +1367,7 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for no-emit-on-errors-plugin-with-child-error 1`] = ` -"Hash: 6c219bd2ffa7d0ba8efb +"Hash: 6a246e5dec75240f30bf Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1389,7 +1389,7 @@ Child child: `; exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = ` -"Hash: 5d3814f1fdaba61ed71c +"Hash: c52867ded6f77bcf50cc Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1460,9 +1460,9 @@ You may need an appropriate loader to handle this file type. `; exports[`StatsTestCases should print correct stats for performance-different-mode-and-target 1`] = ` -"Hash: 36ef9589e3f3c206907d131fd32b3ce1bbf1fb07e0ec393717b117b253ba7bd80de90c69fbe1699ff5afc47fa7eaf1e7303afe2ff2a34c467b43c85c513ab90423c98ca17f51 +"Hash: b27a7019f90a13ead012bb84b396eb1e98365d94fb930f6aa3329ab03a278deb0030bfebe86abb37a1cddcae25eb52f3112b62c8b61bc84829d26b13ae06efe5f0099a11af36 Child - Hash: 36ef9589e3f3c206907d + Hash: b27a7019f90a13ead012 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1485,7 +1485,7 @@ Child You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application. For more info visit https://webpack.js.org/guides/code-splitting/ Child - Hash: 131fd32b3ce1bbf1fb07 + Hash: bb84b396eb1e98365d94 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1508,7 +1508,7 @@ Child You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application. For more info visit https://webpack.js.org/guides/code-splitting/ Child - Hash: e0ec393717b117b253ba + Hash: fb930f6aa3329ab03a27 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1516,7 +1516,7 @@ Child Entrypoint main = no-warning.pro-node.js [0] ./index.js 293 KiB {0} [built] Child - Hash: 7bd80de90c69fbe1699f + Hash: 8deb0030bfebe86abb37 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1524,7 +1524,7 @@ Child Entrypoint main = no-warning.dev-web.js [./index.js] 293 KiB {main} [built] Child - Hash: f5afc47fa7eaf1e7303a + Hash: a1cddcae25eb52f3112b Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1532,7 +1532,7 @@ Child Entrypoint main = no-warning.dev-node.js [./index.js] 293 KiB {main} [built] Child - Hash: fe2ff2a34c467b43c85c + Hash: 62c8b61bc84829d26b13 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1540,7 +1540,7 @@ Child Entrypoint main [big] = no-warning.dev-web-with-limit-set.js [./index.js] 293 KiB {main} [built] Child - Hash: 513ab90423c98ca17f51 + Hash: ae06efe5f0099a11af36 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1741,7 +1741,7 @@ chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]" `; exports[`StatsTestCases should print correct stats for preset-detailed 1`] = ` -"Hash: 8abc26856f4ca9b61679 +"Hash: 2eb3274d0272da6a7a14 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1800,7 +1800,7 @@ exports[`StatsTestCases should print correct stats for preset-none-array 1`] = ` exports[`StatsTestCases should print correct stats for preset-none-error 1`] = `""`; exports[`StatsTestCases should print correct stats for preset-normal 1`] = ` -"Hash: 8abc26856f4ca9b61679 +"Hash: 2eb3274d0272da6a7a14 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1878,7 +1878,7 @@ Entrypoints: `; exports[`StatsTestCases should print correct stats for preset-verbose 1`] = ` -"Hash: 8abc26856f4ca9b61679 +"Hash: 2eb3274d0272da6a7a14 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1922,7 +1922,7 @@ chunk {3} 3.js 44 bytes <{1}> [rendered] `; exports[`StatsTestCases should print correct stats for resolve-plugin-context 1`] = ` -"Hash: 11a1659e0148f10e3a15 +"Hash: f866085f4874b382c7c6 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -1936,7 +1936,7 @@ Entrypoint main = bundle.js `; exports[`StatsTestCases should print correct stats for reverse-sort-modules 1`] = ` -"Hash: 528955f6d280625ce14d +"Hash: 8e1f6d7b7886c5f4617d Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2006,7 +2006,7 @@ Entrypoint e2 = runtime.js e2.js" `; exports[`StatsTestCases should print correct stats for scope-hoisting-bailouts 1`] = ` -"Hash: 6c000e1efebf892a7639 +"Hash: df49e15bdf57c432360e Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint index = index.js @@ -2038,9 +2038,9 @@ Entrypoint entry = entry.js `; exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = ` -"Hash: 3354b6776c2bb6b558f4c9101316bd6316bf5251 +"Hash: f47bea8ea571296b32b82a4cd6b69820dd6e8c36 Child - Hash: 3354b6776c2bb6b558f4 + Hash: f47bea8ea571296b32b8 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js @@ -2057,7 +2057,7 @@ Child [9] ./module_first.js 31 bytes {4} [built] [10] ./second.js 177 bytes {5} [built] Child - Hash: c9101316bd6316bf5251 + Hash: 2a4cd6b69820dd6e8c36 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Entrypoint first = vendor.js first.js @@ -2085,7 +2085,7 @@ Child `; exports[`StatsTestCases should print correct stats for side-effects-issue-7428 1`] = ` -"Hash: 9d82ff1a0201e9c2ffa4 +"Hash: b1ef68bcfacb3ad18417 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2134,7 +2134,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for side-effects-simple-unused 1`] = ` -"Hash: 0cb74fac5f3c1b7f2150 +"Hash: 98f9f698f299e2fa69de Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2153,7 +2153,7 @@ Entrypoint main = main.js `; exports[`StatsTestCases should print correct stats for simple 1`] = ` -"Hash: 1843cc9aed8366594774 +"Hash: 06cc914b885215f96c5a Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2163,7 +2163,7 @@ Entrypoint main = bundle.js `; exports[`StatsTestCases should print correct stats for simple-more-info 1`] = ` -"Hash: c4097b5edb272ec4b73c +"Hash: c8c226a954f967e61630 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2686,7 +2686,7 @@ chunk {4} default/main.js (main) 147 bytes >{0}< >{1}< >{2}< >{3}< [entry] [r `; exports[`StatsTestCases should print correct stats for tree-shaking 1`] = ` -"Hash: 9470b99b4586c4006572 +"Hash: 7664ceef8f3f695c9688 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names @@ -2723,7 +2723,7 @@ Entrypoint main = bundle.js `; exports[`StatsTestCases should print correct stats for warnings-uglifyjs 1`] = ` -"Hash: c0402129c5c14a0d4a19 +"Hash: 1325fb5a846745d7ae89 Time: Xms Built at: Thu Jan 01 1970 00:00:00 GMT Asset Size Chunks Chunk Names