webpack 4.9.1 → 4.10.2
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 +755 -755
- package/SECURITY.md +9 -9
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/hot/dev-server.js +61 -61
- package/hot/log-apply-result.js +44 -44
- package/hot/log.js +45 -45
- package/hot/only-dev-server.js +105 -105
- package/hot/poll.js +37 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -75
- package/lib/AsyncDependenciesBlock.js +66 -66
- package/lib/AsyncDependencyToInitialChunkError.js +31 -21
- package/lib/AutomaticPrefetchPlugin.js +50 -50
- package/lib/BannerPlugin.js +3 -1
- package/lib/BasicEvaluatedExpression.js +211 -208
- package/lib/CachePlugin.js +102 -95
- package/lib/CaseSensitiveModulesWarning.js +71 -53
- package/lib/Chunk.js +750 -722
- package/lib/ChunkGroup.js +13 -5
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CompatibilityPlugin.js +63 -63
- package/lib/Compilation.js +1947 -1905
- package/lib/Compiler.js +508 -496
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -242
- package/lib/ContextExclusionPlugin.js +17 -17
- package/lib/ContextModule.js +749 -710
- package/lib/ContextModuleFactory.js +256 -245
- package/lib/ContextReplacementPlugin.js +133 -126
- package/lib/DefinePlugin.js +206 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DelegatedModuleFactoryPlugin.js +89 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +89 -87
- package/lib/DependenciesBlockVariable.js +52 -51
- package/lib/Dependency.js +51 -51
- package/lib/DllEntryPlugin.js +51 -51
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -42
- package/lib/DllReferencePlugin.js +84 -84
- package/lib/DynamicEntryPlugin.js +73 -71
- package/lib/EntryOptionPlugin.js +33 -33
- package/lib/EnvironmentPlugin.js +65 -65
- package/lib/ErrorHelpers.js +60 -57
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -61
- package/lib/EvalSourceMapDevToolPlugin.js +41 -40
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -40
- package/lib/ExtendedAPIPlugin.js +84 -84
- package/lib/ExternalModule.js +159 -159
- package/lib/ExternalModuleFactoryPlugin.js +110 -110
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagDependencyUsagePlugin.js +110 -104
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModulePlugin.js +19 -19
- package/lib/FunctionModuleTemplatePlugin.js +100 -98
- package/lib/GraphHelpers.js +64 -64
- package/lib/HarmonyLinkingError.js +18 -18
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacement.runtime.js +7 -3
- package/lib/HotModuleReplacementPlugin.js +413 -406
- package/lib/HotUpdateChunk.js +16 -16
- package/lib/HotUpdateChunkTemplate.js +78 -78
- package/lib/IgnorePlugin.js +71 -71
- package/lib/JavascriptGenerator.js +229 -228
- package/lib/JavascriptModulesPlugin.js +179 -184
- package/lib/JsonGenerator.js +42 -42
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -26
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -119
- package/lib/LoaderOptionsPlugin.js +53 -52
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MainTemplate.js +34 -9
- package/lib/Module.js +381 -377
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +35 -25
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +178 -166
- package/lib/ModuleParseError.js +44 -44
- package/lib/ModuleReason.js +40 -40
- package/lib/ModuleTemplate.js +84 -84
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +283 -271
- package/lib/MultiEntryPlugin.js +58 -58
- package/lib/MultiModule.js +81 -78
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiStats.js +92 -92
- package/lib/MultiWatching.js +38 -38
- package/lib/NamedChunksPlugin.js +29 -29
- package/lib/NamedModulesPlugin.js +57 -57
- package/lib/NoEmitOnErrorsPlugin.js +20 -20
- package/lib/NoModeWarning.js +23 -23
- package/lib/NodeStuffPlugin.js +179 -178
- package/lib/NormalModule.js +497 -490
- package/lib/NormalModuleFactory.js +501 -483
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/OptionsDefaulter.js +84 -80
- package/lib/Parser.js +2164 -2086
- package/lib/ParserHelpers.js +103 -100
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +231 -231
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -54
- package/lib/RecordIdsPlugin.js +166 -162
- package/lib/RemovedPluginError.js +13 -13
- package/lib/RequestShortener.js +81 -74
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuleSet.js +555 -534
- package/lib/RuntimeTemplate.js +320 -277
- package/lib/SetVarMainTemplatePlugin.js +69 -57
- package/lib/SingleEntryPlugin.js +44 -44
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -300
- package/lib/Stats.js +1408 -1367
- package/lib/Template.js +4 -2
- package/lib/TemplatedPathPlugin.js +173 -170
- package/lib/UmdMainTemplatePlugin.js +304 -264
- package/lib/UseStrictPlugin.js +48 -48
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -36
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -193
- package/lib/WebpackError.js +25 -19
- package/lib/WebpackOptionsApply.js +421 -405
- package/lib/WebpackOptionsDefaulter.js +347 -344
- package/lib/WebpackOptionsValidationError.js +345 -316
- package/lib/compareLocations.js +56 -56
- package/lib/dependencies/AMDDefineDependency.js +137 -137
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -327
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlock.js +43 -43
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +273 -270
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +130 -130
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DependencyReference.js +18 -18
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -90
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportExpressionDependency.js +53 -53
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -603
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -54
- package/lib/dependencies/HarmonyImportDependency.js +104 -94
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +217 -214
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +166 -156
- package/lib/dependencies/HarmonyInitDependency.js +60 -60
- package/lib/dependencies/HarmonyModulesPlugin.js +146 -146
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -26
- package/lib/dependencies/ImportContextDependency.js +23 -23
- package/lib/dependencies/ImportDependenciesBlock.js +18 -18
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +233 -232
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +26 -26
- package/lib/dependencies/LoaderPlugin.js +98 -93
- package/lib/dependencies/LocalModuleDependency.js +28 -28
- package/lib/dependencies/LocalModulesHelpers.js +52 -45
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -141
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -112
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependency.js +39 -39
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -44
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/dependencies/getFunctionExpression.js +52 -52
- package/lib/formatLocation.js +61 -53
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeEnvironmentPlugin.js +28 -28
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplate.runtime.js +27 -27
- package/lib/node/NodeMainTemplateAsync.runtime.js +44 -44
- package/lib/node/NodeMainTemplatePlugin.js +323 -320
- package/lib/node/NodeSourcePlugin.js +144 -140
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -82
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +52 -52
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -281
- package/lib/optimize/ChunkModuleIdRangePlugin.js +68 -68
- package/lib/optimize/ConcatenatedModule.js +1420 -1413
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -70
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -99
- package/lib/optimize/LimitChunkCountPlugin.js +66 -66
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -75
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/ModuleConcatenationPlugin.js +470 -457
- package/lib/optimize/OccurrenceOrderPlugin.js +133 -126
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -117
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +158 -156
- package/lib/optimize/SplitChunksPlugin.js +709 -696
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +31 -31
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/Semaphore.js +41 -41
- package/lib/util/SortableSet.js +5 -2
- package/lib/util/StackedSetMap.js +12 -5
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/createHash.js +77 -77
- package/lib/util/identifier.js +76 -76
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +18 -18
- package/lib/wasm/WasmMainTemplatePlugin.js +310 -304
- package/lib/wasm/WebAssemblyGenerator.js +143 -19
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +90 -107
- package/lib/wasm/WebAssemblyModulesPlugin.js +80 -80
- package/lib/wasm/WebAssemblyParser.js +28 -5
- package/lib/wasm/WebAssemblyUtils.js +48 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +25 -25
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -64
- package/lib/web/JsonpMainTemplatePlugin.js +576 -574
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/webpack.js +183 -182
- package/lib/webpack.web.js +31 -31
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -64
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +179 -179
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1988 -1988
- package/schemas/ajv.absolutePath.js +55 -55
- package/schemas/plugins/DllPlugin.json +32 -32
- 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,104 +1,110 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const addToSet = (a, b) => {
|
8
|
-
for (const item of b) {
|
9
|
-
if (!a.includes(item)) a.push(item);
|
10
|
-
}
|
11
|
-
return a;
|
12
|
-
};
|
13
|
-
|
14
|
-
const isSubset = (biggerSet, subset) => {
|
15
|
-
if (biggerSet === true) return true;
|
16
|
-
if (subset === true) return false;
|
17
|
-
return subset.every(item => biggerSet.indexOf(item) >= 0);
|
18
|
-
};
|
19
|
-
|
20
|
-
class FlagDependencyUsagePlugin {
|
21
|
-
apply(compiler) {
|
22
|
-
compiler.hooks.compilation.tap("FlagDependencyUsagePlugin", compilation => {
|
23
|
-
compilation.hooks.
|
24
|
-
"FlagDependencyUsagePlugin",
|
25
|
-
modules => {
|
26
|
-
const processModule = (module, usedExports) => {
|
27
|
-
module.used = true;
|
28
|
-
if (module.usedExports === true) return;
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
module.usedExports
|
33
|
-
|
34
|
-
usedExports
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
const
|
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
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const addToSet = (a, b) => {
|
8
|
+
for (const item of b) {
|
9
|
+
if (!a.includes(item)) a.push(item);
|
10
|
+
}
|
11
|
+
return a;
|
12
|
+
};
|
13
|
+
|
14
|
+
const isSubset = (biggerSet, subset) => {
|
15
|
+
if (biggerSet === true) return true;
|
16
|
+
if (subset === true) return false;
|
17
|
+
return subset.every(item => biggerSet.indexOf(item) >= 0);
|
18
|
+
};
|
19
|
+
|
20
|
+
class FlagDependencyUsagePlugin {
|
21
|
+
apply(compiler) {
|
22
|
+
compiler.hooks.compilation.tap("FlagDependencyUsagePlugin", compilation => {
|
23
|
+
compilation.hooks.optimizeDependencies.tap(
|
24
|
+
"FlagDependencyUsagePlugin",
|
25
|
+
modules => {
|
26
|
+
const processModule = (module, usedExports) => {
|
27
|
+
module.used = true;
|
28
|
+
if (module.usedExports === true) return;
|
29
|
+
if (usedExports === true) {
|
30
|
+
module.usedExports = true;
|
31
|
+
} else if (Array.isArray(usedExports)) {
|
32
|
+
const old = module.usedExports ? module.usedExports.length : -1;
|
33
|
+
module.usedExports = addToSet(
|
34
|
+
module.usedExports || [],
|
35
|
+
usedExports
|
36
|
+
);
|
37
|
+
if (module.usedExports.length === old) {
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
} else if (Array.isArray(module.usedExports)) {
|
41
|
+
return;
|
42
|
+
} else {
|
43
|
+
module.usedExports = false;
|
44
|
+
}
|
45
|
+
|
46
|
+
// for a module without side effects we stop tracking usage here when no export is used
|
47
|
+
// This module won't be evaluated in this case
|
48
|
+
if (module.factoryMeta.sideEffectFree) {
|
49
|
+
if (module.usedExports === false) return;
|
50
|
+
if (
|
51
|
+
Array.isArray(module.usedExports) &&
|
52
|
+
module.usedExports.length === 0
|
53
|
+
)
|
54
|
+
return;
|
55
|
+
}
|
56
|
+
|
57
|
+
queue.push([module, module.usedExports]);
|
58
|
+
};
|
59
|
+
|
60
|
+
const processDependenciesBlock = (depBlock, usedExports) => {
|
61
|
+
for (const dep of depBlock.dependencies) {
|
62
|
+
processDependency(dep);
|
63
|
+
}
|
64
|
+
for (const variable of depBlock.variables) {
|
65
|
+
for (const dep of variable.dependencies) {
|
66
|
+
processDependency(dep);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
for (const block of depBlock.blocks) {
|
70
|
+
queue.push([block, usedExports]);
|
71
|
+
}
|
72
|
+
};
|
73
|
+
|
74
|
+
const processDependency = dep => {
|
75
|
+
const reference = dep.getReference && dep.getReference();
|
76
|
+
if (!reference) return;
|
77
|
+
const module = reference.module;
|
78
|
+
const importedNames = reference.importedNames;
|
79
|
+
const oldUsed = module.used;
|
80
|
+
const oldUsedExports = module.usedExports;
|
81
|
+
if (
|
82
|
+
!oldUsed ||
|
83
|
+
(importedNames &&
|
84
|
+
(!oldUsedExports || !isSubset(oldUsedExports, importedNames)))
|
85
|
+
) {
|
86
|
+
processModule(module, importedNames);
|
87
|
+
}
|
88
|
+
};
|
89
|
+
|
90
|
+
for (const module of modules) {
|
91
|
+
module.used = false;
|
92
|
+
}
|
93
|
+
|
94
|
+
const queue = [];
|
95
|
+
for (const preparedEntrypoint of compilation._preparedEntrypoints) {
|
96
|
+
if (preparedEntrypoint.module) {
|
97
|
+
processModule(preparedEntrypoint.module, true);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
while (queue.length) {
|
102
|
+
const queueItem = queue.pop();
|
103
|
+
processDependenciesBlock(queueItem[0], queueItem[1]);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
);
|
107
|
+
});
|
108
|
+
}
|
109
|
+
}
|
110
|
+
module.exports = FlagDependencyUsagePlugin;
|
@@ -1,36 +1,36 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class FlagInitialModulesAsUsedPlugin {
|
8
|
-
constructor(explanation) {
|
9
|
-
this.explanation = explanation;
|
10
|
-
}
|
11
|
-
|
12
|
-
apply(compiler) {
|
13
|
-
compiler.hooks.compilation.tap(
|
14
|
-
"FlagInitialModulesAsUsedPlugin",
|
15
|
-
compilation => {
|
16
|
-
compilation.hooks.afterOptimizeChunks.tap(
|
17
|
-
"FlagInitialModulesAsUsedPlugin",
|
18
|
-
chunks => {
|
19
|
-
for (const chunk of chunks) {
|
20
|
-
if (!chunk.isOnlyInitial()) {
|
21
|
-
return;
|
22
|
-
}
|
23
|
-
for (const module of chunk.modulesIterable) {
|
24
|
-
module.used = true;
|
25
|
-
module.usedExports = true;
|
26
|
-
module.addReason(null, null, this.explanation);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
);
|
31
|
-
}
|
32
|
-
);
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
module.exports = FlagInitialModulesAsUsedPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class FlagInitialModulesAsUsedPlugin {
|
8
|
+
constructor(explanation) {
|
9
|
+
this.explanation = explanation;
|
10
|
+
}
|
11
|
+
|
12
|
+
apply(compiler) {
|
13
|
+
compiler.hooks.compilation.tap(
|
14
|
+
"FlagInitialModulesAsUsedPlugin",
|
15
|
+
compilation => {
|
16
|
+
compilation.hooks.afterOptimizeChunks.tap(
|
17
|
+
"FlagInitialModulesAsUsedPlugin",
|
18
|
+
chunks => {
|
19
|
+
for (const chunk of chunks) {
|
20
|
+
if (!chunk.isOnlyInitial()) {
|
21
|
+
return;
|
22
|
+
}
|
23
|
+
for (const module of chunk.modulesIterable) {
|
24
|
+
module.used = true;
|
25
|
+
module.usedExports = true;
|
26
|
+
module.addReason(null, null, this.explanation);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
);
|
31
|
+
}
|
32
|
+
);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
module.exports = FlagInitialModulesAsUsedPlugin;
|
@@ -1,19 +1,19 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
|
8
|
-
|
9
|
-
class FunctionModulePlugin {
|
10
|
-
apply(compiler) {
|
11
|
-
compiler.hooks.compilation.tap("FunctionModulePlugin", compilation => {
|
12
|
-
new FunctionModuleTemplatePlugin().apply(
|
13
|
-
compilation.moduleTemplates.javascript
|
14
|
-
);
|
15
|
-
});
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
19
|
-
module.exports = FunctionModulePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
|
8
|
+
|
9
|
+
class FunctionModulePlugin {
|
10
|
+
apply(compiler) {
|
11
|
+
compiler.hooks.compilation.tap("FunctionModulePlugin", compilation => {
|
12
|
+
new FunctionModuleTemplatePlugin().apply(
|
13
|
+
compilation.moduleTemplates.javascript
|
14
|
+
);
|
15
|
+
});
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
module.exports = FunctionModulePlugin;
|
@@ -1,98 +1,100 @@
|
|
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
|
-
const Template = require("./Template");
|
9
|
-
|
10
|
-
class FunctionModuleTemplatePlugin {
|
11
|
-
apply(moduleTemplate) {
|
12
|
-
moduleTemplate.hooks.render.tap(
|
13
|
-
"FunctionModuleTemplatePlugin",
|
14
|
-
(moduleSource, module) => {
|
15
|
-
const source = new ConcatSource();
|
16
|
-
const args = [module.moduleArgument];
|
17
|
-
// TODO remove HACK checking type for javascript
|
18
|
-
if (module.type && module.type.startsWith("javascript")) {
|
19
|
-
args.push(module.exportsArgument);
|
20
|
-
if (module.hasDependencies(d => d.requireWebpackRequire !== false)) {
|
21
|
-
args.push("__webpack_require__");
|
22
|
-
}
|
23
|
-
} else if (module.type && module.type.startsWith("json")) {
|
24
|
-
// no additional arguments needed
|
25
|
-
} else {
|
26
|
-
args.push(module.exportsArgument, "__webpack_require__");
|
27
|
-
}
|
28
|
-
source.add("/***/ (function(" + args.join(", ") + ") {\n\n");
|
29
|
-
if (module.buildInfo.strict) source.add('"use strict";\n');
|
30
|
-
source.add(moduleSource);
|
31
|
-
source.add("\n\n/***/ })");
|
32
|
-
return source;
|
33
|
-
}
|
34
|
-
);
|
35
|
-
|
36
|
-
moduleTemplate.hooks.package.tap(
|
37
|
-
"FunctionModuleTemplatePlugin",
|
38
|
-
(moduleSource, module) => {
|
39
|
-
if (moduleTemplate.runtimeTemplate.outputOptions.pathinfo) {
|
40
|
-
const source = new ConcatSource();
|
41
|
-
const req = module.readableIdentifier(
|
42
|
-
moduleTemplate.runtimeTemplate.requestShortener
|
43
|
-
);
|
44
|
-
source.add("/*!****" + req.replace(/./g, "*") + "****!*\\\n");
|
45
|
-
source.add(" !*** " + req.replace(/\*\//g, "*_/") + " ***!\n");
|
46
|
-
source.add(" \\****" + req.replace(/./g, "*") + "****/\n");
|
47
|
-
if (
|
48
|
-
Array.isArray(module.buildMeta.providedExports) &&
|
49
|
-
module.buildMeta.providedExports.length === 0
|
50
|
-
)
|
51
|
-
source.add(Template.toComment("no exports provided") + "\n");
|
52
|
-
else if (Array.isArray(module.buildMeta.providedExports))
|
53
|
-
source.add(
|
54
|
-
Template.toComment(
|
55
|
-
"exports provided: " +
|
56
|
-
module.buildMeta.providedExports.join(", ")
|
57
|
-
) + "\n"
|
58
|
-
);
|
59
|
-
else if (module.buildMeta.providedExports)
|
60
|
-
source.add(Template.toComment("no static exports found") + "\n");
|
61
|
-
|
62
|
-
|
63
|
-
module.usedExports
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
code = text;
|
81
|
-
}
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
}
|
98
|
-
|
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
|
+
const Template = require("./Template");
|
9
|
+
|
10
|
+
class FunctionModuleTemplatePlugin {
|
11
|
+
apply(moduleTemplate) {
|
12
|
+
moduleTemplate.hooks.render.tap(
|
13
|
+
"FunctionModuleTemplatePlugin",
|
14
|
+
(moduleSource, module) => {
|
15
|
+
const source = new ConcatSource();
|
16
|
+
const args = [module.moduleArgument];
|
17
|
+
// TODO remove HACK checking type for javascript
|
18
|
+
if (module.type && module.type.startsWith("javascript")) {
|
19
|
+
args.push(module.exportsArgument);
|
20
|
+
if (module.hasDependencies(d => d.requireWebpackRequire !== false)) {
|
21
|
+
args.push("__webpack_require__");
|
22
|
+
}
|
23
|
+
} else if (module.type && module.type.startsWith("json")) {
|
24
|
+
// no additional arguments needed
|
25
|
+
} else {
|
26
|
+
args.push(module.exportsArgument, "__webpack_require__");
|
27
|
+
}
|
28
|
+
source.add("/***/ (function(" + args.join(", ") + ") {\n\n");
|
29
|
+
if (module.buildInfo.strict) source.add('"use strict";\n');
|
30
|
+
source.add(moduleSource);
|
31
|
+
source.add("\n\n/***/ })");
|
32
|
+
return source;
|
33
|
+
}
|
34
|
+
);
|
35
|
+
|
36
|
+
moduleTemplate.hooks.package.tap(
|
37
|
+
"FunctionModuleTemplatePlugin",
|
38
|
+
(moduleSource, module) => {
|
39
|
+
if (moduleTemplate.runtimeTemplate.outputOptions.pathinfo) {
|
40
|
+
const source = new ConcatSource();
|
41
|
+
const req = module.readableIdentifier(
|
42
|
+
moduleTemplate.runtimeTemplate.requestShortener
|
43
|
+
);
|
44
|
+
source.add("/*!****" + req.replace(/./g, "*") + "****!*\\\n");
|
45
|
+
source.add(" !*** " + req.replace(/\*\//g, "*_/") + " ***!\n");
|
46
|
+
source.add(" \\****" + req.replace(/./g, "*") + "****/\n");
|
47
|
+
if (
|
48
|
+
Array.isArray(module.buildMeta.providedExports) &&
|
49
|
+
module.buildMeta.providedExports.length === 0
|
50
|
+
) {
|
51
|
+
source.add(Template.toComment("no exports provided") + "\n");
|
52
|
+
} else if (Array.isArray(module.buildMeta.providedExports)) {
|
53
|
+
source.add(
|
54
|
+
Template.toComment(
|
55
|
+
"exports provided: " +
|
56
|
+
module.buildMeta.providedExports.join(", ")
|
57
|
+
) + "\n"
|
58
|
+
);
|
59
|
+
} else if (module.buildMeta.providedExports) {
|
60
|
+
source.add(Template.toComment("no static exports found") + "\n");
|
61
|
+
}
|
62
|
+
if (
|
63
|
+
Array.isArray(module.usedExports) &&
|
64
|
+
module.usedExports.length === 0
|
65
|
+
) {
|
66
|
+
source.add(Template.toComment("no exports used") + "\n");
|
67
|
+
} else if (Array.isArray(module.usedExports)) {
|
68
|
+
source.add(
|
69
|
+
Template.toComment(
|
70
|
+
"exports used: " + module.usedExports.join(", ")
|
71
|
+
) + "\n"
|
72
|
+
);
|
73
|
+
} else if (module.usedExports) {
|
74
|
+
source.add(Template.toComment("all exports used") + "\n");
|
75
|
+
}
|
76
|
+
if (module.optimizationBailout) {
|
77
|
+
for (const text of module.optimizationBailout) {
|
78
|
+
let code;
|
79
|
+
if (typeof text === "function") {
|
80
|
+
code = text(moduleTemplate.runtimeTemplate.requestShortener);
|
81
|
+
} else {
|
82
|
+
code = text;
|
83
|
+
}
|
84
|
+
source.add(Template.toComment(`${code}`) + "\n");
|
85
|
+
}
|
86
|
+
}
|
87
|
+
source.add(moduleSource);
|
88
|
+
return source;
|
89
|
+
}
|
90
|
+
return moduleSource;
|
91
|
+
}
|
92
|
+
);
|
93
|
+
|
94
|
+
moduleTemplate.hooks.hash.tap("FunctionModuleTemplatePlugin", hash => {
|
95
|
+
hash.update("FunctionModuleTemplatePlugin");
|
96
|
+
hash.update("2");
|
97
|
+
});
|
98
|
+
}
|
99
|
+
}
|
100
|
+
module.exports = FunctionModuleTemplatePlugin;
|
package/lib/GraphHelpers.js
CHANGED
@@ -1,64 +1,64 @@
|
|
1
|
-
/** @typedef {import("./Chunk")} Chunk */
|
2
|
-
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
3
|
-
/** @typedef {import("./Module")} Module */
|
4
|
-
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
5
|
-
|
6
|
-
/**
|
7
|
-
* @param {ChunkGroup} chunkGroup the ChunkGroup to connect
|
8
|
-
* @param {Chunk} chunk chunk to tie to ChunkGroup
|
9
|
-
* @returns {void}
|
10
|
-
*/
|
11
|
-
const connectChunkGroupAndChunk = (chunkGroup, chunk) => {
|
12
|
-
if (chunkGroup.pushChunk(chunk)) {
|
13
|
-
chunk.addGroup(chunkGroup);
|
14
|
-
}
|
15
|
-
};
|
16
|
-
|
17
|
-
/**
|
18
|
-
* @param {ChunkGroup} parent parent ChunkGroup to connect
|
19
|
-
* @param {ChunkGroup} child child ChunkGroup to connect
|
20
|
-
* @returns {void}
|
21
|
-
*/
|
22
|
-
const connectChunkGroupParentAndChild = (parent, child) => {
|
23
|
-
if (parent.addChild(child)) {
|
24
|
-
child.addParent(parent);
|
25
|
-
}
|
26
|
-
};
|
27
|
-
|
28
|
-
/**
|
29
|
-
* @param {Chunk} chunk Chunk to connect to Module
|
30
|
-
* @param {Module} module Module to connect to Chunk
|
31
|
-
* @returns {void}
|
32
|
-
*/
|
33
|
-
const connectChunkAndModule = (chunk, module) => {
|
34
|
-
if (module.addChunk(chunk)) {
|
35
|
-
chunk.addModule(module);
|
36
|
-
}
|
37
|
-
};
|
38
|
-
|
39
|
-
/**
|
40
|
-
* @param {Chunk} chunk Chunk being disconnected
|
41
|
-
* @param {Module} module Module being disconnected
|
42
|
-
* @returns {void}
|
43
|
-
*/
|
44
|
-
const disconnectChunkAndModule = (chunk, module) => {
|
45
|
-
chunk.removeModule(module);
|
46
|
-
module.removeChunk(chunk);
|
47
|
-
};
|
48
|
-
|
49
|
-
/**
|
50
|
-
* @param {DependenciesBlock} depBlock DepBlock being tied to ChunkGroup
|
51
|
-
* @param {ChunkGroup} chunkGroup ChunkGroup being tied to DepBlock
|
52
|
-
* @returns {void}
|
53
|
-
*/
|
54
|
-
const connectDependenciesBlockAndChunkGroup = (depBlock, chunkGroup) => {
|
55
|
-
if (chunkGroup.addBlock(depBlock)) {
|
56
|
-
depBlock.chunkGroup = chunkGroup;
|
57
|
-
}
|
58
|
-
};
|
59
|
-
|
60
|
-
exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
|
61
|
-
exports.connectChunkGroupParentAndChild = connectChunkGroupParentAndChild;
|
62
|
-
exports.connectChunkAndModule = connectChunkAndModule;
|
63
|
-
exports.disconnectChunkAndModule = disconnectChunkAndModule;
|
64
|
-
exports.connectDependenciesBlockAndChunkGroup = connectDependenciesBlockAndChunkGroup;
|
1
|
+
/** @typedef {import("./Chunk")} Chunk */
|
2
|
+
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
3
|
+
/** @typedef {import("./Module")} Module */
|
4
|
+
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @param {ChunkGroup} chunkGroup the ChunkGroup to connect
|
8
|
+
* @param {Chunk} chunk chunk to tie to ChunkGroup
|
9
|
+
* @returns {void}
|
10
|
+
*/
|
11
|
+
const connectChunkGroupAndChunk = (chunkGroup, chunk) => {
|
12
|
+
if (chunkGroup.pushChunk(chunk)) {
|
13
|
+
chunk.addGroup(chunkGroup);
|
14
|
+
}
|
15
|
+
};
|
16
|
+
|
17
|
+
/**
|
18
|
+
* @param {ChunkGroup} parent parent ChunkGroup to connect
|
19
|
+
* @param {ChunkGroup} child child ChunkGroup to connect
|
20
|
+
* @returns {void}
|
21
|
+
*/
|
22
|
+
const connectChunkGroupParentAndChild = (parent, child) => {
|
23
|
+
if (parent.addChild(child)) {
|
24
|
+
child.addParent(parent);
|
25
|
+
}
|
26
|
+
};
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @param {Chunk} chunk Chunk to connect to Module
|
30
|
+
* @param {Module} module Module to connect to Chunk
|
31
|
+
* @returns {void}
|
32
|
+
*/
|
33
|
+
const connectChunkAndModule = (chunk, module) => {
|
34
|
+
if (module.addChunk(chunk)) {
|
35
|
+
chunk.addModule(module);
|
36
|
+
}
|
37
|
+
};
|
38
|
+
|
39
|
+
/**
|
40
|
+
* @param {Chunk} chunk Chunk being disconnected
|
41
|
+
* @param {Module} module Module being disconnected
|
42
|
+
* @returns {void}
|
43
|
+
*/
|
44
|
+
const disconnectChunkAndModule = (chunk, module) => {
|
45
|
+
chunk.removeModule(module);
|
46
|
+
module.removeChunk(chunk);
|
47
|
+
};
|
48
|
+
|
49
|
+
/**
|
50
|
+
* @param {DependenciesBlock} depBlock DepBlock being tied to ChunkGroup
|
51
|
+
* @param {ChunkGroup} chunkGroup ChunkGroup being tied to DepBlock
|
52
|
+
* @returns {void}
|
53
|
+
*/
|
54
|
+
const connectDependenciesBlockAndChunkGroup = (depBlock, chunkGroup) => {
|
55
|
+
if (chunkGroup.addBlock(depBlock)) {
|
56
|
+
depBlock.chunkGroup = chunkGroup;
|
57
|
+
}
|
58
|
+
};
|
59
|
+
|
60
|
+
exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
|
61
|
+
exports.connectChunkGroupParentAndChild = connectChunkGroupParentAndChild;
|
62
|
+
exports.connectChunkAndModule = connectChunkAndModule;
|
63
|
+
exports.disconnectChunkAndModule = disconnectChunkAndModule;
|
64
|
+
exports.connectDependenciesBlockAndChunkGroup = connectDependenciesBlockAndChunkGroup;
|