Merge pull request #6200 from webpack/feature/output-global-object

add output.globalObject configuration option
This commit is contained in:
Tobias Koppers 2018-01-02 14:13:12 +01:00 committed by GitHub
commit 6d0923effb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 175 additions and 221 deletions

View File

@ -83,13 +83,15 @@ class ExternalModule extends Module {
return `${missingModuleError}module.exports = ${request};`;
}
getSourceString() {
getSourceString(runtime) {
const request = typeof this.request === "object" ? this.request[this.externalType] : this.request;
switch(this.externalType) {
case "this":
case "window":
case "global":
case "self":
return this.getSourceForGlobalVariableExternal(request, this.externalType);
case "global":
return this.getSourceForGlobalVariableExternal(runtime.outputOptions.globalObject, this.externalType);
case "commonjs":
case "commonjs2":
return this.getSourceForCommonJsExternal(request);
@ -110,9 +112,9 @@ class ExternalModule extends Module {
return new RawSource(sourceString);
}
source() {
source(dependencyTemplates, runtime) {
return this.getSource(
this.getSourceString()
this.getSourceString(runtime)
);
}

View File

@ -48,13 +48,19 @@ class LibraryTemplatePlugin {
new SetVarMainTemplatePlugin(accessorAccess(undefined, this.name)).apply(compilation);
break;
case "this":
case "self":
case "window":
case "global":
if(this.name)
new SetVarMainTemplatePlugin(accessorAccess(this.target, this.name)).apply(compilation);
else
new SetVarMainTemplatePlugin(this.target, true).apply(compilation);
break;
case "global":
if(this.name)
new SetVarMainTemplatePlugin(accessorAccess(compilation.runtimeTemplate.outputOptions.globalObject, this.name)).apply(compilation);
else
new SetVarMainTemplatePlugin(compilation.runtimeTemplate.outputOptions.globalObject, true).apply(compilation);
break;
case "commonjs":
if(this.name)
new SetVarMainTemplatePlugin(accessorAccess("exports", this.name)).apply(compilation);

View File

@ -42,7 +42,8 @@ class UmdMainTemplatePlugin {
apply(compilation) {
const {
mainTemplate,
chunkTemplate
chunkTemplate,
runtimeTemplate
} = compilation;
const onRenderWithEntry = (source, chunk, hash) => {
@ -123,18 +124,18 @@ class UmdMainTemplatePlugin {
"(function webpackUniversalModuleDefinition(root, factory) {\n" +
(this.auxiliaryComment &&
typeof this.auxiliaryComment === "string" ?
" //" + this.auxiliaryComment + "\n" :
" //" + this.auxiliaryComment + "\n" :
this.auxiliaryComment.commonjs2 ?
" //" + this.auxiliaryComment.commonjs2 + "\n" :
" //" + this.auxiliaryComment.commonjs2 + "\n" :
""
) +
" if(typeof exports === 'object' && typeof module === 'object')\n" +
" module.exports = factory(" + externalsRequireArray("commonjs2") + ");\n" +
(this.auxiliaryComment &&
typeof this.auxiliaryComment === "string" ?
" //" + this.auxiliaryComment + "\n" :
" //" + this.auxiliaryComment + "\n" :
this.auxiliaryComment.amd ?
" //" + this.auxiliaryComment.amd + "\n" :
" //" + this.auxiliaryComment.amd + "\n" :
""
) +
" else if(typeof define === 'function' && define.amd)\n" +
@ -151,18 +152,18 @@ class UmdMainTemplatePlugin {
(this.names.root || this.names.commonjs ?
(this.auxiliaryComment &&
typeof this.auxiliaryComment === "string" ?
" //" + this.auxiliaryComment + "\n" :
" //" + this.auxiliaryComment + "\n" :
this.auxiliaryComment.commonjs ?
" //" + this.auxiliaryComment.commonjs + "\n" :
" //" + this.auxiliaryComment.commonjs + "\n" :
""
) +
" else if(typeof exports === 'object')\n" +
" exports[" + libraryName(this.names.commonjs || this.names.root) + "] = factory(" + externalsRequireArray("commonjs") + ");\n" +
(this.auxiliaryComment &&
typeof this.auxiliaryComment === "string" ?
" //" + this.auxiliaryComment + "\n" :
" //" + this.auxiliaryComment + "\n" :
this.auxiliaryComment.root ?
" //" + this.auxiliaryComment.root + "\n" :
" //" + this.auxiliaryComment.root + "\n" :
""
) +
" else\n" +
@ -175,7 +176,7 @@ class UmdMainTemplatePlugin {
" for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n" +
" }\n"
) +
"})(typeof self !== 'undefined' ? self : this, function(" + externalsArguments(externals) + ") {\nreturn ", "webpack/universalModuleDefinition"), source, ";\n})");
`})(${runtimeTemplate.outputOptions.globalObject}, function(${externalsArguments(externals)}) {\nreturn `, "webpack/universalModuleDefinition"), source, ";\n})");
};
for(const template of [mainTemplate, chunkTemplate]) {

View File

@ -123,8 +123,6 @@ class WebpackOptionsApply extends OptionsApply {
new ExternalsPlugin("commonjs", "nw.gui").apply(compiler);
new LoaderTargetPlugin(options.target).apply(compiler);
break;
case "atom":
case "electron":
case "electron-main":
NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
NodeTargetPlugin = require("./node/NodeTargetPlugin");

View File

@ -72,11 +72,30 @@ class WebpackOptionsDefaulter extends OptionsDefaulter {
this.set("output.webassemblyModuleFilename", "[modulehash].module.wasm");
this.set("output.library", "");
this.set("output.hotUpdateFunction", "make", (options) => {
return Template.toIdentifier("webpackHotUpdate" + options.output.library);
return Template.toIdentifier("webpackHotUpdate" + Template.toIdentifier(options.output.library));
});
this.set("output.jsonpFunction", "make", (options) => {
return Template.toIdentifier("webpackJsonp" + Template.toIdentifier(options.output.library));
});
this.set("output.chunkCallbackName", "make", (options) => {
return Template.toIdentifier("webpackChunk" + Template.toIdentifier(options.output.library));
});
this.set("output.globalObject", "make", options => {
switch(options.target) {
case "web":
case "electron-renderer":
return "window";
case "webworker":
return "self";
case "node":
case "async-node":
case "node-webkit":
case "electron-main":
return "global";
default:
return "self";
}
});
this.set("output.devtoolNamespace", "make", (options) => {
return options.output.library || "";
});

View File

@ -10,8 +10,9 @@ class JsonpChunkTemplatePlugin {
apply(chunkTemplate) {
chunkTemplate.hooks.render.tap("JsonpChunkTemplatePlugin", (modules, chunk) => {
const jsonpFunction = chunkTemplate.outputOptions.jsonpFunction;
const globalObject = chunkTemplate.outputOptions.globalObject;
const source = new ConcatSource();
source.add(`(window[${JSON.stringify(jsonpFunction)}] = window[${JSON.stringify(jsonpFunction)}] || []).push([${JSON.stringify(chunk.ids)},`);
source.add(`(${globalObject}[${JSON.stringify(jsonpFunction)}] = ${globalObject}[${JSON.stringify(jsonpFunction)}] || []).push([${JSON.stringify(chunk.ids)},`);
source.add(modules);
const entries = [chunk.entryModule]
.filter(Boolean)
@ -26,7 +27,7 @@ class JsonpChunkTemplatePlugin {
hash.update("JsonpChunkTemplatePlugin");
hash.update("4");
hash.update(`${chunkTemplate.outputOptions.jsonpFunction}`);
hash.update(`${chunkTemplate.outputOptions.library}`);
hash.update(`${chunkTemplate.outputOptions.globalObject}`);
});
}
}

View File

@ -208,8 +208,9 @@ class JsonpMainTemplatePlugin {
mainTemplate.hooks.startup.tap("JsonpMainTemplatePlugin", (source, chunk, hash) => {
if(needChunkLoadingCode(chunk)) {
var jsonpFunction = mainTemplate.outputOptions.jsonpFunction;
var globalObject = mainTemplate.outputOptions.globalObject;
return Template.asString([
`var jsonpArray = window[${JSON.stringify(jsonpFunction)}] = window[${JSON.stringify(jsonpFunction)}] || [];`,
`var jsonpArray = ${globalObject}[${JSON.stringify(jsonpFunction)}] = ${globalObject}[${JSON.stringify(jsonpFunction)}] || [];`,
"var parentJsonpFunction = jsonpArray.push.bind(jsonpArray);",
"jsonpArray.push = webpackJsonpCallback;",
"jsonpArray = jsonpArray.slice();",
@ -221,6 +222,7 @@ class JsonpMainTemplatePlugin {
return source;
});
mainTemplate.hooks.hotBootstrap.tap("JsonpMainTemplatePlugin", (source, chunk, hash) => {
const globalObject = mainTemplate.outputOptions.globalObject;
const hotUpdateChunkFilename = mainTemplate.outputOptions.hotUpdateChunkFilename;
const hotUpdateMainFilename = mainTemplate.outputOptions.hotUpdateMainFilename;
const crossOriginLoading = mainTemplate.outputOptions.crossOriginLoading;
@ -247,13 +249,13 @@ class JsonpMainTemplatePlugin {
function hotDisposeChunk(chunkId) {
delete installedChunks[chunkId];
}
var parentHotUpdateCallback = window[${JSON.stringify(hotUpdateFunction)}];
window[${JSON.stringify(hotUpdateFunction)}] = ${runtimeSource}`;
var parentHotUpdateCallback = ${globalObject}[${JSON.stringify(hotUpdateFunction)}];
${globalObject}[${JSON.stringify(hotUpdateFunction)}] = ${runtimeSource}`;
});
mainTemplate.hooks.hash.tap("JsonpMainTemplatePlugin", hash => {
hash.update("jsonp");
hash.update("5");
hash.update(`${mainTemplate.outputOptions.filename}`);
hash.update(`${mainTemplate.outputOptions.globalObject}`);
hash.update(`${mainTemplate.outputOptions.chunkFilename}`);
hash.update(`${mainTemplate.outputOptions.jsonpFunction}`);
hash.update(`${mainTemplate.outputOptions.hotUpdateFunction}`);

View File

@ -5,15 +5,15 @@
"use strict";
const ConcatSource = require("webpack-sources").ConcatSource;
const Template = require("../Template");
class WebWorkerChunkTemplatePlugin {
apply(chunkTemplate) {
chunkTemplate.hooks.render.tap("WebWorkerChunkTemplatePlugin", (modules, chunk) => {
const chunkCallbackName = chunkTemplate.outputOptions.chunkCallbackName || Template.toIdentifier("webpackChunk" + (chunkTemplate.outputOptions.library || ""));
const chunkCallbackName = chunkTemplate.outputOptions.chunkCallbackName;
const globalObject = chunkTemplate.outputOptions.globalObject;
const source = new ConcatSource();
source.add(`self[${JSON.stringify(chunkCallbackName)}](${JSON.stringify(chunk.ids)},`);
source.add(`${globalObject}[${JSON.stringify(chunkCallbackName)}](${JSON.stringify(chunk.ids)},`);
source.add(modules);
source.add(")");
return source;
@ -22,7 +22,7 @@ class WebWorkerChunkTemplatePlugin {
hash.update("webworker");
hash.update("3");
hash.update(`${chunkTemplate.outputOptions.chunkCallbackName}`);
hash.update(`${chunkTemplate.outputOptions.library}`);
hash.update(`${chunkTemplate.outputOptions.globalObject}`);
});
}
}

View File

@ -4,15 +4,15 @@
*/
"use strict";
const ConcatSource = require("webpack-sources").ConcatSource;
const Template = require("../Template");
class WebWorkerHotUpdateChunkTemplatePlugin {
apply(hotUpdateChunkTemplate) {
hotUpdateChunkTemplate.hooks.render.tap("WebWorkerHotUpdateChunkTemplatePlugin", (modulesSource, modules, removedModules, hash, id) => {
const chunkCallbackName = hotUpdateChunkTemplate.outputOptions.hotUpdateFunction || Template.toIdentifier("webpackHotUpdate" + (hotUpdateChunkTemplate.outputOptions.library || ""));
const hotUpdateFunction = hotUpdateChunkTemplate.outputOptions.hotUpdateFunction;
const globalObject = hotUpdateChunkTemplate.outputOptions.globalObject;
const source = new ConcatSource();
source.add(chunkCallbackName + "(" + JSON.stringify(id) + ",");
source.add(`${globalObject}[${JSON.stringify(hotUpdateFunction)}](${JSON.stringify(id)},`);
source.add(modulesSource);
source.add(")");
return source;
@ -21,7 +21,7 @@ class WebWorkerHotUpdateChunkTemplatePlugin {
hash.update("WebWorkerHotUpdateChunkTemplatePlugin");
hash.update("3");
hash.update(hotUpdateChunkTemplate.outputOptions.hotUpdateFunction + "");
hash.update(hotUpdateChunkTemplate.outputOptions.library + "");
hash.update(hotUpdateChunkTemplate.outputOptions.globalObject + "");
});
}
}

View File

@ -48,10 +48,11 @@ class WebWorkerMainTemplatePlugin {
});
mainTemplate.hooks.bootstrap.tap("WebWorkerMainTemplatePlugin", (source, chunk, hash) => {
if(chunk.getNumberOfChunks() > 0) {
const chunkCallbackName = mainTemplate.outputOptions.chunkCallbackName || Template.toIdentifier("webpackChunk" + (mainTemplate.outputOptions.library || ""));
const chunkCallbackName = mainTemplate.outputOptions.chunkCallbackName;
const globalObject = mainTemplate.outputOptions.globalObject;
return Template.asString([
source,
`self[${JSON.stringify(chunkCallbackName)}] = function webpackChunkCallback(chunkIds, moreModules) {`,
`${globalObject}[${JSON.stringify(chunkCallbackName)}] = function webpackChunkCallback(chunkIds, moreModules) {`,
Template.indent([
"for(var moduleId in moreModules) {",
Template.indent(mainTemplate.renderAddModule(hash, chunk, "moduleId", "moreModules[moduleId]")),
@ -67,7 +68,8 @@ class WebWorkerMainTemplatePlugin {
mainTemplate.hooks.hotBootstrap.tap("WebWorkerMainTemplatePlugin", (source, chunk, hash) => {
const hotUpdateChunkFilename = mainTemplate.outputOptions.hotUpdateChunkFilename;
const hotUpdateMainFilename = mainTemplate.outputOptions.hotUpdateMainFilename;
const hotUpdateFunction = mainTemplate.outputOptions.hotUpdateFunction || Template.toIdentifier("webpackHotUpdate" + (mainTemplate.outputOptions.library || ""));
const hotUpdateFunction = mainTemplate.outputOptions.hotUpdateFunction;
const globalObject = mainTemplate.outputOptions.globalObject;
const currentHotUpdateChunkFilename = mainTemplate.getAssetPath(JSON.stringify(hotUpdateChunkFilename), {
hash: `" + ${mainTemplate.renderCurrentHashCode(hash)} + "`,
hashWithLength: (length) => `" + ${mainTemplate.renderCurrentHashCode(hash, length)} + "`,
@ -81,8 +83,8 @@ class WebWorkerMainTemplatePlugin {
});
return source + "\n" +
`var parentHotUpdateCallback = self[${JSON.stringify(hotUpdateFunction)}];\n` +
`self[${JSON.stringify(hotUpdateFunction)}] = ` +
`var parentHotUpdateCallback = ${globalObject}[${JSON.stringify(hotUpdateFunction)}];\n` +
`${globalObject}[${JSON.stringify(hotUpdateFunction)}] = ` +
Template.getFunctionContent(require("./WebWorkerMainTemplate.runtime.js"))
.replace(/\/\/\$semicolon/g, ";")
.replace(/\$require\$/g, mainTemplate.requireFn)
@ -97,7 +99,7 @@ class WebWorkerMainTemplatePlugin {
hash.update(`${mainTemplate.outputOptions.filename}`);
hash.update(`${mainTemplate.outputOptions.chunkFilename}`);
hash.update(`${mainTemplate.outputOptions.chunkCallbackName}`);
hash.update(`${mainTemplate.outputOptions.library}`);
hash.update(`${mainTemplate.outputOptions.globalObject}`);
});
}
}

View File

@ -339,6 +339,11 @@
"type": "string",
"absolutePath": false
},
"globalObject": {
"description": "An expression which is used to address the global object/scope in runtime code",
"type": "string",
"minLength": 1
},
"crossOriginLoading": {
"description": "This option enables cross-origin loading of chunks.",
"enum": [
@ -508,6 +513,7 @@
"assign",
"this",
"window",
"self",
"global",
"commonjs",
"commonjs2",
@ -1684,8 +1690,6 @@
"node",
"async-node",
"node-webkit",
"atom",
"electron",
"electron-main",
"electron-renderer"
]

View File

@ -232,87 +232,6 @@ module.exports = some/request;`;
});
});
describe("#getSourceString", function() {
let globalExternalStub;
let globalCommonJsStub;
let globalAmdOrUmdStub;
let defaultExternalStub;
beforeEach(function() {
globalExternalStub = externalModule.getSourceForGlobalVariableExternal = sinon.stub();
globalCommonJsStub = externalModule.getSourceForCommonJsExternal = sinon.stub();
globalAmdOrUmdStub = externalModule.getSourceForAmdOrUmdExternal = sinon.stub();
defaultExternalStub = externalModule.getSourceForDefaultCase = sinon.stub();
});
describe("with type being 'this', 'window' or 'global'", function() {
it("deletgates to #getSourceForGlobalVariableExternal", function() {
["this", "window", "global"].forEach((type, i) => {
// set up
externalModule.externalType = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(i + 1);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being 'commonjs' or 'commonjs2'", function() {
it("deletgates to #getSourceForCommonJsExternal", function() {
["commonjs", "commonjs2"].forEach((type, i) => {
// set up
externalModule.externalType = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(i + 1);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being 'amd', 'umd' or 'umd2'", function() {
it("deletgates to #getSourceForAmdOrUmdExternal", function() {
["amd", "umd", "umd2"].forEach((type, i) => {
// set up
externalModule.externalType = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(i + 1);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being non of the above", function() {
it("deletgates to #getSourceForGlobalVariableExternal", function() {
["foo", "bar", undefined].forEach((type, i) => {
// set up
externalModule.externalType = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(i + 1);
});
});
});
});
describe("#updateHash", function() {
let hashedText;
let hash;

View File

@ -1,51 +1,51 @@
Hash: 0a5db84405553d6f7edc0a5db84405553d6f7edc
Hash: 66d838747959da8f85b266d838747959da8f85b2
Child fitting:
Hash: 0a5db84405553d6f7edc
Hash: 66d838747959da8f85b2
Time: Xms
Asset Size Chunks Chunk Names
8687608dde0469fd3fba.js 2.23 KiB 0 [emitted]
47e0fac01fc36a2064e8.js 5.78 KiB 4 [emitted]
f1e5018e4333f2466ecc.js 1 KiB 5 [emitted]
ddccfa0cc7de77007a74.js 1.93 KiB 6 [emitted]
Entrypoint main = 47e0fac01fc36a2064e8.js f1e5018e4333f2466ecc.js ddccfa0cc7de77007a74.js 8687608dde0469fd3fba.js
chunk {0} 8687608dde0469fd3fba.js 1.87 KiB [initial] [rendered]
8312a35cc8856fc31fbe.js 2.23 KiB 0 [emitted]
85d4742e44610b5d60db.js 5.78 KiB 4 [emitted]
54e2254b9a017be86038.js 1 KiB 5 [emitted]
2b397186654df41bcf77.js 1.93 KiB 6 [emitted]
Entrypoint main = 85d4742e44610b5d60db.js 54e2254b9a017be86038.js 2b397186654df41bcf77.js 8312a35cc8856fc31fbe.js
chunk {0} 8312a35cc8856fc31fbe.js 1.87 KiB [initial] [rendered]
> aggressive-splitted main [4] ./index.js
[4] ./index.js 112 bytes {0} [built]
[6] ./f.js 899 bytes {0} [built]
[7] ./g.js 899 bytes {0} [built]
chunk {4} 47e0fac01fc36a2064e8.js 1.76 KiB [entry] [rendered] [recorded]
chunk {4} 85d4742e44610b5d60db.js 1.76 KiB [entry] [rendered] [recorded]
> aggressive-splitted main [4] ./index.js
[2] ./d.js 899 bytes {4} [built]
[5] ./a.js 899 bytes {4} [built]
chunk {5} f1e5018e4333f2466ecc.js 899 bytes [initial] [rendered]
chunk {5} 54e2254b9a017be86038.js 899 bytes [initial] [rendered]
> aggressive-splitted main [4] ./index.js
[3] ./e.js 899 bytes {5} [built]
chunk {6} ddccfa0cc7de77007a74.js 1.76 KiB [initial] [rendered] [recorded]
chunk {6} 2b397186654df41bcf77.js 1.76 KiB [initial] [rendered] [recorded]
> aggressive-splitted main [4] ./index.js
[0] ./b.js 899 bytes {6} [built]
[1] ./c.js 899 bytes {6} [built]
Child content-change:
Hash: 0a5db84405553d6f7edc
Hash: 66d838747959da8f85b2
Time: Xms
Asset Size Chunks Chunk Names
8687608dde0469fd3fba.js 2.23 KiB 0 [emitted]
47e0fac01fc36a2064e8.js 5.78 KiB 4 [emitted]
f1e5018e4333f2466ecc.js 1 KiB 5 [emitted]
ddccfa0cc7de77007a74.js 1.93 KiB 6 [emitted]
Entrypoint main = 47e0fac01fc36a2064e8.js f1e5018e4333f2466ecc.js ddccfa0cc7de77007a74.js 8687608dde0469fd3fba.js
chunk {0} 8687608dde0469fd3fba.js 1.87 KiB [initial] [rendered]
8312a35cc8856fc31fbe.js 2.23 KiB 0 [emitted]
85d4742e44610b5d60db.js 5.78 KiB 4 [emitted]
54e2254b9a017be86038.js 1 KiB 5 [emitted]
2b397186654df41bcf77.js 1.93 KiB 6 [emitted]
Entrypoint main = 85d4742e44610b5d60db.js 54e2254b9a017be86038.js 2b397186654df41bcf77.js 8312a35cc8856fc31fbe.js
chunk {0} 8312a35cc8856fc31fbe.js 1.87 KiB [initial] [rendered]
> aggressive-splitted main [4] ./index.js
[4] ./index.js 112 bytes {0} [built]
[6] ./f.js 899 bytes {0} [built]
[7] ./g.js 899 bytes {0} [built]
chunk {4} 47e0fac01fc36a2064e8.js 1.76 KiB [entry] [rendered] [recorded]
chunk {4} 85d4742e44610b5d60db.js 1.76 KiB [entry] [rendered] [recorded]
> aggressive-splitted main [4] ./index.js
[2] ./d.js 899 bytes {4} [built]
[5] ./a.js 899 bytes {4} [built]
chunk {5} f1e5018e4333f2466ecc.js 899 bytes [initial] [rendered]
chunk {5} 54e2254b9a017be86038.js 899 bytes [initial] [rendered]
> aggressive-splitted main [4] ./index.js
[3] ./e.js 899 bytes {5} [built]
chunk {6} ddccfa0cc7de77007a74.js 1.76 KiB [initial] [rendered] [recorded]
chunk {6} 2b397186654df41bcf77.js 1.76 KiB [initial] [rendered] [recorded]
> aggressive-splitted main [4] ./index.js
[0] ./b.js 899 bytes {6} [built]
[1] ./c.js 899 bytes {6} [built]

View File

@ -1,49 +1,49 @@
Hash: 3905d68515b61aa1238c
Hash: 68735d6d492523fdd0c6
Time: Xms
Asset Size Chunks Chunk Names
678a72d82e420b28b031.js 1.96 KiB 0 [emitted]
d3cbd72ce65d74600a43.js 1.94 KiB 1 [emitted]
4966fc92cbbab9327eaf.js 1 KiB 2 [emitted]
1f3a05a38adbe4a8c99a.js 1.94 KiB 3 [emitted]
be4832811033692f578c.js 1.94 KiB 4 [emitted]
ac227ea2bbc85cb2741c.js 1 KiB 5 [emitted]
97965c2451ecb81665d7.js 1.01 KiB 6 [emitted]
9436edacbc90d1f598aa.js 8.36 KiB 7 [emitted] main
Entrypoint main = 9436edacbc90d1f598aa.js
chunk {0} 678a72d82e420b28b031.js 1.76 KiB {7} [recorded]
8111929f6761a49abd03.js 1.96 KiB 0 [emitted]
eed136bb9b1f0de139a9.js 1.94 KiB 1 [emitted]
127dcc911b6e4c95204d.js 1 KiB 2 [emitted]
2bfb7afd1f901f4f309f.js 1.94 KiB 3 [emitted]
e013686b7b1ce4bd99ba.js 1.94 KiB 4 [emitted]
5ac554478945d88843c9.js 1 KiB 5 [emitted]
2eb796a695b728235608.js 1.01 KiB 6 [emitted]
8d11ec270922149a5452.js 8.36 KiB 7 [emitted] main
Entrypoint main = 8d11ec270922149a5452.js
chunk {0} 8111929f6761a49abd03.js 1.76 KiB {7} [recorded]
> aggressive-splitted duplicate [11] ./index.js 4:0-51
> aggressive-splitted duplicate [11] ./index.js 5:0-44
> aggressive-splitted duplicate [11] ./index.js 6:0-72
[3] ./f.js 899 bytes {0} [built]
[4] ./g.js 901 bytes {0} [built]
chunk {1} d3cbd72ce65d74600a43.js 1.76 KiB {7} [recorded]
chunk {1} eed136bb9b1f0de139a9.js 1.76 KiB {7} [recorded]
> aggressive-splitted duplicate [11] ./index.js 3:0-30
> aggressive-splitted duplicate [11] ./index.js 5:0-44
> aggressive-splitted duplicate [11] ./index.js 6:0-72
[1] ./d.js 899 bytes {1} [built]
[2] ./e.js 899 bytes {1} [built]
chunk {2} 4966fc92cbbab9327eaf.js 899 bytes {7}
chunk {2} 127dcc911b6e4c95204d.js 899 bytes {7}
> aggressive-splitted duplicate [11] ./index.js 2:0-23
> aggressive-splitted duplicate [11] ./index.js 3:0-30
[5] ./c.js 899 bytes {2} [built]
chunk {3} 1f3a05a38adbe4a8c99a.js 1.76 KiB {7} [recorded]
chunk {3} 2bfb7afd1f901f4f309f.js 1.76 KiB {7} [recorded]
> aggressive-splitted duplicate [11] ./index.js 4:0-51
> aggressive-splitted duplicate [11] ./index.js 6:0-72
[8] ./j.js 901 bytes {3} [built]
[9] ./k.js 899 bytes {3} [built]
chunk {4} be4832811033692f578c.js 1.76 KiB {7} [recorded]
chunk {4} e013686b7b1ce4bd99ba.js 1.76 KiB {7} [recorded]
> aggressive-splitted duplicate [11] ./index.js 4:0-51
> aggressive-splitted duplicate [11] ./index.js 6:0-72
[6] ./h.js 899 bytes {4} [built]
[7] ./i.js 899 bytes {4} [built]
chunk {5} ac227ea2bbc85cb2741c.js 899 bytes {7}
chunk {5} 5ac554478945d88843c9.js 899 bytes {7}
> aggressive-splitted duplicate [11] ./index.js 2:0-23
> aggressive-splitted duplicate [11] ./index.js 5:0-44
> aggressive-splitted duplicate [11] ./index.js 6:0-72
[0] ./b.js 899 bytes {5} [built]
chunk {6} 97965c2451ecb81665d7.js 899 bytes {7}
chunk {6} 2eb796a695b728235608.js 899 bytes {7}
> [11] ./index.js 1:0-16
[10] ./a.js 899 bytes {6} [built]
chunk {7} 9436edacbc90d1f598aa.js (main) 248 bytes [entry]
chunk {7} 8d11ec270922149a5452.js (main) 248 bytes [entry]
> main [11] ./index.js
[11] ./index.js 248 bytes {7} [built]

View File

@ -1,4 +1,4 @@
Hash: 8f74408892465f3dc6d5
Hash: db77e93eab85707f4eff
Time: Xms
Asset Size Chunks Chunk Names
0.bundle.js 530 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: ee41f06ebdd1a9a95e6a
Hash: 76769cb9723be3c8845c
Time: Xms
Asset Size Chunks Chunk Names
0.bundle.js 152 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: 8f6f87bae4f020e96522
Hash: 4449339aa773e1bdb62b
Time: Xms
Asset Size Chunks Chunk Names
main.js 2.6 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: <CLR=BOLD>8f6f87bae4f020e96522</CLR>
Hash: <CLR=BOLD>4449339aa773e1bdb62b</CLR>
Time: <CLR=BOLD>X</CLR>ms
<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>
<CLR=32>main.js</CLR> 2.6 KiB <CLR=BOLD>0</CLR> <CLR=32>[emitted]</CLR> main

View File

@ -1,4 +1,4 @@
Hash: <CLR=BOLD>8f6f87bae4f020e96522</CLR>
Hash: <CLR=BOLD>4449339aa773e1bdb62b</CLR>
Time: <CLR=BOLD>X</CLR>ms
<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>
<CLR=32,BOLD>main.js</CLR> 2.6 KiB <CLR=BOLD>0</CLR> <CLR=32,BOLD>[emitted]</CLR> main

View File

@ -1,4 +1,4 @@
Hash: 36b0cc1896bc075e9b15
Hash: 96561e55e52ce5dd05d9
Time: Xms
Asset Size Chunks Chunk Names
entry-1.js 81 bytes 0 [emitted] entry-1

View File

@ -1,4 +1,4 @@
Hash: 9c21c5852f540cdeffb9
Hash: bac598d1d2bd19d61b66
Time: Xms
Asset Size Chunks Chunk Names
entry-1.js 3.22 KiB 0 [emitted] entry-1

View File

@ -1,10 +1,10 @@
Hash: 33e68a38df1cd17df82bf09d6254865163caaf3a
Hash: 0a7af1bf41c44dc4f3d62339087294aa36ac8856
Child
Hash: 33e68a38df1cd17df82b
Hash: 0a7af1bf41c44dc4f3d6
Time: Xms
Asset Size Chunks Chunk Names
app.js 656 bytes 0 [emitted] app
vendor.9de225d5f0ac36b2596b.js 619 bytes 1 [emitted] vendor
vendor.1c0346d33a16fbee0579.js 619 bytes 1 [emitted] vendor
runtime.js 7.03 KiB 2 [emitted] runtime
[./constants.js] 87 bytes {1} [built]
[./entry-1.js] ./entry-1.js + 2 modules 190 bytes {0} [built]
@ -12,11 +12,11 @@ Child
| ./submodule-a.js 59 bytes [built]
| ./submodule-b.js 59 bytes [built]
Child
Hash: f09d6254865163caaf3a
Hash: 2339087294aa36ac8856
Time: Xms
Asset Size Chunks Chunk Names
app.js 673 bytes 0 [emitted] app
vendor.9de225d5f0ac36b2596b.js 619 bytes 1 [emitted] vendor
vendor.1c0346d33a16fbee0579.js 619 bytes 1 [emitted] vendor
runtime.js 7.03 KiB 2 [emitted] runtime
[./constants.js] 87 bytes {1} [built]
[./entry-2.js] ./entry-2.js + 2 modules 197 bytes {0} [built]

View File

@ -1,12 +1,12 @@
Hash: bb44149cc6ff44057a6db39ed0896245106f412b
Hash: 8302fc70da7b1d33e35f5d4eabc9c652d1c0756a
Child
Hash: bb44149cc6ff44057a6d
Hash: 8302fc70da7b1d33e35f
Time: Xms
Asset Size Chunks Chunk Names
main.js 2.62 KiB 0 [emitted] main
[0] ./index.js 24 bytes {0} [built]
Child
Hash: b39ed0896245106f412b
Hash: 5d4eabc9c652d1c0756a
Time: Xms
Asset Size Chunks Chunk Names
main.js 2.62 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: 23b0e2e89d599733386c
Hash: c4a62718358d9707da4b
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 3.04 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: eec74eeea2d377db0b5a
Hash: 4c0b1d281b1f34a2c9a9
Time: Xms
Asset Size Chunks Chunk Names
main.js 2.73 KiB 0 [emitted] main

View File

@ -1,6 +1,6 @@
Hash: 97d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea30497d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56cac2f0867c9653d5ef56ca
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -18,37 +18,37 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -66,7 +66,7 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -84,7 +84,7 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -102,7 +102,7 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -120,7 +120,7 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main
@ -138,7 +138,7 @@ Child
Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
Child
Hash: 97d996dfd40bcc9ea304
Hash: c2f0867c9653d5ef56ca
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: f44ab9a84588885bef81
Hash: f15cc625c7945f90f6cc
Time: Xms
Asset Size Chunks Chunk Names
0.js 305 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: 76f3311214153561286d
Hash: 28bb31ac457d1e720fe0
Time: Xms
Asset Size Chunks Chunk Names
0.js 149 bytes 0 [emitted]

View File

@ -1,6 +1,6 @@
Hash: 0bcb77c121105f5554b0f4bf5583ae34c4fb765731d10387e7bad2352849b837006a20b25042d6d2
Hash: 3c42c0d9c59b1d8509a591e8b3d4a3cf90304eee96027f5b85974b1438c9f8968b8648906c6d21ab
Child
Hash: 0bcb77c121105f5554b0
Hash: 3c42c0d9c59b1d8509a5
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 3.91 KiB 0 [emitted] main
@ -12,7 +12,7 @@ Child
[4] ./d.js 22 bytes {0} [built]
[5] ./e.js 22 bytes {0} [built]
Child
Hash: f4bf5583ae34c4fb7657
Hash: 91e8b3d4a3cf90304eee
Time: Xms
Asset Size Chunks Chunk Names
0.bundle.js 928 bytes 0 [emitted]
@ -26,7 +26,7 @@ Child
chunk {1} bundle.js (main) 73 bytes [entry] [rendered]
[5] ./index.js 73 bytes {1} [built]
Child
Hash: 31d10387e7bad2352849
Hash: 96027f5b85974b1438c9
Time: Xms
Asset Size Chunks Chunk Names
0.bundle.js 790 bytes 0 [emitted]
@ -42,7 +42,7 @@ Child
chunk {2} bundle.js (main) 73 bytes [entry] [rendered]
[5] ./index.js 73 bytes {2} [built]
Child
Hash: b837006a20b25042d6d2
Hash: f8968b8648906c6d21ab
Time: Xms
Asset Size Chunks Chunk Names
0.bundle.js 236 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: bd81f720878983455ffa
Hash: 5f77dc48022356bf82e6
Time: Xms
Asset Size Chunks Chunk Names
main.js 5.84 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: bd81f720878983455ffa
Hash: 5f77dc48022356bf82e6
Time: Xms
Asset Size Chunks Chunk Names
main.js 5.84 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: 9ba7ce8e004fc375bd9e
Hash: f7916dfb8ef8af9b46ec
Time: Xms
Asset Size Chunks Chunk Names
chunk-containing-__a_js.js 465 bytes chunk-containing-__a_js [emitted]

View File

@ -1,4 +1,4 @@
Hash: 19de94170196adcd00fe
Hash: f4f2142b60f3f055cbd9
Time: Xms
Asset Size Chunks Chunk Names
entry.js 425 bytes entry [emitted] entry

View File

@ -1,4 +1,4 @@
Hash: 9e791589c2c0542190c6
Hash: 0d28f4251780c8a9ae23
Time: Xms
Asset Size Chunks Chunk Names
0.js 299 bytes 0 [emitted] cir1

View File

@ -1,4 +1,4 @@
Hash: 775d1eb92a5362121009
Hash: 1f25969111e53f001118
Time: Xms
Asset Size Chunks Chunk Names
0.js 152 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: 775d1eb92a5362121009
Hash: 1f25969111e53f001118
Time: Xms
Asset Size Chunks Chunk Names
0.js 152 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: 775d1eb92a5362121009
Hash: 1f25969111e53f001118
Time: Xms
Asset Size Chunks Chunk Names
0.js 152 bytes 0 [emitted]

View File

@ -1,4 +1,4 @@
Hash: 405c9e2b6a4d5ab4698b
Hash: 8ef6447d90126dfd4a85
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 3 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: bd81f720878983455ffa
Hash: 5f77dc48022356bf82e6
Time: Xms
Asset Size Chunks Chunk Names
main.js 5.84 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: e205648cbd984b752d24
Hash: 600b6cad440f475caa85
Time: Xms
[0] ./entry.js 32 bytes {0} {1} [built]
ModuleConcatenation bailout: Module is an entry point

View File

@ -1,6 +1,6 @@
Hash: 8dd3a18cdbd62ff5464bcdfae2364f6eee940fc9
Hash: 618d094d926d88426c4d89db4754cf89b4c9fcd6
Child
Hash: 8dd3a18cdbd62ff5464b
Hash: 618d094d926d88426c4d
Time: Xms
[0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built]
[1] ./common2.js 25 bytes {3} {4} [built]
@ -14,7 +14,7 @@ Child
[9] ./module_first.js 31 bytes {3} [built]
[10] ./second.js 177 bytes {4} [built]
Child
Hash: cdfae2364f6eee940fc9
Hash: 89db4754cf89b4c9fcd6
Time: Xms
[0] ./common_lazy_shared.js 25 bytes {0} {1} {2} [built]
[1] ./common_lazy.js 25 bytes {1} {2} [built]

View File

@ -1,9 +1,9 @@
Hash: 6324063243d1151e39ba483784dda778b9890e57
Hash: 34c33fbf4c780f60f12fa438401999e65048b526
Child
Hash: 6324063243d1151e39ba
Hash: 34c33fbf4c780f60f12f
Time: Xms
Asset Size Chunks Chunk Names
d6c1b876fc64139d8324.js 2.74 KiB 0 [emitted] main
c4ca4186d82e5b86dd85.js 2.74 KiB 0 [emitted] main
c815cf440254d4f3bba4e7041db00a28.css 26 bytes 0 [emitted] main
[0] ./a/index.js 23 bytes {0} [built]
[1] ./a/file.css 41 bytes [built]
@ -15,10 +15,10 @@ Child
[0] (webpack)/node_modules/css-loader!./a/file.css 199 bytes {0} [built]
[1] (webpack)/node_modules/css-loader/lib/css-base.js 2.21 KiB {0} [built]
Child
Hash: 483784dda778b9890e57
Hash: a438401999e65048b526
Time: Xms
Asset Size Chunks Chunk Names
d6c1b876fc64139d8324.js 2.74 KiB 0 [emitted] main
c4ca4186d82e5b86dd85.js 2.74 KiB 0 [emitted] main
a3f385680aef7a9bb2a517699532cc34.css 28 bytes 0 [emitted] main
[0] ./b/index.js 23 bytes {0} [built]
[1] ./b/file.css 41 bytes [built]

View File

@ -1,4 +1,4 @@
Hash: e9d1bffdef1d29b98a2b
Hash: cbd34c9b838ac18abbbf
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.6 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: d6a9c7976d858b3be90d
Hash: 8ab11f69993b0584a68a
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.88 KiB main [emitted] main

View File

@ -1,4 +1,4 @@
Hash: 3d9c056775babba7f1f7
Hash: c94022469ba07d1633f1
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 7.26 KiB 0 [emitted] main

View File

@ -1,4 +1,4 @@
Hash: f6eb3b161149e35ef9e6
Hash: a253f2841b4eac6fbb2e
Time: Xms
Asset Size Chunks Chunk Names
bundle.js 2.19 KiB 0 [emitted] main