webpack 4.1.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +719 -721
- package/bin/webpack.js +69 -10
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +75 -77
- package/lib/AsyncDependencyToInitialChunkError.js +21 -23
- package/lib/BannerPlugin.js +101 -101
- package/lib/Chunk.js +477 -469
- package/lib/ChunkTemplate.js +51 -53
- package/lib/Compilation.js +1858 -1851
- package/lib/Compiler.js +493 -478
- package/lib/ConcurrentCompilationError.js +19 -0
- package/lib/ContextModule.js +696 -685
- package/lib/ContextModuleFactory.js +245 -243
- package/lib/DefinePlugin.js +197 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DependenciesBlockVariable.js +51 -52
- package/lib/Dependency.js +53 -52
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/EnvironmentPlugin.js +65 -67
- package/lib/EvalDevToolModuleTemplatePlugin.js +60 -60
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +105 -105
- package/lib/ExportPropertyMainTemplatePlugin.js +40 -40
- package/lib/ExternalModule.js +159 -159
- package/lib/FunctionModuleTemplatePlugin.js +98 -98
- package/lib/HotModuleReplacement.runtime.js +631 -631
- package/lib/HotModuleReplacementPlugin.js +407 -406
- package/lib/HotUpdateChunkTemplate.js +78 -80
- package/lib/JavascriptGenerator.js +228 -229
- package/lib/JavascriptModulesPlugin.js +184 -158
- package/lib/JsonGenerator.js +42 -42
- package/lib/MainTemplate.js +406 -402
- package/lib/Module.js +343 -340
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +166 -166
- package/lib/ModuleTemplate.js +77 -79
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +271 -259
- package/lib/MultiModule.js +78 -75
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiWatching.js +38 -37
- package/lib/NoModeWarning.js +23 -21
- package/lib/NormalModule.js +478 -470
- package/lib/NormalModuleFactory.js +483 -481
- package/lib/OptionsDefaulter.js +80 -86
- package/lib/Parser.js +2074 -2071
- package/lib/ProgressPlugin.js +231 -231
- package/lib/RawModule.js +54 -55
- package/lib/RecordIdsPlugin.js +160 -160
- package/lib/RemovedPluginError.js +13 -13
- package/lib/ResolverFactory.js +64 -67
- package/lib/RuntimeTemplate.js +267 -297
- package/lib/SetVarMainTemplatePlugin.js +57 -57
- package/lib/SourceMapDevToolPlugin.js +302 -308
- package/lib/Stats.js +1234 -1212
- package/lib/Template.js +205 -205
- package/lib/TemplatedPathPlugin.js +170 -143
- package/lib/UmdMainTemplatePlugin.js +264 -269
- package/lib/Watching.js +193 -193
- package/lib/WebAssemblyParser.js +50 -54
- package/lib/WebpackOptionsApply.js +401 -401
- package/lib/WebpackOptionsDefaulter.js +337 -317
- package/lib/WebpackOptionsValidationError.js +316 -319
- package/lib/debug/ProfilingPlugin.js +409 -405
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +328 -311
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +270 -241
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -606
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +53 -53
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +214 -214
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +154 -156
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +175 -179
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +25 -25
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireIncludeDependency.js +40 -40
- package/lib/dependencies/WebpackMissingModule.js +20 -22
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplatePlugin.js +320 -273
- package/lib/node/ReadFileCompileWasmMainTemplatePlugin.js +113 -115
- package/lib/optimize/AggressiveSplittingPlugin.js +281 -281
- package/lib/optimize/ConcatenatedModule.js +1364 -1366
- package/lib/optimize/RemoveParentModulesPlugin.js +114 -114
- package/lib/optimize/SplitChunksPlugin.js +519 -491
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/objectToMap.js +10 -10
- package/lib/wasm/WasmModuleTemplatePlugin.js +106 -106
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplatePlugin.js +425 -403
- package/lib/webpack.js +182 -179
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +177 -154
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1973 -1951
- package/schemas/ajv.absolutePath.js +55 -29
- package/schemas/plugins/BannerPlugin.json +85 -85
- package/schemas/plugins/DllPlugin.json +28 -28
- package/schemas/plugins/DllReferencePlugin.json +99 -99
- package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
- package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
- package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
- package/schemas/plugins/WatchIgnorePlugin.json +16 -16
- package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
@@ -1,158 +1,184 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Parser = require("./Parser");
|
8
|
-
const Template = require("./Template");
|
9
|
-
const ConcatSource = require("webpack-sources")
|
10
|
-
const JavascriptGenerator = require("./JavascriptGenerator");
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
.
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
const
|
52
|
-
const
|
53
|
-
const
|
54
|
-
const
|
55
|
-
const
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
const
|
101
|
-
const
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
}
|
156
|
-
|
157
|
-
|
158
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const Parser = require("./Parser");
|
8
|
+
const Template = require("./Template");
|
9
|
+
const { ConcatSource } = require("webpack-sources");
|
10
|
+
const JavascriptGenerator = require("./JavascriptGenerator");
|
11
|
+
const createHash = require("./util/createHash");
|
12
|
+
|
13
|
+
class JavascriptModulesPlugin {
|
14
|
+
apply(compiler) {
|
15
|
+
compiler.hooks.compilation.tap(
|
16
|
+
"JavascriptModulesPlugin",
|
17
|
+
(compilation, { normalModuleFactory }) => {
|
18
|
+
normalModuleFactory.hooks.createParser
|
19
|
+
.for("javascript/auto")
|
20
|
+
.tap("JavascriptModulesPlugin", options => {
|
21
|
+
return new Parser(options, "auto");
|
22
|
+
});
|
23
|
+
normalModuleFactory.hooks.createParser
|
24
|
+
.for("javascript/dynamic")
|
25
|
+
.tap("JavascriptModulesPlugin", options => {
|
26
|
+
return new Parser(options, "script");
|
27
|
+
});
|
28
|
+
normalModuleFactory.hooks.createParser
|
29
|
+
.for("javascript/esm")
|
30
|
+
.tap("JavascriptModulesPlugin", options => {
|
31
|
+
return new Parser(options, "module");
|
32
|
+
});
|
33
|
+
normalModuleFactory.hooks.createGenerator
|
34
|
+
.for("javascript/auto")
|
35
|
+
.tap("JavascriptModulesPlugin", () => {
|
36
|
+
return new JavascriptGenerator();
|
37
|
+
});
|
38
|
+
normalModuleFactory.hooks.createGenerator
|
39
|
+
.for("javascript/dynamic")
|
40
|
+
.tap("JavascriptModulesPlugin", () => {
|
41
|
+
return new JavascriptGenerator();
|
42
|
+
});
|
43
|
+
normalModuleFactory.hooks.createGenerator
|
44
|
+
.for("javascript/esm")
|
45
|
+
.tap("JavascriptModulesPlugin", () => {
|
46
|
+
return new JavascriptGenerator();
|
47
|
+
});
|
48
|
+
compilation.mainTemplate.hooks.renderManifest.tap(
|
49
|
+
"JavascriptModulesPlugin",
|
50
|
+
(result, options) => {
|
51
|
+
const chunk = options.chunk;
|
52
|
+
const hash = options.hash;
|
53
|
+
const fullHash = options.fullHash;
|
54
|
+
const outputOptions = options.outputOptions;
|
55
|
+
const moduleTemplates = options.moduleTemplates;
|
56
|
+
const dependencyTemplates = options.dependencyTemplates;
|
57
|
+
|
58
|
+
let filenameTemplate;
|
59
|
+
if (chunk.filenameTemplate)
|
60
|
+
filenameTemplate = chunk.filenameTemplate;
|
61
|
+
else filenameTemplate = outputOptions.filename;
|
62
|
+
|
63
|
+
const useChunkHash = compilation.mainTemplate.useChunkHash(chunk);
|
64
|
+
|
65
|
+
result.push({
|
66
|
+
render: () =>
|
67
|
+
compilation.mainTemplate.render(
|
68
|
+
hash,
|
69
|
+
chunk,
|
70
|
+
moduleTemplates.javascript,
|
71
|
+
dependencyTemplates
|
72
|
+
),
|
73
|
+
filenameTemplate,
|
74
|
+
pathOptions: {
|
75
|
+
noChunkHash: !useChunkHash,
|
76
|
+
contentHashType: "javascript",
|
77
|
+
chunk
|
78
|
+
},
|
79
|
+
identifier: `chunk${chunk.id}`,
|
80
|
+
hash: useChunkHash ? chunk.hash : fullHash
|
81
|
+
});
|
82
|
+
return result;
|
83
|
+
}
|
84
|
+
);
|
85
|
+
compilation.mainTemplate.hooks.modules.tap(
|
86
|
+
"JavascriptModulesPlugin",
|
87
|
+
(source, chunk, hash, moduleTemplate, dependencyTemplates) => {
|
88
|
+
return Template.renderChunkModules(
|
89
|
+
chunk,
|
90
|
+
m => typeof m.source === "function",
|
91
|
+
moduleTemplate,
|
92
|
+
dependencyTemplates,
|
93
|
+
"/******/ "
|
94
|
+
);
|
95
|
+
}
|
96
|
+
);
|
97
|
+
compilation.chunkTemplate.hooks.renderManifest.tap(
|
98
|
+
"JavascriptModulesPlugin",
|
99
|
+
(result, options) => {
|
100
|
+
const chunk = options.chunk;
|
101
|
+
const outputOptions = options.outputOptions;
|
102
|
+
const moduleTemplates = options.moduleTemplates;
|
103
|
+
const dependencyTemplates = options.dependencyTemplates;
|
104
|
+
|
105
|
+
let filenameTemplate;
|
106
|
+
if (chunk.filenameTemplate)
|
107
|
+
filenameTemplate = chunk.filenameTemplate;
|
108
|
+
else filenameTemplate = outputOptions.chunkFilename;
|
109
|
+
|
110
|
+
result.push({
|
111
|
+
render: () =>
|
112
|
+
this.renderJavascript(
|
113
|
+
compilation.chunkTemplate,
|
114
|
+
chunk,
|
115
|
+
moduleTemplates.javascript,
|
116
|
+
dependencyTemplates
|
117
|
+
),
|
118
|
+
filenameTemplate,
|
119
|
+
pathOptions: {
|
120
|
+
chunk,
|
121
|
+
contentHashType: "javascript"
|
122
|
+
},
|
123
|
+
identifier: `chunk${chunk.id}`,
|
124
|
+
hash: chunk.hash
|
125
|
+
});
|
126
|
+
|
127
|
+
return result;
|
128
|
+
}
|
129
|
+
);
|
130
|
+
compilation.hooks.contentHash.tap("JavascriptModulesPlugin", chunk => {
|
131
|
+
const outputOptions = compilation.outputOptions;
|
132
|
+
const {
|
133
|
+
hashSalt,
|
134
|
+
hashDigest,
|
135
|
+
hashDigestLength,
|
136
|
+
hashFunction
|
137
|
+
} = outputOptions;
|
138
|
+
const hash = createHash(hashFunction);
|
139
|
+
if (hashSalt) hash.update(hashSalt);
|
140
|
+
const template = chunk.hasRuntime()
|
141
|
+
? compilation.mainTemplate
|
142
|
+
: compilation.chunkTemplate;
|
143
|
+
template.updateHashForChunk(hash, chunk);
|
144
|
+
for (const m of chunk.modulesIterable) {
|
145
|
+
if (typeof m.source === "function") {
|
146
|
+
hash.update(m.hash);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
chunk.contentHash.javascript = hash
|
150
|
+
.digest(hashDigest)
|
151
|
+
.substr(0, hashDigestLength);
|
152
|
+
});
|
153
|
+
}
|
154
|
+
);
|
155
|
+
}
|
156
|
+
|
157
|
+
renderJavascript(chunkTemplate, chunk, moduleTemplate, dependencyTemplates) {
|
158
|
+
const moduleSources = Template.renderChunkModules(
|
159
|
+
chunk,
|
160
|
+
m => typeof m.source === "function",
|
161
|
+
moduleTemplate,
|
162
|
+
dependencyTemplates
|
163
|
+
);
|
164
|
+
const core = chunkTemplate.hooks.modules.call(
|
165
|
+
moduleSources,
|
166
|
+
chunk,
|
167
|
+
moduleTemplate,
|
168
|
+
dependencyTemplates
|
169
|
+
);
|
170
|
+
let source = chunkTemplate.hooks.render.call(
|
171
|
+
core,
|
172
|
+
chunk,
|
173
|
+
moduleTemplate,
|
174
|
+
dependencyTemplates
|
175
|
+
);
|
176
|
+
if (chunk.hasEntryModule()) {
|
177
|
+
source = chunkTemplate.hooks.renderWithEntry.call(source, chunk);
|
178
|
+
}
|
179
|
+
chunk.rendered = true;
|
180
|
+
return new ConcatSource(source, ";");
|
181
|
+
}
|
182
|
+
}
|
183
|
+
|
184
|
+
module.exports = JavascriptModulesPlugin;
|
package/lib/JsonGenerator.js
CHANGED
@@ -1,42 +1,42 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ConcatSource = require("webpack-sources")
|
8
|
-
|
9
|
-
const stringifySafe = data =>
|
10
|
-
JSON.stringify(data).replace(
|
11
|
-
/\u2028|\u2029/g,
|
12
|
-
str => (str === "\u2029" ? "\\u2029" : "\\u2028")
|
13
|
-
); // invalid in JavaScript but valid JSON
|
14
|
-
|
15
|
-
class JsonGenerator {
|
16
|
-
generate(module, dependencyTemplates, runtimeTemplate) {
|
17
|
-
const source = new ConcatSource();
|
18
|
-
const data = module.buildInfo.jsonData;
|
19
|
-
if (
|
20
|
-
Array.isArray(module.buildMeta.providedExports) &&
|
21
|
-
!module.isUsed("default")
|
22
|
-
) {
|
23
|
-
// Only some exports are used: We can optimize here, by only generating a part of the JSON
|
24
|
-
const reducedJson = {};
|
25
|
-
for (const exportName of module.buildMeta.providedExports) {
|
26
|
-
if (exportName === "default") continue;
|
27
|
-
const used = module.isUsed(exportName);
|
28
|
-
if (used) {
|
29
|
-
reducedJson[used] = data[exportName];
|
30
|
-
}
|
31
|
-
}
|
32
|
-
source.add(
|
33
|
-
`${module.moduleArgument}.exports = ${stringifySafe(reducedJson)};`
|
34
|
-
);
|
35
|
-
} else {
|
36
|
-
source.add(`${module.moduleArgument}.exports = ${stringifySafe(data)};`);
|
37
|
-
}
|
38
|
-
return source;
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
module.exports = JsonGenerator;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { ConcatSource } = require("webpack-sources");
|
8
|
+
|
9
|
+
const stringifySafe = data =>
|
10
|
+
JSON.stringify(data).replace(
|
11
|
+
/\u2028|\u2029/g,
|
12
|
+
str => (str === "\u2029" ? "\\u2029" : "\\u2028")
|
13
|
+
); // invalid in JavaScript but valid JSON
|
14
|
+
|
15
|
+
class JsonGenerator {
|
16
|
+
generate(module, dependencyTemplates, runtimeTemplate) {
|
17
|
+
const source = new ConcatSource();
|
18
|
+
const data = module.buildInfo.jsonData;
|
19
|
+
if (
|
20
|
+
Array.isArray(module.buildMeta.providedExports) &&
|
21
|
+
!module.isUsed("default")
|
22
|
+
) {
|
23
|
+
// Only some exports are used: We can optimize here, by only generating a part of the JSON
|
24
|
+
const reducedJson = {};
|
25
|
+
for (const exportName of module.buildMeta.providedExports) {
|
26
|
+
if (exportName === "default") continue;
|
27
|
+
const used = module.isUsed(exportName);
|
28
|
+
if (used) {
|
29
|
+
reducedJson[used] = data[exportName];
|
30
|
+
}
|
31
|
+
}
|
32
|
+
source.add(
|
33
|
+
`${module.moduleArgument}.exports = ${stringifySafe(reducedJson)};`
|
34
|
+
);
|
35
|
+
} else {
|
36
|
+
source.add(`${module.moduleArgument}.exports = ${stringifySafe(data)};`);
|
37
|
+
}
|
38
|
+
return source;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
module.exports = JsonGenerator;
|