webpack 5.59.0 → 5.94.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 +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
@@ -28,11 +28,10 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
28
28
|
/** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
|
29
29
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
30
30
|
/** @typedef {import("../ChunkGroup")} ChunkGroup */
|
31
|
-
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
32
|
-
/** @typedef {import("../Compilation").PathData} PathData */
|
33
31
|
/** @typedef {import("../Compiler")} Compiler */
|
34
32
|
/** @typedef {import("../Module")} Module */
|
35
33
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
34
|
+
/** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
|
36
35
|
/** @typedef {import("../util/deterministicGrouping").GroupedItems<Module>} DeterministicGroupingGroupedItemsForModule */
|
37
36
|
/** @typedef {import("../util/deterministicGrouping").Options<Module>} DeterministicGroupingOptionsForModule */
|
38
37
|
|
@@ -41,7 +40,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
41
40
|
/**
|
42
41
|
* @callback ChunkFilterFunction
|
43
42
|
* @param {Chunk} chunk
|
44
|
-
* @returns {boolean}
|
43
|
+
* @returns {boolean | undefined}
|
45
44
|
*/
|
46
45
|
|
47
46
|
/**
|
@@ -52,7 +51,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
52
51
|
*/
|
53
52
|
|
54
53
|
/**
|
55
|
-
* @typedef {
|
54
|
+
* @typedef {object} CacheGroupSource
|
56
55
|
* @property {string=} key
|
57
56
|
* @property {number=} priority
|
58
57
|
* @property {GetName=} getName
|
@@ -67,15 +66,15 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
67
66
|
* @property {number=} minChunks
|
68
67
|
* @property {number=} maxAsyncRequests
|
69
68
|
* @property {number=} maxInitialRequests
|
70
|
-
* @property {
|
69
|
+
* @property {TemplatePath=} filename
|
71
70
|
* @property {string=} idHint
|
72
|
-
* @property {string} automaticNameDelimiter
|
71
|
+
* @property {string=} automaticNameDelimiter
|
73
72
|
* @property {boolean=} reuseExistingChunk
|
74
73
|
* @property {boolean=} usedExports
|
75
74
|
*/
|
76
75
|
|
77
76
|
/**
|
78
|
-
* @typedef {
|
77
|
+
* @typedef {object} CacheGroup
|
79
78
|
* @property {string} key
|
80
79
|
* @property {number=} priority
|
81
80
|
* @property {GetName=} getName
|
@@ -89,7 +88,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
89
88
|
* @property {number=} minChunks
|
90
89
|
* @property {number=} maxAsyncRequests
|
91
90
|
* @property {number=} maxInitialRequests
|
92
|
-
* @property {
|
91
|
+
* @property {TemplatePath=} filename
|
93
92
|
* @property {string=} idHint
|
94
93
|
* @property {string} automaticNameDelimiter
|
95
94
|
* @property {boolean} reuseExistingChunk
|
@@ -101,7 +100,8 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
101
100
|
*/
|
102
101
|
|
103
102
|
/**
|
104
|
-
* @typedef {
|
103
|
+
* @typedef {object} FallbackCacheGroup
|
104
|
+
* @property {ChunkFilterFunction} chunksFilter
|
105
105
|
* @property {SplitChunksSizes} minSize
|
106
106
|
* @property {SplitChunksSizes} maxAsyncSize
|
107
107
|
* @property {SplitChunksSizes} maxInitialSize
|
@@ -109,7 +109,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
109
109
|
*/
|
110
110
|
|
111
111
|
/**
|
112
|
-
* @typedef {
|
112
|
+
* @typedef {object} CacheGroupsContext
|
113
113
|
* @property {ModuleGraph} moduleGraph
|
114
114
|
* @property {ChunkGraph} chunkGraph
|
115
115
|
*/
|
@@ -130,7 +130,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
130
130
|
*/
|
131
131
|
|
132
132
|
/**
|
133
|
-
* @typedef {
|
133
|
+
* @typedef {object} SplitChunksOptions
|
134
134
|
* @property {ChunkFilterFunction} chunksFilter
|
135
135
|
* @property {string[]} defaultSizeTypes
|
136
136
|
* @property {SplitChunksSizes} minSize
|
@@ -143,7 +143,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
143
143
|
* @property {number} maxAsyncRequests
|
144
144
|
* @property {number} maxInitialRequests
|
145
145
|
* @property {boolean} hidePathInfo
|
146
|
-
* @property {
|
146
|
+
* @property {TemplatePath} filename
|
147
147
|
* @property {string} automaticNameDelimiter
|
148
148
|
* @property {GetCacheGroups} getCacheGroups
|
149
149
|
* @property {GetName} getName
|
@@ -152,23 +152,22 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
152
152
|
*/
|
153
153
|
|
154
154
|
/**
|
155
|
-
* @typedef {
|
155
|
+
* @typedef {object} ChunksInfoItem
|
156
156
|
* @property {SortableSet<Module>} modules
|
157
157
|
* @property {CacheGroup} cacheGroup
|
158
158
|
* @property {number} cacheGroupIndex
|
159
159
|
* @property {string} name
|
160
160
|
* @property {Record<string, number>} sizes
|
161
161
|
* @property {Set<Chunk>} chunks
|
162
|
-
* @property {Set<Chunk>}
|
162
|
+
* @property {Set<Chunk>} reusableChunks
|
163
163
|
* @property {Set<bigint | Chunk>} chunksKeys
|
164
164
|
*/
|
165
165
|
|
166
166
|
const defaultGetName = /** @type {GetName} */ (() => {});
|
167
167
|
|
168
168
|
const deterministicGroupingForModules =
|
169
|
-
/** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
|
170
|
-
|
171
|
-
);
|
169
|
+
/** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
|
170
|
+
(deterministicGrouping);
|
172
171
|
|
173
172
|
/** @type {WeakMap<Module, string>} */
|
174
173
|
const getKeyCache = new WeakMap();
|
@@ -179,11 +178,13 @@ const getKeyCache = new WeakMap();
|
|
179
178
|
* @returns {string} hashed filename
|
180
179
|
*/
|
181
180
|
const hashFilename = (name, outputOptions) => {
|
182
|
-
const digest =
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
181
|
+
const digest =
|
182
|
+
/** @type {string} */
|
183
|
+
(
|
184
|
+
createHash(outputOptions.hashFunction)
|
185
|
+
.update(name)
|
186
|
+
.digest(outputOptions.hashDigest)
|
187
|
+
);
|
187
188
|
return digest.slice(0, 8);
|
188
189
|
};
|
189
190
|
|
@@ -199,10 +200,21 @@ const getRequests = chunk => {
|
|
199
200
|
return requests;
|
200
201
|
};
|
201
202
|
|
203
|
+
/**
|
204
|
+
* @template {object} T
|
205
|
+
* @template {object} R
|
206
|
+
* @param {T} obj obj an object
|
207
|
+
* @param {function(T[keyof T], keyof T): T[keyof T]} fn fn
|
208
|
+
* @returns {T} result
|
209
|
+
*/
|
202
210
|
const mapObject = (obj, fn) => {
|
203
211
|
const newObj = Object.create(null);
|
204
212
|
for (const key of Object.keys(obj)) {
|
205
|
-
newObj[key] = fn(
|
213
|
+
newObj[key] = fn(
|
214
|
+
obj[/** @type {keyof T} */ (key)],
|
215
|
+
/** @type {keyof T} */
|
216
|
+
(key)
|
217
|
+
);
|
206
218
|
}
|
207
219
|
return newObj;
|
208
220
|
};
|
@@ -253,12 +265,24 @@ const compareEntries = (a, b) => {
|
|
253
265
|
return compareModuleIterables(modulesA, modulesB);
|
254
266
|
};
|
255
267
|
|
268
|
+
/**
|
269
|
+
* @param {Chunk} chunk the chunk
|
270
|
+
* @returns {boolean} true, if the chunk is an entry chunk
|
271
|
+
*/
|
256
272
|
const INITIAL_CHUNK_FILTER = chunk => chunk.canBeInitial();
|
273
|
+
/**
|
274
|
+
* @param {Chunk} chunk the chunk
|
275
|
+
* @returns {boolean} true, if the chunk is an async chunk
|
276
|
+
*/
|
257
277
|
const ASYNC_CHUNK_FILTER = chunk => !chunk.canBeInitial();
|
278
|
+
/**
|
279
|
+
* @param {Chunk} chunk the chunk
|
280
|
+
* @returns {boolean} always true
|
281
|
+
*/
|
258
282
|
const ALL_CHUNK_FILTER = chunk => true;
|
259
283
|
|
260
284
|
/**
|
261
|
-
* @param {OptimizationSplitChunksSizes} value the sizes
|
285
|
+
* @param {OptimizationSplitChunksSizes | undefined} value the sizes
|
262
286
|
* @param {string[]} defaultSizeTypes the default size types
|
263
287
|
* @returns {SplitChunksSizes} normalized representation
|
264
288
|
*/
|
@@ -270,13 +294,12 @@ const normalizeSizes = (value, defaultSizeTypes) => {
|
|
270
294
|
return o;
|
271
295
|
} else if (typeof value === "object" && value !== null) {
|
272
296
|
return { ...value };
|
273
|
-
} else {
|
274
|
-
return {};
|
275
297
|
}
|
298
|
+
return {};
|
276
299
|
};
|
277
300
|
|
278
301
|
/**
|
279
|
-
* @param {...SplitChunksSizes} sizes the sizes
|
302
|
+
* @param {...(SplitChunksSizes | undefined)} sizes the sizes
|
280
303
|
* @returns {SplitChunksSizes} the merged sizes
|
281
304
|
*/
|
282
305
|
const mergeSizes = (...sizes) => {
|
@@ -311,11 +334,7 @@ const combineSizes = (a, b, combine) => {
|
|
311
334
|
/** @type {SplitChunksSizes} */
|
312
335
|
const result = {};
|
313
336
|
for (const key of aKeys) {
|
314
|
-
|
315
|
-
result[key] = combine(a[key], b[key]);
|
316
|
-
} else {
|
317
|
-
result[key] = a[key];
|
318
|
-
}
|
337
|
+
result[key] = bKeys.has(key) ? combine(a[key], b[key]) : a[key];
|
319
338
|
}
|
320
339
|
for (const key of bKeys) {
|
321
340
|
if (!aKeys.has(key)) {
|
@@ -385,8 +404,8 @@ const totalSize = sizes => {
|
|
385
404
|
};
|
386
405
|
|
387
406
|
/**
|
388
|
-
* @param {false|string|Function} name the chunk name
|
389
|
-
* @returns {GetName} a function to get the name of the chunk
|
407
|
+
* @param {false|string|Function|undefined} name the chunk name
|
408
|
+
* @returns {GetName | undefined} a function to get the name of the chunk
|
390
409
|
*/
|
391
410
|
const normalizeName = name => {
|
392
411
|
if (typeof name === "string") {
|
@@ -411,6 +430,9 @@ const normalizeChunksFilter = chunks => {
|
|
411
430
|
if (chunks === "all") {
|
412
431
|
return ALL_CHUNK_FILTER;
|
413
432
|
}
|
433
|
+
if (chunks instanceof RegExp) {
|
434
|
+
return chunk => (chunk.name ? chunks.test(chunk.name) : false);
|
435
|
+
}
|
414
436
|
if (typeof chunks === "function") {
|
415
437
|
return chunks;
|
416
438
|
}
|
@@ -482,7 +504,7 @@ const normalizeCacheGroups = (cacheGroups, defaultSizeTypes) => {
|
|
482
504
|
*/
|
483
505
|
const fn = (module, context) => {
|
484
506
|
/** @type {CacheGroupSource[]} */
|
485
|
-
|
507
|
+
const results = [];
|
486
508
|
for (const fn of handlers) {
|
487
509
|
fn(module, context, results);
|
488
510
|
}
|
@@ -658,6 +680,9 @@ module.exports = class SplitChunksPlugin {
|
|
658
680
|
automaticNameDelimiter: options.automaticNameDelimiter,
|
659
681
|
usedExports: options.usedExports,
|
660
682
|
fallbackCacheGroup: {
|
683
|
+
chunksFilter: normalizeChunksFilter(
|
684
|
+
fallbackCacheGroup.chunks || options.chunks || "all"
|
685
|
+
),
|
661
686
|
minSize: mergeSizes(
|
662
687
|
normalizeSizes(fallbackCacheGroup.minSize, defaultSizeTypes),
|
663
688
|
minSize
|
@@ -728,20 +753,20 @@ module.exports = class SplitChunksPlugin {
|
|
728
753
|
cacheGroupSource.minChunks !== undefined
|
729
754
|
? cacheGroupSource.minChunks
|
730
755
|
: cacheGroupSource.enforce
|
731
|
-
|
732
|
-
|
756
|
+
? 1
|
757
|
+
: this.options.minChunks,
|
733
758
|
maxAsyncRequests:
|
734
759
|
cacheGroupSource.maxAsyncRequests !== undefined
|
735
760
|
? cacheGroupSource.maxAsyncRequests
|
736
761
|
: cacheGroupSource.enforce
|
737
|
-
|
738
|
-
|
762
|
+
? Infinity
|
763
|
+
: this.options.maxAsyncRequests,
|
739
764
|
maxInitialRequests:
|
740
765
|
cacheGroupSource.maxInitialRequests !== undefined
|
741
766
|
? cacheGroupSource.maxInitialRequests
|
742
767
|
: cacheGroupSource.enforce
|
743
|
-
|
744
|
-
|
768
|
+
? Infinity
|
769
|
+
: this.options.maxInitialRequests,
|
745
770
|
getName:
|
746
771
|
cacheGroupSource.getName !== undefined
|
747
772
|
? cacheGroupSource.getName
|
@@ -835,6 +860,10 @@ module.exports = class SplitChunksPlugin {
|
|
835
860
|
}
|
836
861
|
return key;
|
837
862
|
};
|
863
|
+
/**
|
864
|
+
* @param {bigint | Chunk} key key of the chunks
|
865
|
+
* @returns {string} stringified key
|
866
|
+
*/
|
838
867
|
const keyToString = key => {
|
839
868
|
if (typeof key === "bigint") return key.toString(16);
|
840
869
|
return chunkIndexMap.get(key).toString(16);
|
@@ -906,6 +935,10 @@ module.exports = class SplitChunksPlugin {
|
|
906
935
|
// group these set of chunks by count
|
907
936
|
// to allow to check less sets via isSubset
|
908
937
|
// (only smaller sets can be subset)
|
938
|
+
/**
|
939
|
+
* @param {IterableIterator<Set<Chunk>>} chunkSets set of sets of chunks
|
940
|
+
* @returns {Map<number, Array<Set<Chunk>>>} map of sets of chunks by count
|
941
|
+
*/
|
909
942
|
const groupChunkSetsByCount = chunkSets => {
|
910
943
|
/** @type {Map<number, Array<Set<Chunk>>>} */
|
911
944
|
const chunkSetsByCount = new Map();
|
@@ -994,7 +1027,7 @@ module.exports = class SplitChunksPlugin {
|
|
994
1027
|
getExportsCombinationsFactory()(key);
|
995
1028
|
|
996
1029
|
/**
|
997
|
-
* @typedef {
|
1030
|
+
* @typedef {object} SelectedChunksResult
|
998
1031
|
* @property {Chunk[]} chunks the list of chunks
|
999
1032
|
* @property {bigint | Chunk} key a key of the list
|
1000
1033
|
*/
|
@@ -1015,8 +1048,9 @@ module.exports = class SplitChunksPlugin {
|
|
1015
1048
|
entry = new WeakMap();
|
1016
1049
|
selectedChunksCacheByChunksSet.set(chunks, entry);
|
1017
1050
|
}
|
1018
|
-
|
1019
|
-
|
1051
|
+
let entry2 =
|
1052
|
+
/** @type {SelectedChunksResult} */
|
1053
|
+
(entry.get(chunkFilter));
|
1020
1054
|
if (entry2 === undefined) {
|
1021
1055
|
/** @type {Chunk[]} */
|
1022
1056
|
const selectedChunks = [];
|
@@ -1064,11 +1098,9 @@ module.exports = class SplitChunksPlugin {
|
|
1064
1098
|
// Break if minimum number of chunks is not reached
|
1065
1099
|
if (selectedChunks.length < cacheGroup.minChunks) return;
|
1066
1100
|
// Determine name for split chunk
|
1067
|
-
const name =
|
1068
|
-
|
1069
|
-
selectedChunks,
|
1070
|
-
cacheGroup.key
|
1071
|
-
);
|
1101
|
+
const name =
|
1102
|
+
/** @type {string} */
|
1103
|
+
(cacheGroup.getName(module, selectedChunks, cacheGroup.key));
|
1072
1104
|
// Check if the name is ok
|
1073
1105
|
const existingChunk = compilation.namedChunks.get(name);
|
1074
1106
|
if (existingChunk) {
|
@@ -1135,7 +1167,7 @@ module.exports = class SplitChunksPlugin {
|
|
1135
1167
|
? ` name:${name}`
|
1136
1168
|
: ` chunks:${keyToString(selectedChunksKey)}`);
|
1137
1169
|
// Add module to maps
|
1138
|
-
let info = chunksInfoMap.get(key);
|
1170
|
+
let info = /** @type {ChunksInfoItem} */ (chunksInfoMap.get(key));
|
1139
1171
|
if (info === undefined) {
|
1140
1172
|
chunksInfoMap.set(
|
1141
1173
|
key,
|
@@ -1149,7 +1181,7 @@ module.exports = class SplitChunksPlugin {
|
|
1149
1181
|
name,
|
1150
1182
|
sizes: {},
|
1151
1183
|
chunks: new Set(),
|
1152
|
-
|
1184
|
+
reusableChunks: new Set(),
|
1153
1185
|
chunksKeys: new Set()
|
1154
1186
|
})
|
1155
1187
|
);
|
@@ -1182,7 +1214,7 @@ module.exports = class SplitChunksPlugin {
|
|
1182
1214
|
// Walk through all modules
|
1183
1215
|
for (const module of compilation.modules) {
|
1184
1216
|
// Get cache group
|
1185
|
-
|
1217
|
+
const cacheGroups = this.options.getCacheGroups(module, context);
|
1186
1218
|
if (!Array.isArray(cacheGroups) || cacheGroups.length === 0) {
|
1187
1219
|
continue;
|
1188
1220
|
}
|
@@ -1200,7 +1232,9 @@ module.exports = class SplitChunksPlugin {
|
|
1200
1232
|
getExportsChunkSetsInGraph();
|
1201
1233
|
/** @type {Set<Set<Chunk> | Chunk>} */
|
1202
1234
|
const set = new Set();
|
1203
|
-
const groupedByUsedExports =
|
1235
|
+
const groupedByUsedExports =
|
1236
|
+
/** @type {Iterable<Chunk[]>} */
|
1237
|
+
(groupedByExportsMap.get(module));
|
1204
1238
|
for (const chunks of groupedByUsedExports) {
|
1205
1239
|
const chunksKey = getKey(chunks);
|
1206
1240
|
for (const comb of getExportsCombinations(chunksKey))
|
@@ -1224,7 +1258,10 @@ module.exports = class SplitChunksPlugin {
|
|
1224
1258
|
if (count < cacheGroup.minChunks) continue;
|
1225
1259
|
// Select chunks by configuration
|
1226
1260
|
const { chunks: selectedChunks, key: selectedChunksKey } =
|
1227
|
-
getSelectedChunks(
|
1261
|
+
getSelectedChunks(
|
1262
|
+
chunkCombination,
|
1263
|
+
/** @type {ChunkFilterFunction} */ (cacheGroup.chunksFilter)
|
1264
|
+
);
|
1228
1265
|
|
1229
1266
|
addModuleToChunksInfoMap(
|
1230
1267
|
cacheGroup,
|
@@ -1289,7 +1326,7 @@ module.exports = class SplitChunksPlugin {
|
|
1289
1326
|
}
|
1290
1327
|
|
1291
1328
|
/**
|
1292
|
-
* @typedef {
|
1329
|
+
* @typedef {object} MaxSizeQueueItem
|
1293
1330
|
* @property {SplitChunksSizes} minSize
|
1294
1331
|
* @property {SplitChunksSizes} maxAsyncSize
|
1295
1332
|
* @property {SplitChunksSizes} maxInitialSize
|
@@ -1316,12 +1353,13 @@ module.exports = class SplitChunksPlugin {
|
|
1316
1353
|
}
|
1317
1354
|
}
|
1318
1355
|
|
1319
|
-
const item = bestEntry;
|
1320
|
-
chunksInfoMap.delete(bestEntryKey);
|
1356
|
+
const item = /** @type {ChunksInfoItem} */ (bestEntry);
|
1357
|
+
chunksInfoMap.delete(/** @type {string} */ (bestEntryKey));
|
1321
1358
|
|
1359
|
+
/** @type {Chunk["name"] | undefined} */
|
1322
1360
|
let chunkName = item.name;
|
1323
1361
|
// Variable for the new chunk (lazy created)
|
1324
|
-
/** @type {Chunk} */
|
1362
|
+
/** @type {Chunk | undefined} */
|
1325
1363
|
let newChunk;
|
1326
1364
|
// When no chunk name, check if we can reuse a chunk instead of creating a new one
|
1327
1365
|
let isExistingChunk = false;
|
@@ -1390,16 +1428,20 @@ module.exports = class SplitChunksPlugin {
|
|
1390
1428
|
) {
|
1391
1429
|
for (const chunk of usedChunks) {
|
1392
1430
|
// respect max requests
|
1393
|
-
const maxRequests =
|
1394
|
-
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1431
|
+
const maxRequests = /** @type {number} */ (
|
1432
|
+
chunk.isOnlyInitial()
|
1433
|
+
? item.cacheGroup.maxInitialRequests
|
1434
|
+
: chunk.canBeInitial()
|
1435
|
+
? Math.min(
|
1436
|
+
/** @type {number} */
|
1437
|
+
(item.cacheGroup.maxInitialRequests),
|
1438
|
+
/** @type {number} */
|
1439
|
+
(item.cacheGroup.maxAsyncRequests)
|
1440
|
+
)
|
1441
|
+
: item.cacheGroup.maxAsyncRequests
|
1442
|
+
);
|
1401
1443
|
if (
|
1402
|
-
isFinite(maxRequests) &&
|
1444
|
+
Number.isFinite(maxRequests) &&
|
1403
1445
|
getRequests(chunk) >= maxRequests
|
1404
1446
|
) {
|
1405
1447
|
usedChunks.delete(chunk);
|
@@ -1417,8 +1459,12 @@ module.exports = class SplitChunksPlugin {
|
|
1417
1459
|
// Were some (invalid) chunks removed from usedChunks?
|
1418
1460
|
// => readd all modules to the queue, as things could have been changed
|
1419
1461
|
if (usedChunks.size < item.chunks.size) {
|
1420
|
-
if (isExistingChunk)
|
1421
|
-
|
1462
|
+
if (isExistingChunk)
|
1463
|
+
usedChunks.add(/** @type {Chunk} */ (newChunk));
|
1464
|
+
if (
|
1465
|
+
/** @type {number} */ (usedChunks.size) >=
|
1466
|
+
/** @type {number} */ (item.cacheGroup.minChunks)
|
1467
|
+
) {
|
1422
1468
|
const chunksArr = Array.from(usedChunks);
|
1423
1469
|
for (const module of item.modules) {
|
1424
1470
|
addModuleToChunksInfoMap(
|
@@ -1440,7 +1486,7 @@ module.exports = class SplitChunksPlugin {
|
|
1440
1486
|
usedChunks.size === 1
|
1441
1487
|
) {
|
1442
1488
|
const [chunk] = usedChunks;
|
1443
|
-
|
1489
|
+
const chunkSizes = Object.create(null);
|
1444
1490
|
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
1445
1491
|
if (!item.modules.has(module)) {
|
1446
1492
|
for (const type of module.getSourceTypes()) {
|
@@ -1462,7 +1508,7 @@ module.exports = class SplitChunksPlugin {
|
|
1462
1508
|
) {
|
1463
1509
|
// queue this item again to be processed again
|
1464
1510
|
// without violating modules
|
1465
|
-
chunksInfoMap.set(bestEntryKey, item);
|
1511
|
+
chunksInfoMap.set(/** @type {string} */ (bestEntryKey), item);
|
1466
1512
|
}
|
1467
1513
|
continue;
|
1468
1514
|
}
|
@@ -1480,7 +1526,7 @@ module.exports = class SplitChunksPlugin {
|
|
1480
1526
|
|
1481
1527
|
// Add a note to the chunk
|
1482
1528
|
newChunk.chunkReason =
|
1483
|
-
(newChunk.chunkReason ? newChunk.chunkReason
|
1529
|
+
(newChunk.chunkReason ? `${newChunk.chunkReason}, ` : "") +
|
1484
1530
|
(isReusedWithAllModules
|
1485
1531
|
? "reused as split chunk"
|
1486
1532
|
: "split chunk");
|
@@ -1527,21 +1573,21 @@ module.exports = class SplitChunksPlugin {
|
|
1527
1573
|
oldMaxSizeSettings.minSize,
|
1528
1574
|
item.cacheGroup._minSizeForMaxSize,
|
1529
1575
|
Math.max
|
1530
|
-
|
1576
|
+
)
|
1531
1577
|
: item.cacheGroup.minSize,
|
1532
1578
|
maxAsyncSize: oldMaxSizeSettings
|
1533
1579
|
? combineSizes(
|
1534
1580
|
oldMaxSizeSettings.maxAsyncSize,
|
1535
1581
|
item.cacheGroup.maxAsyncSize,
|
1536
1582
|
Math.min
|
1537
|
-
|
1583
|
+
)
|
1538
1584
|
: item.cacheGroup.maxAsyncSize,
|
1539
1585
|
maxInitialSize: oldMaxSizeSettings
|
1540
1586
|
? combineSizes(
|
1541
1587
|
oldMaxSizeSettings.maxInitialSize,
|
1542
1588
|
item.cacheGroup.maxInitialSize,
|
1543
1589
|
Math.min
|
1544
|
-
|
1590
|
+
)
|
1545
1591
|
: item.cacheGroup.maxInitialSize,
|
1546
1592
|
automaticNameDelimiter: item.cacheGroup.automaticNameDelimiter,
|
1547
1593
|
keys: oldMaxSizeSettings
|
@@ -1598,6 +1644,7 @@ module.exports = class SplitChunksPlugin {
|
|
1598
1644
|
const { outputOptions } = compilation;
|
1599
1645
|
|
1600
1646
|
// Make sure that maxSize is fulfilled
|
1647
|
+
const { fallbackCacheGroup } = this.options;
|
1601
1648
|
for (const chunk of Array.from(compilation.chunks)) {
|
1602
1649
|
const chunkConfig = maxSizeQueueMap.get(chunk);
|
1603
1650
|
const {
|
@@ -1605,7 +1652,9 @@ module.exports = class SplitChunksPlugin {
|
|
1605
1652
|
maxAsyncSize,
|
1606
1653
|
maxInitialSize,
|
1607
1654
|
automaticNameDelimiter
|
1608
|
-
} = chunkConfig ||
|
1655
|
+
} = chunkConfig || fallbackCacheGroup;
|
1656
|
+
if (!chunkConfig && !fallbackCacheGroup.chunksFilter(chunk))
|
1657
|
+
continue;
|
1609
1658
|
/** @type {SplitChunksSizes} */
|
1610
1659
|
let maxSize;
|
1611
1660
|
if (chunk.isOnlyInitial()) {
|
@@ -1689,7 +1738,9 @@ module.exports = class SplitChunksPlugin {
|
|
1689
1738
|
hashFilename(name, outputOptions);
|
1690
1739
|
}
|
1691
1740
|
if (i !== results.length - 1) {
|
1692
|
-
const newPart = compilation.addChunk(
|
1741
|
+
const newPart = compilation.addChunk(
|
1742
|
+
/** @type {Chunk["name"]} */ (name)
|
1743
|
+
);
|
1693
1744
|
chunk.split(newPart);
|
1694
1745
|
newPart.chunkReason = chunk.chunkReason;
|
1695
1746
|
// Add all modules to the new chunk
|
@@ -1704,7 +1755,7 @@ module.exports = class SplitChunksPlugin {
|
|
1704
1755
|
}
|
1705
1756
|
} else {
|
1706
1757
|
// change the chunk to be a part
|
1707
|
-
chunk.name = name;
|
1758
|
+
chunk.name = /** @type {Chunk["name"]} */ (name);
|
1708
1759
|
}
|
1709
1760
|
}
|
1710
1761
|
}
|
@@ -13,18 +13,19 @@ const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
|
13
13
|
/** @typedef {import("webpack-sources").Source} Source */
|
14
14
|
/** @typedef {import("../../declarations/WebpackOptions").PerformanceOptions} PerformanceOptions */
|
15
15
|
/** @typedef {import("../ChunkGroup")} ChunkGroup */
|
16
|
+
/** @typedef {import("../Compilation").Asset} Asset */
|
16
17
|
/** @typedef {import("../Compiler")} Compiler */
|
17
18
|
/** @typedef {import("../Entrypoint")} Entrypoint */
|
18
19
|
/** @typedef {import("../WebpackError")} WebpackError */
|
19
20
|
|
20
21
|
/**
|
21
|
-
* @typedef {
|
22
|
+
* @typedef {object} AssetDetails
|
22
23
|
* @property {string} name
|
23
24
|
* @property {number} size
|
24
25
|
*/
|
25
26
|
|
26
27
|
/**
|
27
|
-
* @typedef {
|
28
|
+
* @typedef {object} EntrypointDetails
|
28
29
|
* @property {string} name
|
29
30
|
* @property {number} size
|
30
31
|
* @property {string[]} files
|
@@ -32,6 +33,12 @@ const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
|
|
32
33
|
|
33
34
|
const isOverSizeLimitSet = new WeakSet();
|
34
35
|
|
36
|
+
/**
|
37
|
+
* @param {Asset["name"]} name the name
|
38
|
+
* @param {Asset["source"]} source the source
|
39
|
+
* @param {Asset["info"]} info the info
|
40
|
+
* @returns {boolean} result
|
41
|
+
*/
|
35
42
|
const excludeSourceMap = (name, source, info) => !info.development;
|
36
43
|
|
37
44
|
module.exports = class SizeLimitsPlugin {
|
@@ -95,7 +102,7 @@ module.exports = class SizeLimitsPlugin {
|
|
95
102
|
}
|
96
103
|
|
97
104
|
const size = info.size || source.size();
|
98
|
-
if (size > assetSizeLimit) {
|
105
|
+
if (size > /** @type {number} */ (assetSizeLimit)) {
|
99
106
|
assetsOverSizeLimit.push({
|
100
107
|
name,
|
101
108
|
size
|
@@ -104,6 +111,10 @@ module.exports = class SizeLimitsPlugin {
|
|
104
111
|
}
|
105
112
|
}
|
106
113
|
|
114
|
+
/**
|
115
|
+
* @param {Asset["name"]} name the name
|
116
|
+
* @returns {boolean | undefined} result
|
117
|
+
*/
|
107
118
|
const fileFilter = name => {
|
108
119
|
const asset = compilation.getAsset(name);
|
109
120
|
return asset && assetFilter(asset.name, asset.source, asset.info);
|
@@ -114,10 +125,10 @@ module.exports = class SizeLimitsPlugin {
|
|
114
125
|
for (const [name, entry] of compilation.entrypoints) {
|
115
126
|
const size = getEntrypointSize(entry);
|
116
127
|
|
117
|
-
if (size > entrypointSizeLimit) {
|
128
|
+
if (size > /** @type {number} */ (entrypointSizeLimit)) {
|
118
129
|
entrypointsOverLimit.push({
|
119
|
-
name
|
120
|
-
size
|
130
|
+
name,
|
131
|
+
size,
|
121
132
|
files: entry.getFiles().filter(fileFilter)
|
122
133
|
});
|
123
134
|
isOverSizeLimitSet.add(entry);
|
@@ -131,14 +142,17 @@ module.exports = class SizeLimitsPlugin {
|
|
131
142
|
// if !1, then 2, if !2 return
|
132
143
|
if (assetsOverSizeLimit.length > 0) {
|
133
144
|
warnings.push(
|
134
|
-
new AssetsOverSizeLimitWarning(
|
145
|
+
new AssetsOverSizeLimitWarning(
|
146
|
+
assetsOverSizeLimit,
|
147
|
+
/** @type {number} */ (assetSizeLimit)
|
148
|
+
)
|
135
149
|
);
|
136
150
|
}
|
137
151
|
if (entrypointsOverLimit.length > 0) {
|
138
152
|
warnings.push(
|
139
153
|
new EntrypointsOverSizeLimitWarning(
|
140
154
|
entrypointsOverLimit,
|
141
|
-
entrypointSizeLimit
|
155
|
+
/** @type {number} */ (entrypointSizeLimit)
|
142
156
|
)
|
143
157
|
);
|
144
158
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
const RuntimeModule = require("../RuntimeModule");
|
8
8
|
const Template = require("../Template");
|
9
9
|
|
10
|
+
/** @typedef {import("../Compilation")} Compilation */
|
10
11
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
11
12
|
|
12
13
|
class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
@@ -23,11 +24,12 @@ class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
|
23
24
|
}
|
24
25
|
|
25
26
|
/**
|
26
|
-
* @returns {string} runtime code
|
27
|
+
* @returns {string | null} runtime code
|
27
28
|
*/
|
28
29
|
generate() {
|
29
30
|
const { runtimeFunction, runtimeHandlers } = this;
|
30
|
-
const
|
31
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
32
|
+
const { runtimeTemplate } = compilation;
|
31
33
|
return Template.asString([
|
32
34
|
`${runtimeHandlers} = {};`,
|
33
35
|
`${runtimeFunction} = ${runtimeTemplate.basicFunction("chunkId", [
|
@@ -11,6 +11,8 @@ const ChunkPrefetchStartupRuntimeModule = require("./ChunkPrefetchStartupRuntime
|
|
11
11
|
const ChunkPrefetchTriggerRuntimeModule = require("./ChunkPrefetchTriggerRuntimeModule");
|
12
12
|
const ChunkPreloadTriggerRuntimeModule = require("./ChunkPreloadTriggerRuntimeModule");
|
13
13
|
|
14
|
+
/** @typedef {import("../Chunk")} Chunk */
|
15
|
+
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
14
16
|
/** @typedef {import("../Compiler")} Compiler */
|
15
17
|
|
16
18
|
class ChunkPrefetchPreloadPlugin {
|
@@ -33,6 +35,7 @@ class ChunkPrefetchPreloadPlugin {
|
|
33
35
|
if (startupChildChunks) {
|
34
36
|
set.add(RuntimeGlobals.prefetchChunk);
|
35
37
|
set.add(RuntimeGlobals.onChunksLoaded);
|
38
|
+
set.add(RuntimeGlobals.exports);
|
36
39
|
compilation.addRuntimeModule(
|
37
40
|
chunk,
|
38
41
|
new ChunkPrefetchStartupRuntimeModule(startupChildChunks)
|
@@ -43,7 +46,7 @@ class ChunkPrefetchPreloadPlugin {
|
|
43
46
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
44
47
|
"ChunkPrefetchPreloadPlugin",
|
45
48
|
(chunk, set, { chunkGraph }) => {
|
46
|
-
const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph
|
49
|
+
const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph);
|
47
50
|
|
48
51
|
if (chunkMap.prefetch) {
|
49
52
|
set.add(RuntimeGlobals.prefetchChunk);
|