webpack 4.15.0 → 4.16.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/LICENSE +20 -20
- package/README.md +761 -758
- package/SECURITY.md +9 -9
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/dev-server.js +61 -61
- package/hot/emitter.js +2 -2
- 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 +40 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -87
- package/lib/AsyncDependencyToInitialChunkError.js +31 -31
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +117 -117
- package/lib/BasicEvaluatedExpression.js +211 -211
- package/lib/CachePlugin.js +102 -102
- package/lib/CaseSensitiveModulesWarning.js +67 -67
- package/lib/Chunk.js +833 -811
- package/lib/ChunkGroup.js +4 -4
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CommentCompilationWarning.js +2 -2
- package/lib/CompatibilityPlugin.js +70 -70
- package/lib/Compilation.js +46 -15
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -258
- package/lib/ContextExclusionPlugin.js +28 -17
- package/lib/ContextModule.js +844 -739
- package/lib/ContextModuleFactory.js +262 -256
- package/lib/ContextReplacementPlugin.js +133 -133
- package/lib/DefinePlugin.js +49 -0
- package/lib/DelegatedModule.js +5 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +1 -1
- package/lib/Dependency.js +10 -4
- package/lib/DllModule.js +60 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -44
- package/lib/DllReferencePlugin.js +132 -84
- package/lib/EntryModuleNotFoundError.js +21 -21
- package/lib/Entrypoint.js +54 -54
- package/lib/EnvironmentPlugin.js +72 -65
- package/lib/ErrorHelpers.js +60 -60
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +115 -115
- package/lib/EvalSourceMapDevToolPlugin.js +41 -41
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -53
- package/lib/ExternalModule.js +165 -159
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModuleTemplatePlugin.js +100 -100
- package/lib/Generator.js +60 -52
- package/lib/HarmonyLinkingError.js +17 -17
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacementPlugin.js +411 -413
- package/lib/IgnorePlugin.js +90 -90
- package/lib/JavascriptGenerator.js +229 -229
- package/lib/JavascriptModulesPlugin.js +179 -179
- package/lib/JsonGenerator.js +55 -55
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -27
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -153
- package/lib/LoaderOptionsPlugin.js +53 -53
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +431 -391
- package/lib/ModuleBuildError.js +52 -52
- package/lib/ModuleDependencyError.js +35 -35
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +36 -36
- package/lib/ModuleFilenameHelpers.js +178 -178
- package/lib/ModuleNotFoundError.js +23 -23
- package/lib/ModuleParseError.js +57 -57
- package/lib/ModuleTemplate.js +93 -93
- package/lib/ModuleWarning.js +36 -36
- package/lib/MultiCompiler.js +283 -283
- package/lib/MultiModule.js +87 -81
- 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 +197 -179
- package/lib/NormalModule.js +542 -536
- package/lib/NormalModuleFactory.js +526 -526
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/OptionsDefaulter.js +84 -84
- package/lib/Parser.js +2202 -2193
- package/lib/ParserHelpers.js +103 -103
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +246 -246
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -56
- package/lib/RecordIdsPlugin.js +230 -230
- package/lib/RemovedPluginError.js +11 -11
- package/lib/RequestShortener.js +83 -83
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuntimeTemplate.js +12 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -69
- package/lib/SingleEntryPlugin.js +6 -1
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -301
- package/lib/Stats.js +28 -5
- package/lib/TemplatedPathPlugin.js +173 -173
- package/lib/UnsupportedFeatureWarning.js +22 -22
- package/lib/UseStrictPlugin.js +54 -54
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -37
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -194
- package/lib/WebpackOptionsApply.js +92 -10
- package/lib/WebpackOptionsDefaulter.js +368 -354
- package/lib/debug/ProfilingPlugin.js +430 -430
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +6 -0
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyHelpers.js +142 -142
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -92
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyImportDependency.js +109 -109
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -222
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +167 -167
- 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 +263 -263
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/LoaderPlugin.js +18 -1
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +52 -52
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -143
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -116
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +29 -29
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -48
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/formatLocation.js +75 -61
- 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/NodeMainTemplatePlugin.js +323 -323
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +144 -144
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -99
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -61
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -287
- package/lib/optimize/ConcatenatedModule.js +5 -0
- 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 -78
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +61 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +103 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -133
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -42
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -127
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +168 -168
- package/lib/optimize/SplitChunksPlugin.js +866 -850
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -30
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/SortableSet.js +1 -0
- package/lib/util/StackedSetMap.js +144 -135
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/deterministicGrouping.js +251 -251
- package/lib/util/identifier.js +103 -103
- package/lib/util/objectToMap.js +16 -16
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -17
- package/lib/wasm/WasmFinalizeExportsPlugin.js +1 -1
- package/lib/wasm/WebAssemblyGenerator.js +16 -2
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +147 -133
- package/lib/wasm/WebAssemblyParser.js +174 -174
- package/lib/wasm/WebAssemblyUtils.js +59 -59
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -37
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -65
- package/lib/web/JsonpMainTemplatePlugin.js +1 -1
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +5 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -65
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +196 -196
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +22 -13
- package/schemas/WebpackOptions.json +2062 -2036
- package/schemas/ajv.absolutePath.js +55 -55
- package/schemas/plugins/BannerPlugin.json +96 -96
- 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
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +10 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +10 -0
@@ -1,30 +1,30 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Sean Larkin @thelarkinn
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("../WebpackError");
|
8
|
-
const SizeFormatHelpers = require("../SizeFormatHelpers");
|
9
|
-
|
10
|
-
module.exports = class AssetsOverSizeLimitWarning extends WebpackError {
|
11
|
-
constructor(assetsOverSizeLimit, assetLimit) {
|
12
|
-
const assetLists = assetsOverSizeLimit
|
13
|
-
.map(
|
14
|
-
asset =>
|
15
|
-
`\n ${asset.name} (${SizeFormatHelpers.formatSize(asset.size)})`
|
16
|
-
)
|
17
|
-
.join("");
|
18
|
-
|
19
|
-
super(`asset size limit: The following asset(s) exceed the recommended size limit (${SizeFormatHelpers.formatSize(
|
20
|
-
assetLimit
|
21
|
-
)}).
|
22
|
-
This can impact web performance.
|
23
|
-
Assets: ${assetLists}`);
|
24
|
-
|
25
|
-
this.name = "AssetsOverSizeLimitWarning";
|
26
|
-
this.assets = assetsOverSizeLimit;
|
27
|
-
|
28
|
-
Error.captureStackTrace(this, this.constructor);
|
29
|
-
}
|
30
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @thelarkinn
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("../WebpackError");
|
8
|
+
const SizeFormatHelpers = require("../SizeFormatHelpers");
|
9
|
+
|
10
|
+
module.exports = class AssetsOverSizeLimitWarning extends WebpackError {
|
11
|
+
constructor(assetsOverSizeLimit, assetLimit) {
|
12
|
+
const assetLists = assetsOverSizeLimit
|
13
|
+
.map(
|
14
|
+
asset =>
|
15
|
+
`\n ${asset.name} (${SizeFormatHelpers.formatSize(asset.size)})`
|
16
|
+
)
|
17
|
+
.join("");
|
18
|
+
|
19
|
+
super(`asset size limit: The following asset(s) exceed the recommended size limit (${SizeFormatHelpers.formatSize(
|
20
|
+
assetLimit
|
21
|
+
)}).
|
22
|
+
This can impact web performance.
|
23
|
+
Assets: ${assetLists}`);
|
24
|
+
|
25
|
+
this.name = "AssetsOverSizeLimitWarning";
|
26
|
+
this.assets = assetsOverSizeLimit;
|
27
|
+
|
28
|
+
Error.captureStackTrace(this, this.constructor);
|
29
|
+
}
|
30
|
+
};
|
@@ -1,30 +1,30 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Sean Larkin @thelarkinn
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("../WebpackError");
|
8
|
-
const SizeFormatHelpers = require("../SizeFormatHelpers");
|
9
|
-
|
10
|
-
module.exports = class EntrypointsOverSizeLimitWarning extends WebpackError {
|
11
|
-
constructor(entrypoints, entrypointLimit) {
|
12
|
-
const entrypointList = entrypoints
|
13
|
-
.map(
|
14
|
-
entrypoint =>
|
15
|
-
`\n ${entrypoint.name} (${SizeFormatHelpers.formatSize(
|
16
|
-
entrypoint.size
|
17
|
-
)})\n${entrypoint.files.map(asset => ` ${asset}`).join("\n")}`
|
18
|
-
)
|
19
|
-
.join("");
|
20
|
-
super(`entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (${SizeFormatHelpers.formatSize(
|
21
|
-
entrypointLimit
|
22
|
-
)}). This can impact web performance.
|
23
|
-
Entrypoints:${entrypointList}\n`);
|
24
|
-
|
25
|
-
this.name = "EntrypointsOverSizeLimitWarning";
|
26
|
-
this.entrypoints = entrypoints;
|
27
|
-
|
28
|
-
Error.captureStackTrace(this, this.constructor);
|
29
|
-
}
|
30
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @thelarkinn
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("../WebpackError");
|
8
|
+
const SizeFormatHelpers = require("../SizeFormatHelpers");
|
9
|
+
|
10
|
+
module.exports = class EntrypointsOverSizeLimitWarning extends WebpackError {
|
11
|
+
constructor(entrypoints, entrypointLimit) {
|
12
|
+
const entrypointList = entrypoints
|
13
|
+
.map(
|
14
|
+
entrypoint =>
|
15
|
+
`\n ${entrypoint.name} (${SizeFormatHelpers.formatSize(
|
16
|
+
entrypoint.size
|
17
|
+
)})\n${entrypoint.files.map(asset => ` ${asset}`).join("\n")}`
|
18
|
+
)
|
19
|
+
.join("");
|
20
|
+
super(`entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (${SizeFormatHelpers.formatSize(
|
21
|
+
entrypointLimit
|
22
|
+
)}). This can impact web performance.
|
23
|
+
Entrypoints:${entrypointList}\n`);
|
24
|
+
|
25
|
+
this.name = "EntrypointsOverSizeLimitWarning";
|
26
|
+
this.entrypoints = entrypoints;
|
27
|
+
|
28
|
+
Error.captureStackTrace(this, this.constructor);
|
29
|
+
}
|
30
|
+
};
|
@@ -1,21 +1,21 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Sean Larkin @thelarkinn
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WebpackError = require("../WebpackError");
|
8
|
-
|
9
|
-
module.exports = class NoAsyncChunksWarning extends WebpackError {
|
10
|
-
constructor() {
|
11
|
-
super(
|
12
|
-
"webpack performance recommendations: \n" +
|
13
|
-
"You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n" +
|
14
|
-
"For more info visit https://webpack.js.org/guides/code-splitting/"
|
15
|
-
);
|
16
|
-
|
17
|
-
this.name = "NoAsyncChunksWarning";
|
18
|
-
|
19
|
-
Error.captureStackTrace(this, this.constructor);
|
20
|
-
}
|
21
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @thelarkinn
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WebpackError = require("../WebpackError");
|
8
|
+
|
9
|
+
module.exports = class NoAsyncChunksWarning extends WebpackError {
|
10
|
+
constructor() {
|
11
|
+
super(
|
12
|
+
"webpack performance recommendations: \n" +
|
13
|
+
"You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n" +
|
14
|
+
"For more info visit https://webpack.js.org/guides/code-splitting/"
|
15
|
+
);
|
16
|
+
|
17
|
+
this.name = "NoAsyncChunksWarning";
|
18
|
+
|
19
|
+
Error.captureStackTrace(this, this.constructor);
|
20
|
+
}
|
21
|
+
};
|
@@ -1,105 +1,105 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Sean Larkin @thelarkinn
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
|
7
|
-
const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
|
8
|
-
const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
9
|
-
|
10
|
-
module.exports = class SizeLimitsPlugin {
|
11
|
-
constructor(options) {
|
12
|
-
this.hints = options.hints;
|
13
|
-
this.maxAssetSize = options.maxAssetSize;
|
14
|
-
this.maxEntrypointSize = options.maxEntrypointSize;
|
15
|
-
this.assetFilter = options.assetFilter;
|
16
|
-
}
|
17
|
-
apply(compiler) {
|
18
|
-
const entrypointSizeLimit = this.maxEntrypointSize;
|
19
|
-
const assetSizeLimit = this.maxAssetSize;
|
20
|
-
const hints = this.hints;
|
21
|
-
const assetFilter = this.assetFilter || (asset => !asset.endsWith(".map"));
|
22
|
-
|
23
|
-
compiler.hooks.afterEmit.tap("SizeLimitsPlugin", compilation => {
|
24
|
-
const warnings = [];
|
25
|
-
|
26
|
-
const getEntrypointSize = entrypoint =>
|
27
|
-
entrypoint.getFiles().reduce((currentSize, file) => {
|
28
|
-
if (assetFilter(file) && compilation.assets[file]) {
|
29
|
-
return currentSize + compilation.assets[file].size();
|
30
|
-
}
|
31
|
-
|
32
|
-
return currentSize;
|
33
|
-
}, 0);
|
34
|
-
|
35
|
-
const assetsOverSizeLimit = [];
|
36
|
-
for (const assetName of Object.keys(compilation.assets)) {
|
37
|
-
if (!assetFilter(assetName)) {
|
38
|
-
continue;
|
39
|
-
}
|
40
|
-
|
41
|
-
const asset = compilation.assets[assetName];
|
42
|
-
const size = asset.size();
|
43
|
-
if (size > assetSizeLimit) {
|
44
|
-
assetsOverSizeLimit.push({
|
45
|
-
name: assetName,
|
46
|
-
size: size
|
47
|
-
});
|
48
|
-
asset.isOverSizeLimit = true;
|
49
|
-
}
|
50
|
-
}
|
51
|
-
|
52
|
-
const entrypointsOverLimit = [];
|
53
|
-
for (const pair of compilation.entrypoints) {
|
54
|
-
const name = pair[0];
|
55
|
-
const entry = pair[1];
|
56
|
-
const size = getEntrypointSize(entry);
|
57
|
-
|
58
|
-
if (size > entrypointSizeLimit) {
|
59
|
-
entrypointsOverLimit.push({
|
60
|
-
name: name,
|
61
|
-
size: size,
|
62
|
-
files: entry.getFiles().filter(assetFilter)
|
63
|
-
});
|
64
|
-
entry.isOverSizeLimit = true;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
|
68
|
-
if (hints) {
|
69
|
-
// 1. Individual Chunk: Size < 250kb
|
70
|
-
// 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
|
71
|
-
// 3. No Async Chunks
|
72
|
-
// if !1, then 2, if !2 return
|
73
|
-
if (assetsOverSizeLimit.length > 0) {
|
74
|
-
warnings.push(
|
75
|
-
new AssetsOverSizeLimitWarning(assetsOverSizeLimit, assetSizeLimit)
|
76
|
-
);
|
77
|
-
}
|
78
|
-
if (entrypointsOverLimit.length > 0) {
|
79
|
-
warnings.push(
|
80
|
-
new EntrypointsOverSizeLimitWarning(
|
81
|
-
entrypointsOverLimit,
|
82
|
-
entrypointSizeLimit
|
83
|
-
)
|
84
|
-
);
|
85
|
-
}
|
86
|
-
|
87
|
-
if (warnings.length > 0) {
|
88
|
-
const hasAsyncChunks =
|
89
|
-
compilation.chunks.filter(chunk => !chunk.canBeInitial()).length >
|
90
|
-
0;
|
91
|
-
|
92
|
-
if (!hasAsyncChunks) {
|
93
|
-
warnings.push(new NoAsyncChunksWarning());
|
94
|
-
}
|
95
|
-
|
96
|
-
if (hints === "error") {
|
97
|
-
compilation.errors.push(...warnings);
|
98
|
-
} else {
|
99
|
-
compilation.warnings.push(...warnings);
|
100
|
-
}
|
101
|
-
}
|
102
|
-
}
|
103
|
-
});
|
104
|
-
}
|
105
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @thelarkinn
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const EntrypointsOverSizeLimitWarning = require("./EntrypointsOverSizeLimitWarning");
|
7
|
+
const AssetsOverSizeLimitWarning = require("./AssetsOverSizeLimitWarning");
|
8
|
+
const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
9
|
+
|
10
|
+
module.exports = class SizeLimitsPlugin {
|
11
|
+
constructor(options) {
|
12
|
+
this.hints = options.hints;
|
13
|
+
this.maxAssetSize = options.maxAssetSize;
|
14
|
+
this.maxEntrypointSize = options.maxEntrypointSize;
|
15
|
+
this.assetFilter = options.assetFilter;
|
16
|
+
}
|
17
|
+
apply(compiler) {
|
18
|
+
const entrypointSizeLimit = this.maxEntrypointSize;
|
19
|
+
const assetSizeLimit = this.maxAssetSize;
|
20
|
+
const hints = this.hints;
|
21
|
+
const assetFilter = this.assetFilter || (asset => !asset.endsWith(".map"));
|
22
|
+
|
23
|
+
compiler.hooks.afterEmit.tap("SizeLimitsPlugin", compilation => {
|
24
|
+
const warnings = [];
|
25
|
+
|
26
|
+
const getEntrypointSize = entrypoint =>
|
27
|
+
entrypoint.getFiles().reduce((currentSize, file) => {
|
28
|
+
if (assetFilter(file) && compilation.assets[file]) {
|
29
|
+
return currentSize + compilation.assets[file].size();
|
30
|
+
}
|
31
|
+
|
32
|
+
return currentSize;
|
33
|
+
}, 0);
|
34
|
+
|
35
|
+
const assetsOverSizeLimit = [];
|
36
|
+
for (const assetName of Object.keys(compilation.assets)) {
|
37
|
+
if (!assetFilter(assetName)) {
|
38
|
+
continue;
|
39
|
+
}
|
40
|
+
|
41
|
+
const asset = compilation.assets[assetName];
|
42
|
+
const size = asset.size();
|
43
|
+
if (size > assetSizeLimit) {
|
44
|
+
assetsOverSizeLimit.push({
|
45
|
+
name: assetName,
|
46
|
+
size: size
|
47
|
+
});
|
48
|
+
asset.isOverSizeLimit = true;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
const entrypointsOverLimit = [];
|
53
|
+
for (const pair of compilation.entrypoints) {
|
54
|
+
const name = pair[0];
|
55
|
+
const entry = pair[1];
|
56
|
+
const size = getEntrypointSize(entry);
|
57
|
+
|
58
|
+
if (size > entrypointSizeLimit) {
|
59
|
+
entrypointsOverLimit.push({
|
60
|
+
name: name,
|
61
|
+
size: size,
|
62
|
+
files: entry.getFiles().filter(assetFilter)
|
63
|
+
});
|
64
|
+
entry.isOverSizeLimit = true;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
if (hints) {
|
69
|
+
// 1. Individual Chunk: Size < 250kb
|
70
|
+
// 2. Collective Initial Chunks [entrypoint] (Each Set?): Size < 250kb
|
71
|
+
// 3. No Async Chunks
|
72
|
+
// if !1, then 2, if !2 return
|
73
|
+
if (assetsOverSizeLimit.length > 0) {
|
74
|
+
warnings.push(
|
75
|
+
new AssetsOverSizeLimitWarning(assetsOverSizeLimit, assetSizeLimit)
|
76
|
+
);
|
77
|
+
}
|
78
|
+
if (entrypointsOverLimit.length > 0) {
|
79
|
+
warnings.push(
|
80
|
+
new EntrypointsOverSizeLimitWarning(
|
81
|
+
entrypointsOverLimit,
|
82
|
+
entrypointSizeLimit
|
83
|
+
)
|
84
|
+
);
|
85
|
+
}
|
86
|
+
|
87
|
+
if (warnings.length > 0) {
|
88
|
+
const hasAsyncChunks =
|
89
|
+
compilation.chunks.filter(chunk => !chunk.canBeInitial()).length >
|
90
|
+
0;
|
91
|
+
|
92
|
+
if (!hasAsyncChunks) {
|
93
|
+
warnings.push(new NoAsyncChunksWarning());
|
94
|
+
}
|
95
|
+
|
96
|
+
if (hints === "error") {
|
97
|
+
compilation.errors.push(...warnings);
|
98
|
+
} else {
|
99
|
+
compilation.warnings.push(...warnings);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
});
|
104
|
+
}
|
105
|
+
};
|
package/lib/util/SortableSet.js
CHANGED
@@ -1,135 +1,144 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const util = require("util");
|
8
|
-
|
9
|
-
const TOMBSTONE = {};
|
10
|
-
const UNDEFINED_MARKER = {};
|
11
|
-
|
12
|
-
class StackedSetMap {
|
13
|
-
constructor(parentStack) {
|
14
|
-
this.stack = parentStack === undefined ? [] : parentStack.slice();
|
15
|
-
this.map = new Map();
|
16
|
-
this.stack.push(this.map);
|
17
|
-
}
|
18
|
-
|
19
|
-
add(item) {
|
20
|
-
this.map.set(item, true);
|
21
|
-
}
|
22
|
-
|
23
|
-
set(item, value) {
|
24
|
-
this.map.set(item, value === undefined ? UNDEFINED_MARKER : value);
|
25
|
-
}
|
26
|
-
|
27
|
-
delete(item) {
|
28
|
-
if (this.stack.length > 1) {
|
29
|
-
this.map.set(item, TOMBSTONE);
|
30
|
-
} else {
|
31
|
-
this.map.delete(item);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
has(item) {
|
36
|
-
const topValue = this.map.get(item);
|
37
|
-
if (topValue !== undefined) return topValue !== TOMBSTONE;
|
38
|
-
if (this.stack.length > 1) {
|
39
|
-
for (var i = this.stack.length - 2; i >= 0; i--) {
|
40
|
-
const value = this.stack[i].get(item);
|
41
|
-
if (value !== undefined) {
|
42
|
-
this.map.set(item, value);
|
43
|
-
return value !== TOMBSTONE;
|
44
|
-
}
|
45
|
-
}
|
46
|
-
this.map.set(item, TOMBSTONE);
|
47
|
-
}
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
|
51
|
-
get(item) {
|
52
|
-
const topValue = this.map.get(item);
|
53
|
-
if (topValue !== undefined) {
|
54
|
-
return topValue === TOMBSTONE || topValue === UNDEFINED_MARKER
|
55
|
-
? undefined
|
56
|
-
: topValue;
|
57
|
-
}
|
58
|
-
if (this.stack.length > 1) {
|
59
|
-
for (var i = this.stack.length - 2; i >= 0; i--) {
|
60
|
-
const value = this.stack[i].get(item);
|
61
|
-
if (value !== undefined) {
|
62
|
-
this.map.set(item, value);
|
63
|
-
return value === TOMBSTONE || value === UNDEFINED_MARKER
|
64
|
-
? undefined
|
65
|
-
: value;
|
66
|
-
}
|
67
|
-
}
|
68
|
-
this.map.set(item, TOMBSTONE);
|
69
|
-
}
|
70
|
-
return undefined;
|
71
|
-
}
|
72
|
-
|
73
|
-
_compress() {
|
74
|
-
if (this.stack.length === 1) return;
|
75
|
-
this.map = new Map();
|
76
|
-
for (const data of this.stack) {
|
77
|
-
for (const pair of data) {
|
78
|
-
if (pair[1] === TOMBSTONE) {
|
79
|
-
this.map.delete(pair[0]);
|
80
|
-
} else {
|
81
|
-
this.map.set(pair[0], pair[1]);
|
82
|
-
}
|
83
|
-
}
|
84
|
-
}
|
85
|
-
this.stack = [this.map];
|
86
|
-
}
|
87
|
-
|
88
|
-
asArray() {
|
89
|
-
this._compress();
|
90
|
-
return Array.from(this.map.entries(), pair => pair[0]);
|
91
|
-
}
|
92
|
-
|
93
|
-
asSet() {
|
94
|
-
return new Set(this.asArray());
|
95
|
-
}
|
96
|
-
|
97
|
-
asPairArray() {
|
98
|
-
this._compress();
|
99
|
-
return Array.from(
|
100
|
-
this.map.entries(),
|
101
|
-
pair =>
|
102
|
-
/** @type {[TODO, TODO]} */ (pair[1] === UNDEFINED_MARKER
|
103
|
-
? [pair[0], undefined]
|
104
|
-
: pair)
|
105
|
-
);
|
106
|
-
}
|
107
|
-
|
108
|
-
asMap() {
|
109
|
-
return new Map(this.asPairArray());
|
110
|
-
}
|
111
|
-
|
112
|
-
get size() {
|
113
|
-
this._compress();
|
114
|
-
return this.map.size;
|
115
|
-
}
|
116
|
-
|
117
|
-
createChild() {
|
118
|
-
return new StackedSetMap(this.stack);
|
119
|
-
}
|
120
|
-
|
121
|
-
get length() {
|
122
|
-
throw new Error("This is no longer an Array");
|
123
|
-
}
|
124
|
-
|
125
|
-
set length(value) {
|
126
|
-
throw new Error("This is no longer an Array");
|
127
|
-
}
|
128
|
-
}
|
129
|
-
|
130
|
-
// TODO remove in webpack 5
|
131
|
-
StackedSetMap.prototype.push = util.deprecate(
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const util = require("util");
|
8
|
+
|
9
|
+
const TOMBSTONE = {};
|
10
|
+
const UNDEFINED_MARKER = {};
|
11
|
+
|
12
|
+
class StackedSetMap {
|
13
|
+
constructor(parentStack) {
|
14
|
+
this.stack = parentStack === undefined ? [] : parentStack.slice();
|
15
|
+
this.map = new Map();
|
16
|
+
this.stack.push(this.map);
|
17
|
+
}
|
18
|
+
|
19
|
+
add(item) {
|
20
|
+
this.map.set(item, true);
|
21
|
+
}
|
22
|
+
|
23
|
+
set(item, value) {
|
24
|
+
this.map.set(item, value === undefined ? UNDEFINED_MARKER : value);
|
25
|
+
}
|
26
|
+
|
27
|
+
delete(item) {
|
28
|
+
if (this.stack.length > 1) {
|
29
|
+
this.map.set(item, TOMBSTONE);
|
30
|
+
} else {
|
31
|
+
this.map.delete(item);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
has(item) {
|
36
|
+
const topValue = this.map.get(item);
|
37
|
+
if (topValue !== undefined) return topValue !== TOMBSTONE;
|
38
|
+
if (this.stack.length > 1) {
|
39
|
+
for (var i = this.stack.length - 2; i >= 0; i--) {
|
40
|
+
const value = this.stack[i].get(item);
|
41
|
+
if (value !== undefined) {
|
42
|
+
this.map.set(item, value);
|
43
|
+
return value !== TOMBSTONE;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
this.map.set(item, TOMBSTONE);
|
47
|
+
}
|
48
|
+
return false;
|
49
|
+
}
|
50
|
+
|
51
|
+
get(item) {
|
52
|
+
const topValue = this.map.get(item);
|
53
|
+
if (topValue !== undefined) {
|
54
|
+
return topValue === TOMBSTONE || topValue === UNDEFINED_MARKER
|
55
|
+
? undefined
|
56
|
+
: topValue;
|
57
|
+
}
|
58
|
+
if (this.stack.length > 1) {
|
59
|
+
for (var i = this.stack.length - 2; i >= 0; i--) {
|
60
|
+
const value = this.stack[i].get(item);
|
61
|
+
if (value !== undefined) {
|
62
|
+
this.map.set(item, value);
|
63
|
+
return value === TOMBSTONE || value === UNDEFINED_MARKER
|
64
|
+
? undefined
|
65
|
+
: value;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
this.map.set(item, TOMBSTONE);
|
69
|
+
}
|
70
|
+
return undefined;
|
71
|
+
}
|
72
|
+
|
73
|
+
_compress() {
|
74
|
+
if (this.stack.length === 1) return;
|
75
|
+
this.map = new Map();
|
76
|
+
for (const data of this.stack) {
|
77
|
+
for (const pair of data) {
|
78
|
+
if (pair[1] === TOMBSTONE) {
|
79
|
+
this.map.delete(pair[0]);
|
80
|
+
} else {
|
81
|
+
this.map.set(pair[0], pair[1]);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
this.stack = [this.map];
|
86
|
+
}
|
87
|
+
|
88
|
+
asArray() {
|
89
|
+
this._compress();
|
90
|
+
return Array.from(this.map.entries(), pair => pair[0]);
|
91
|
+
}
|
92
|
+
|
93
|
+
asSet() {
|
94
|
+
return new Set(this.asArray());
|
95
|
+
}
|
96
|
+
|
97
|
+
asPairArray() {
|
98
|
+
this._compress();
|
99
|
+
return Array.from(
|
100
|
+
this.map.entries(),
|
101
|
+
pair =>
|
102
|
+
/** @type {[TODO, TODO]} */ (pair[1] === UNDEFINED_MARKER
|
103
|
+
? [pair[0], undefined]
|
104
|
+
: pair)
|
105
|
+
);
|
106
|
+
}
|
107
|
+
|
108
|
+
asMap() {
|
109
|
+
return new Map(this.asPairArray());
|
110
|
+
}
|
111
|
+
|
112
|
+
get size() {
|
113
|
+
this._compress();
|
114
|
+
return this.map.size;
|
115
|
+
}
|
116
|
+
|
117
|
+
createChild() {
|
118
|
+
return new StackedSetMap(this.stack);
|
119
|
+
}
|
120
|
+
|
121
|
+
get length() {
|
122
|
+
throw new Error("This is no longer an Array");
|
123
|
+
}
|
124
|
+
|
125
|
+
set length(value) {
|
126
|
+
throw new Error("This is no longer an Array");
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
// TODO remove in webpack 5
|
131
|
+
StackedSetMap.prototype.push = util.deprecate(
|
132
|
+
/**
|
133
|
+
* @deprecated
|
134
|
+
* @this {StackedSetMap}
|
135
|
+
* @param {any} item Item to add
|
136
|
+
* @returns {void}
|
137
|
+
*/
|
138
|
+
function(item) {
|
139
|
+
this.add(item);
|
140
|
+
},
|
141
|
+
"This is no longer an Array: Use add instead."
|
142
|
+
);
|
143
|
+
|
144
|
+
module.exports = StackedSetMap;
|