Merge pull request #7165 from webpack/performance/cache-hash

improve NormalModule performance
This commit is contained in:
Tobias Koppers 2018-05-03 00:47:10 +02:00 committed by GitHub
commit 00f77fdb2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 135 additions and 164 deletions

View File

@ -22,6 +22,7 @@ const ModuleParseError = require("./ModuleParseError");
const ModuleBuildError = require("./ModuleBuildError");
const ModuleError = require("./ModuleError");
const ModuleWarning = require("./ModuleWarning");
const createHash = require("./util/createHash");
const asString = buf => {
if (Buffer.isBuffer(buf)) {
@ -89,6 +90,7 @@ class NormalModule extends Module {
// Info from Build
this.error = null;
this._source = null;
this._buildHash = "";
this.buildTimestamp = undefined;
this._cachedSource = undefined;
this._cachedSourceHash = undefined;
@ -327,11 +329,23 @@ class NormalModule extends Module {
return false;
}
_initBuildHash(compilation) {
const hash = createHash(compilation.outputOptions.hashFunction);
if (this._source) {
hash.update("source");
this._source.updateHash(hash);
}
hash.update("meta");
hash.update(JSON.stringify(this.buildMeta));
this._buildHash = hash.digest("hex");
}
build(options, compilation, resolver, fs, callback) {
this.buildTimestamp = Date.now();
this.built = true;
this._source = null;
this._ast = null;
this._buildHash = "";
this.error = null;
this.errors.length = 0;
this.warnings.length = 0;
@ -349,6 +363,7 @@ class NormalModule extends Module {
// if we have an error mark module as failed and exit
if (err) {
this.markModuleAsErrored(err);
this._initBuildHash(compilation);
return callback();
}
@ -356,6 +371,7 @@ class NormalModule extends Module {
// if so, exit here;
const noParseRule = options.module && options.module.noParse;
if (this.shouldPreventParsing(noParseRule, this.request)) {
this._initBuildHash(compilation);
return callback();
}
@ -363,11 +379,13 @@ class NormalModule extends Module {
const source = this._source.source();
const error = new ModuleParseError(this, source, e);
this.markModuleAsErrored(error);
this._initBuildHash(compilation);
return callback();
};
const handleParseResult = result => {
this._lastSuccessfulBuildMeta = this.buildMeta;
this._initBuildHash(compilation);
return callback();
};
@ -454,23 +472,8 @@ class NormalModule extends Module {
return this._source ? this._source.size() : -1;
}
updateHashWithSource(hash) {
if (!this._source) {
hash.update("null");
return;
}
hash.update("source");
this._source.updateHash(hash);
}
updateHashWithMeta(hash) {
hash.update("meta");
hash.update(JSON.stringify(this.buildMeta));
}
updateHash(hash) {
this.updateHashWithSource(hash);
this.updateHashWithMeta(hash);
hash.update(this._buildHash);
super.updateHash(hash);
}
}

View File

@ -184,38 +184,6 @@ describe("NormalModule", () => {
});
});
describe("#updateHashWithSource", () => {
let hashSpy;
let hash;
beforeEach(() => {
hashSpy = sinon.spy();
hash = {
update: hashSpy
};
});
describe("without the module having any source", () => {
beforeEach(() => {
normalModule._source = null;
});
it('calls hash function with "null"', () => {
normalModule.updateHashWithSource(hash);
expect(hashSpy.callCount).toBe(1);
expect(hashSpy.args[0][0]).toBe("null");
});
});
describe("without the module having source", () => {
let expectedSource = "some source";
beforeEach(() => {
normalModule._source = new RawSource(expectedSource);
});
it('calls hash function with "source" and then the actual source of the module', function() {
normalModule.updateHashWithSource(hash);
expect(hashSpy.callCount).toBe(2);
expect(hashSpy.args[0][0]).toBe("source");
expect(hashSpy.args[1][0]).toBe(expectedSource);
});
});
});
describe("#hasDependencies", () => {
it("returns true if has dependencies", () => {
normalModule.addDependency(new NullDependency());

View File

@ -1,124 +1,124 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`StatsTestCases should print correct stats for aggressive-splitting-entry 1`] = `
"Hash: e3ba3c1dddc97b92dbf7e3ba3c1dddc97b92dbf7
"Hash: b907386938ff12cf9dbbb907386938ff12cf9dbb
Child fitting:
Hash: e3ba3c1dddc97b92dbf7
Hash: b907386938ff12cf9dbb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
fb95acf7c457672e70d0.js 1.05 KiB 0 [emitted]
2795fd99577b4ba7fef2.js 10.2 KiB 1 [emitted]
d43339a3d0f86c6b8d90.js 1.94 KiB 2 [emitted]
6c7fb52c5514dbfbf094.js 1.94 KiB 3 [emitted]
Entrypoint main = d43339a3d0f86c6b8d90.js 6c7fb52c5514dbfbf094.js 2795fd99577b4ba7fef2.js
chunk {0} fb95acf7c457672e70d0.js 916 bytes <{1}> <{2}> <{3}>
9ac13fb7087e9ff1b93e.js 1.05 KiB 0 [emitted]
077726e3805b482fd93e.js 10.2 KiB 1 [emitted]
d1ba53816ff760e185b0.js 1.94 KiB 2 [emitted]
7b5b0a943e9362bc88c6.js 1.94 KiB 3 [emitted]
Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js 077726e3805b482fd93e.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} 2795fd99577b4ba7fef2.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered]
chunk {1} 077726e3805b482fd93e.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]
[6] ./f.js 900 bytes {1} [built]
chunk {2} d43339a3d0f86c6b8d90.js 1.76 KiB ={1}= ={3}= >{0}< [initial] [rendered] [recorded] aggressive splitted
chunk {2} d1ba53816ff760e185b0.js 1.76 KiB ={1}= ={3}= >{0}< [initial] [rendered] [recorded] aggressive splitted
> ./index main
[0] ./b.js 899 bytes {2} [built]
[5] ./a.js 899 bytes {2} [built]
chunk {3} 6c7fb52c5514dbfbf094.js 1.76 KiB ={1}= ={2}= >{0}< [initial] [rendered] [recorded] aggressive splitted
chunk {3} 7b5b0a943e9362bc88c6.js 1.76 KiB ={1}= ={2}= >{0}< [initial] [rendered] [recorded] aggressive splitted
> ./index main
[1] ./c.js 899 bytes {3} [built]
[2] ./d.js 899 bytes {3} [built]
Child content-change:
Hash: e3ba3c1dddc97b92dbf7
Hash: b907386938ff12cf9dbb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
fb95acf7c457672e70d0.js 1.05 KiB 0 [emitted]
2795fd99577b4ba7fef2.js 10.2 KiB 1 [emitted]
d43339a3d0f86c6b8d90.js 1.94 KiB 2 [emitted]
6c7fb52c5514dbfbf094.js 1.94 KiB 3 [emitted]
Entrypoint main = d43339a3d0f86c6b8d90.js 6c7fb52c5514dbfbf094.js 2795fd99577b4ba7fef2.js
chunk {0} fb95acf7c457672e70d0.js 916 bytes <{1}> <{2}> <{3}>
9ac13fb7087e9ff1b93e.js 1.05 KiB 0 [emitted]
077726e3805b482fd93e.js 10.2 KiB 1 [emitted]
d1ba53816ff760e185b0.js 1.94 KiB 2 [emitted]
7b5b0a943e9362bc88c6.js 1.94 KiB 3 [emitted]
Entrypoint main = d1ba53816ff760e185b0.js 7b5b0a943e9362bc88c6.js 077726e3805b482fd93e.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} 2795fd99577b4ba7fef2.js 1.87 KiB ={2}= ={3}= >{0}< [entry] [rendered]
chunk {1} 077726e3805b482fd93e.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]
[6] ./f.js 900 bytes {1} [built]
chunk {2} d43339a3d0f86c6b8d90.js 1.76 KiB ={1}= ={3}= >{0}< [initial] [rendered] [recorded] aggressive splitted
chunk {2} d1ba53816ff760e185b0.js 1.76 KiB ={1}= ={3}= >{0}< [initial] [rendered] [recorded] aggressive splitted
> ./index main
[0] ./b.js 899 bytes {2} [built]
[5] ./a.js 899 bytes {2} [built]
chunk {3} 6c7fb52c5514dbfbf094.js 1.76 KiB ={1}= ={2}= >{0}< [initial] [rendered] [recorded] aggressive splitted
chunk {3} 7b5b0a943e9362bc88c6.js 1.76 KiB ={1}= ={2}= >{0}< [initial] [rendered] [recorded] aggressive splitted
> ./index main
[1] ./c.js 899 bytes {3} [built]
[2] ./d.js 899 bytes {3} [built]"
`;
exports[`StatsTestCases should print correct stats for aggressive-splitting-on-demand 1`] = `
"Hash: 0bbde62e97b9652dcaac
"Hash: d1ec33892177d3771968
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
620d3f8d9bdb989cde07.js 1.94 KiB 6, 7 [emitted]
4467a9f70ef8365bcb32.js 1.93 KiB 0 [emitted]
8debdc7e72b763a13e35.js 1.96 KiB 2 [emitted]
6a2c2702ac98f9f90db9.js 1.94 KiB 3, 1 [emitted]
258ba4b441feff644266.js 1.01 KiB 4 [emitted]
8ae4998ca98adb2a08ea.js 1.94 KiB 5 [emitted]
aafb9d82e452def4c3bb.js 1 KiB 1 [emitted]
344e13508b62e833aacf.js 1 KiB 7 [emitted]
2aaed192bbfbc2302c53.js 1.94 KiB 8 [emitted]
72e04d4eaed46d9aac4c.js 1.94 KiB 9 [emitted]
d19dabec0d62bca26765.js 8.68 KiB 10 [emitted] main
1165c0cca1ba14a506ff.js 1.94 KiB 11 [emitted]
Entrypoint main = d19dabec0d62bca26765.js
chunk {0} 4467a9f70ef8365bcb32.js 1.76 KiB <{10}> ={1}= ={2}= ={3}= ={7}= ={9}= [recorded] aggressive splitted
cf8697fa2c994f39a5d4.js 1.94 KiB 6, 7 [emitted]
fd868baa40dab4fc30fd.js 1.93 KiB 0 [emitted]
79c527bb5bf9cba1dc12.js 1.96 KiB 2 [emitted]
e9d82e81fefd7353e8df.js 1.94 KiB 3, 1 [emitted]
ae76098eeb55b9c448f2.js 1.01 KiB 4 [emitted]
05d92aaacfbffa4b7e56.js 1.94 KiB 5 [emitted]
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]
3bf16d513625c7c39e6f.js 8.68 KiB 10 [emitted] main
fcdf398c8972e4dcf788.js 1.94 KiB 11 [emitted]
Entrypoint main = 3bf16d513625c7c39e6f.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
[0] ./b.js 899 bytes {0} {5} [built]
[1] ./d.js 899 bytes {0} {8} [built]
chunk {1} aafb9d82e452def4c3bb.js 899 bytes <{10}> ={0}= ={2}= ={8}=
chunk {1} d6418937dfae4b3ee922.js 899 bytes <{10}> ={0}= ={2}= ={8}=
> ./c ./d ./e [11] ./index.js 3:0-30
> ./b ./d ./e ./f ./g [11] ./index.js 5:0-44
[2] ./e.js 899 bytes {1} {3} [built]
chunk {2} 8debdc7e72b763a13e35.js 1.76 KiB <{10}> ={0}= ={1}= ={11}= ={3}= ={6}= ={7}= ={9}= [recorded] aggressive splitted
chunk {2} 79c527bb5bf9cba1dc12.js 1.76 KiB <{10}> ={0}= ={1}= ={11}= ={3}= ={6}= ={7}= ={9}= [recorded] aggressive splitted
> ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51
> ./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
[3] ./f.js 899 bytes {2} [built]
[4] ./g.js 901 bytes {2} [built]
chunk {3} 6a2c2702ac98f9f90db9.js 1.76 KiB <{10}> ={0}= ={2}= ={7}= ={9}= [rendered] [recorded] aggressive splitted
chunk {3} e9d82e81fefd7353e8df.js 1.76 KiB <{10}> ={0}= ={2}= ={7}= ={9}= [rendered] [recorded] aggressive splitted
> ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72
[2] ./e.js 899 bytes {1} {3} [built]
[6] ./h.js 899 bytes {3} {11} [built]
chunk {4} 258ba4b441feff644266.js 899 bytes <{10}>
chunk {4} ae76098eeb55b9c448f2.js 899 bytes <{10}>
> ./a [11] ./index.js 1:0-16
[10] ./a.js 899 bytes {4} [built]
chunk {5} 8ae4998ca98adb2a08ea.js 1.76 KiB <{10}>
chunk {5} 05d92aaacfbffa4b7e56.js 1.76 KiB <{10}>
> ./b ./c [11] ./index.js 2:0-23
[0] ./b.js 899 bytes {0} {5} [built]
[5] ./c.js 899 bytes {5} {8} [built]
chunk {6} 620d3f8d9bdb989cde07.js 1.76 KiB <{10}> ={11}= ={2}=
chunk {6} cf8697fa2c994f39a5d4.js 1.76 KiB <{10}> ={11}= ={2}=
> ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51
[8] ./j.js 901 bytes {6} {9} [built]
[9] ./k.js 899 bytes {6} {7} [built]
chunk {7} 344e13508b62e833aacf.js 899 bytes <{10}> ={0}= ={2}= ={3}= ={9}=
chunk {7} 685acdc95ff4af957f47.js 899 bytes <{10}> ={0}= ={2}= ={3}= ={9}=
> ./b ./d ./e ./f ./g ./h ./i ./j ./k [11] ./index.js 6:0-72
[9] ./k.js 899 bytes {6} {7} [built]
chunk {8} 2aaed192bbfbc2302c53.js 1.76 KiB <{10}> ={1}= [recorded] aggressive splitted
chunk {8} 606f48c13070850338b1.js 1.76 KiB <{10}> ={1}= [recorded] aggressive splitted
> ./c ./d ./e [11] ./index.js 3:0-30
[1] ./d.js 899 bytes {0} {8} [built]
[5] ./c.js 899 bytes {5} {8} [built]
chunk {9} 72e04d4eaed46d9aac4c.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [rendered] [recorded] aggressive splitted
chunk {9} c5a8eae840969538f450.js 1.76 KiB <{10}> ={0}= ={2}= ={3}= ={7}= [rendered] [recorded] aggressive splitted
> ./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} d19dabec0d62bca26765.js (main) 248 bytes >{0}< >{1}< >{11}< >{2}< >{3}< >{4}< >{5}< >{6}< >{7}< >{8}< >{9}< [entry] [rendered]
chunk {10} 3bf16d513625c7c39e6f.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} 1165c0cca1ba14a506ff.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted
chunk {11} fcdf398c8972e4dcf788.js 1.76 KiB <{10}> ={2}= ={6}= [rendered] [recorded] aggressive splitted
> ./f ./g ./h ./i ./j ./k [11] ./index.js 4:0-51
[6] ./h.js 899 bytes {3} {11} [built]
[7] ./i.js 899 bytes {9} {11} [built]"
@ -467,7 +467,7 @@ Child all:
`;
exports[`StatsTestCases should print correct stats for chunk-module-id-range 1`] = `
"Hash: 27b68d27e07b42624dae
"Hash: 0bb3f504cf6cc3cbace1
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: e99cd61934506d7567a3
"Hash: 41fab27e5669c037a625
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: d8b40b77893587325329
"Hash: 7724565418b8b6c8467a
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: 0b32ee714cee3c8b25d4
"Hash: a6779032127bc5f302b0
Time: Xms
Built at: Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> 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: <CLR=BOLD>0b32ee714cee3c8b25d4</CLR>
"Hash: <CLR=BOLD>a6779032127bc5f302b0</CLR>
Time: <CLR=BOLD>X</CLR>ms
Built at: Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> GMT
<CLR=BOLD>Asset</CLR> <CLR=BOLD>Size</CLR> <CLR=BOLD>Chunks</CLR> <CLR=39,BOLD><CLR=22> <CLR=39,BOLD><CLR=22><CLR=BOLD>Chunk Names</CLR>
@ -601,7 +601,7 @@ Entrypoint <CLR=BOLD>main</CLR> = <CLR=32,BOLD>main.js</CLR>
`;
exports[`StatsTestCases should print correct stats for color-enabled-custom 1`] = `
"Hash: <CLR=BOLD>0b32ee714cee3c8b25d4</CLR>
"Hash: <CLR=BOLD>a6779032127bc5f302b0</CLR>
Time: <CLR=BOLD>X</CLR>ms
Built at: Thu Jan 01 1970 <CLR=BOLD>00:00:00</CLR> GMT
<CLR=BOLD>Asset</CLR> <CLR=BOLD>Size</CLR> <CLR=BOLD>Chunks</CLR> <CLR=39,BOLD><CLR=22> <CLR=39,BOLD><CLR=22><CLR=BOLD>Chunk Names</CLR>
@ -611,7 +611,7 @@ Entrypoint <CLR=BOLD>main</CLR> = <CLR=32>main.js</CLR>
`;
exports[`StatsTestCases should print correct stats for commons-chunk-min-size-0 1`] = `
"Hash: cad25b99a073374722a7
"Hash: fe1218333b65ce9f8634
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: c176225f44e51c7a39a4
"Hash: 795be68665d680b959bb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -645,28 +645,28 @@ Entrypoint entry-1 = vendor-1.js entry-1.js
`;
exports[`StatsTestCases should print correct stats for commons-plugin-issue-4980 1`] = `
"Hash: 1c62a4c91035f66150df2425703c4fe7d61799b3
"Hash: 3da37f8a7e9d647c86531c172aabb881b93ba6be
Child
Hash: 1c62a4c91035f66150df
Hash: 3da37f8a7e9d647c8653
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
app.js 5.9 KiB 0 [emitted] app
vendor.c0e73bece4137a7015c2.js 619 bytes 1 [emitted] vendor
Entrypoint app = vendor.c0e73bece4137a7015c2.js app.js
vendor.6a3bdffda9f0de672978.js 619 bytes 1 [emitted] vendor
Entrypoint app = vendor.6a3bdffda9f0de672978.js app.js
[./constants.js] 87 bytes {1} [built]
[./entry-1.js] ./entry-1.js + 2 modules 190 bytes {0} [built]
| ./entry-1.js 67 bytes [built]
| ./submodule-a.js 59 bytes [built]
| ./submodule-b.js 59 bytes [built]
Child
Hash: 2425703c4fe7d61799b3
Hash: 1c172aabb881b93ba6be
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
app.js 5.92 KiB 0 [emitted] app
vendor.c0e73bece4137a7015c2.js 619 bytes 1 [emitted] vendor
Entrypoint app = vendor.c0e73bece4137a7015c2.js app.js
vendor.6a3bdffda9f0de672978.js 619 bytes 1 [emitted] vendor
Entrypoint app = vendor.6a3bdffda9f0de672978.js app.js
[./constants.js] 87 bytes {1} [built]
[./entry-2.js] ./entry-2.js + 2 modules 197 bytes {0} [built]
| ./entry-2.js 67 bytes [built]
@ -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: 189d0d15eb46be80d1f9eaead63561588b554cc6
"Hash: e7d8a913568c3242d80b39c3fe9ff20894943d05
Child
Hash: 189d0d15eb46be80d1f9
Hash: e7d8a913568c3242d80b
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: eaead63561588b554cc6
Hash: 39c3fe9ff20894943d05
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: 8b3d74c47fe62d34ee43
"Hash: 0bfe3f933dc07ac74c68
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: 3386bd94ba1fc3ae7f29
"Hash: c978d13c314f28182daa
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: abbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318adabbea59d067e262318ad
"Hash: 894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d894b7278b69dd6b1969d
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Entrypoint main = bundle.js
Child
Hash: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: abbea59d067e262318ad
Hash: 894b7278b69dd6b1969d
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: 736289137c8313a6d802
"Hash: e08ae3f7bf8b895ac342
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: 1c55fc2d238369c62239
"Hash: 59a0e9590a7c1754c76d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1008,9 +1008,9 @@ Entrypoint entry = entry.js
`;
exports[`StatsTestCases should print correct stats for limit-chunk-count-plugin 1`] = `
"Hash: 89bb5076b735d47082582924d303eb8bcffb1c785cc24ae5dbdd7c6bafb935e3a49d38d6f5cc7854
"Hash: fbf4374d5e6774f1f5763193fa6cb748ec53112f17662c5c606c0e127c765794818a8074e5c164c7
Child 1 chunks:
Hash: 89bb5076b735d4708258
Hash: fbf4374d5e6774f1f576
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1024,7 +1024,7 @@ Child 1 chunks:
[4] ./d.js 22 bytes {0} [built]
[5] ./e.js 22 bytes {0} [built]
Child 2 chunks:
Hash: 2924d303eb8bcffb1c78
Hash: 3193fa6cb748ec53112f
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1040,7 +1040,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: 5cc24ae5dbdd7c6bafb9
Hash: 17662c5c606c0e127c76
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1058,7 +1058,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: 35e3a49d38d6f5cc7854
Hash: 5794818a8074e5c164c7
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1080,7 +1080,7 @@ Child 4 chunks:
`;
exports[`StatsTestCases should print correct stats for max-modules 1`] = `
"Hash: c5cf5ab0cc0a404f1acf
"Hash: 75aa9fbfda2cb79419d8
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1110,7 +1110,7 @@ Entrypoint main = main.js
`;
exports[`StatsTestCases should print correct stats for max-modules-default 1`] = `
"Hash: c5cf5ab0cc0a404f1acf
"Hash: 75aa9fbfda2cb79419d8
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1135,7 +1135,7 @@ Entrypoint main = main.js
`;
exports[`StatsTestCases should print correct stats for module-assets 1`] = `
"Hash: 021e4419d6957e08eedd
"Hash: 50b073bf8c481825a488
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Entrypoint main = main.js
@ -1317,7 +1317,7 @@ Child
`;
exports[`StatsTestCases should print correct stats for named-chunks-plugin 1`] = `
"Hash: 5df55d54223f36cc303b
"Hash: bda0a8a2c2ad3a4d41bd
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1331,7 +1331,7 @@ Entrypoint entry = vendor.js entry.js
`;
exports[`StatsTestCases should print correct stats for named-chunks-plugin-async 1`] = `
"Hash: f7d13fc86234627ae268
"Hash: b07ae41580240259728a
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1345,7 +1345,7 @@ Entrypoint entry = entry.js
`;
exports[`StatsTestCases should print correct stats for no-emit-on-errors-plugin-with-child-error 1`] = `
"Hash: 550499db0a071b393308
"Hash: 30e651c30e081df7d6fb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1367,7 +1367,7 @@ Child child:
`;
exports[`StatsTestCases should print correct stats for optimize-chunks 1`] = `
"Hash: b643225c9d2e70212495
"Hash: 72023c7499b4b25526da
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1438,9 +1438,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: df3a0090d24670ebd17d7094466a296a7ae4ae823f59070ac8deb95011d223ef01d5f7db6f7b0912f47482563c8b6b9dc4955fdf2e3a0c7c308a998f9bab5b59aa119495c443
"Hash: 1600ea0c15704981d2afb76a49f4a3d86abe6cece7a6e8bbef9e93fb375f94f7ccc27c401fad35731592704355cc413e2afcf8bdd2c0c7cffce662a97f3b443bb4363f92335d
Child
Hash: df3a0090d24670ebd17d
Hash: 1600ea0c15704981d2af
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1463,7 +1463,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: 7094466a296a7ae4ae82
Hash: b76a49f4a3d86abe6cec
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1486,7 +1486,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: 3f59070ac8deb95011d2
Hash: e7a6e8bbef9e93fb375f
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1494,7 +1494,7 @@ Child
Entrypoint main = no-warning.pro-node.js
[0] ./index.js 293 KiB {0} [built]
Child
Hash: 23ef01d5f7db6f7b0912
Hash: 94f7ccc27c401fad3573
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1502,7 +1502,7 @@ Child
Entrypoint main = no-warning.dev-web.js
[./index.js] 293 KiB {main} [built]
Child
Hash: f47482563c8b6b9dc495
Hash: 1592704355cc413e2afc
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1510,7 +1510,7 @@ Child
Entrypoint main = no-warning.dev-node.js
[./index.js] 293 KiB {main} [built]
Child
Hash: 5fdf2e3a0c7c308a998f
Hash: f8bdd2c0c7cffce662a9
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1518,7 +1518,7 @@ Child
Entrypoint main [big] = no-warning.dev-web-with-limit-set.js
[./index.js] 293 KiB {main} [built]
Child
Hash: 9bab5b59aa119495c443
Hash: 7f3b443bb4363f92335d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1719,7 +1719,7 @@ chunk {6} inner2.js (inner2) 0 bytes <{0}> [rendered]"
`;
exports[`StatsTestCases should print correct stats for preset-detailed 1`] = `
"Hash: 5a6d9c01f46a5330eee6
"Hash: 633de649e1fd60300acb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1778,7 +1778,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: 5a6d9c01f46a5330eee6
"Hash: 633de649e1fd60300acb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1856,7 +1856,7 @@ Entrypoints:
`;
exports[`StatsTestCases should print correct stats for preset-verbose 1`] = `
"Hash: 5a6d9c01f46a5330eee6
"Hash: 633de649e1fd60300acb
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1900,7 +1900,7 @@ chunk {3} 3.js 44 bytes <{1}> [rendered]
`;
exports[`StatsTestCases should print correct stats for resolve-plugin-context 1`] = `
"Hash: 47eae06ebcb26f6b883a
"Hash: b03156e9d530e0fdde16
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1914,7 +1914,7 @@ Entrypoint main = bundle.js
`;
exports[`StatsTestCases should print correct stats for reverse-sort-modules 1`] = `
"Hash: c5cf5ab0cc0a404f1acf
"Hash: 75aa9fbfda2cb79419d8
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -1979,7 +1979,7 @@ Entrypoint e2 = runtime.js e2.js"
`;
exports[`StatsTestCases should print correct stats for scope-hoisting-bailouts 1`] = `
"Hash: ee60eae5100628922748
"Hash: eca97dadc365a5ea9495
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Entrypoint index = index.js
@ -2011,9 +2011,9 @@ Entrypoint entry = entry.js
`;
exports[`StatsTestCases should print correct stats for scope-hoisting-multi 1`] = `
"Hash: 33704ebeb245a82a7e824bf53c5eb877060bfd4d
"Hash: 649bc82f0ddfa78bf8265487d50fbccae514909d
Child
Hash: 33704ebeb245a82a7e82
Hash: 649bc82f0ddfa78bf826
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Entrypoint first = vendor.js first.js
@ -2030,7 +2030,7 @@ Child
[9] ./module_first.js 31 bytes {4} [built]
[10] ./second.js 177 bytes {5} [built]
Child
Hash: 4bf53c5eb877060bfd4d
Hash: 5487d50fbccae514909d
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Entrypoint first = vendor.js first.js
@ -2058,7 +2058,7 @@ Child
`;
exports[`StatsTestCases should print correct stats for simple 1`] = `
"Hash: 18342b523b0aca4784a6
"Hash: 85e288d6fa103903dde9
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -2068,7 +2068,7 @@ Entrypoint main = bundle.js
`;
exports[`StatsTestCases should print correct stats for simple-more-info 1`] = `
"Hash: ee367da3e170c28a39bf
"Hash: f252a9e1a2892c292e8e
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -2574,7 +2574,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: 6877ac726b04eb5d7985
"Hash: 268985187bb6f35a0709
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names
@ -2611,7 +2611,7 @@ Entrypoint main = bundle.js
`;
exports[`StatsTestCases should print correct stats for warnings-uglifyjs 1`] = `
"Hash: 5f08c421d55ae2ad3d0e
"Hash: c9585261f508c0a85e1b
Time: Xms
Built at: Thu Jan 01 1970 00:00:00 GMT
Asset Size Chunks Chunk Names