webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -5,63 +5,83 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const APIPlugin = require("./APIPlugin");
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
|
12
|
-
const JsonModulesPlugin = require("./json/JsonModulesPlugin");
|
|
10
|
+
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
|
13
11
|
|
|
14
|
-
const
|
|
12
|
+
const ConstPlugin = require("./ConstPlugin");
|
|
15
13
|
|
|
16
14
|
const EntryOptionPlugin = require("./EntryOptionPlugin");
|
|
15
|
+
|
|
16
|
+
const ExportsInfoApiPlugin = require("./ExportsInfoApiPlugin");
|
|
17
|
+
const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
|
|
18
|
+
|
|
19
|
+
const JavascriptMetaInfoPlugin = require("./JavascriptMetaInfoPlugin");
|
|
20
|
+
|
|
21
|
+
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
|
22
|
+
const OptionsApply = require("./OptionsApply");
|
|
23
|
+
|
|
17
24
|
const RecordIdsPlugin = require("./RecordIdsPlugin");
|
|
18
25
|
|
|
19
26
|
const RuntimePlugin = require("./RuntimePlugin");
|
|
20
27
|
|
|
21
|
-
const APIPlugin = require("./APIPlugin");
|
|
22
|
-
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
|
23
|
-
const ConstPlugin = require("./ConstPlugin");
|
|
24
|
-
const ExportsInfoApiPlugin = require("./ExportsInfoApiPlugin");
|
|
25
|
-
const WebpackIsIncludedPlugin = require("./WebpackIsIncludedPlugin");
|
|
26
|
-
|
|
27
28
|
const TemplatedPathPlugin = require("./TemplatedPathPlugin");
|
|
29
|
+
|
|
28
30
|
const UseStrictPlugin = require("./UseStrictPlugin");
|
|
31
|
+
|
|
29
32
|
const WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
|
|
30
33
|
|
|
31
|
-
const
|
|
32
|
-
|
|
34
|
+
const WebpackIsIncludedPlugin = require("./WebpackIsIncludedPlugin");
|
|
35
|
+
|
|
36
|
+
const AssetModulesPlugin = require("./asset/AssetModulesPlugin");
|
|
37
|
+
|
|
38
|
+
const InferAsyncModulesPlugin = require("./async-modules/InferAsyncModulesPlugin");
|
|
33
39
|
|
|
34
40
|
const ResolverCachePlugin = require("./cache/ResolverCachePlugin");
|
|
35
41
|
|
|
36
42
|
const CommonJsPlugin = require("./dependencies/CommonJsPlugin");
|
|
43
|
+
|
|
37
44
|
const HarmonyModulesPlugin = require("./dependencies/HarmonyModulesPlugin");
|
|
45
|
+
|
|
38
46
|
const ImportMetaContextPlugin = require("./dependencies/ImportMetaContextPlugin");
|
|
39
47
|
const ImportMetaPlugin = require("./dependencies/ImportMetaPlugin");
|
|
48
|
+
|
|
40
49
|
const ImportPlugin = require("./dependencies/ImportPlugin");
|
|
41
50
|
const LoaderPlugin = require("./dependencies/LoaderPlugin");
|
|
51
|
+
|
|
42
52
|
const RequireContextPlugin = require("./dependencies/RequireContextPlugin");
|
|
43
53
|
const RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
|
|
44
54
|
const RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
|
|
55
|
+
|
|
45
56
|
const SystemPlugin = require("./dependencies/SystemPlugin");
|
|
57
|
+
|
|
46
58
|
const URLPlugin = require("./dependencies/URLPlugin");
|
|
59
|
+
|
|
47
60
|
const WorkerPlugin = require("./dependencies/WorkerPlugin");
|
|
48
61
|
|
|
49
|
-
const
|
|
62
|
+
const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
|
63
|
+
|
|
64
|
+
const JsonModulesPlugin = require("./json/JsonModulesPlugin");
|
|
65
|
+
|
|
66
|
+
const ChunkPrefetchPreloadPlugin = require("./prefetch/ChunkPrefetchPreloadPlugin");
|
|
67
|
+
|
|
68
|
+
const DataUriPlugin = require("./schemes/DataUriPlugin");
|
|
69
|
+
const FileUriPlugin = require("./schemes/FileUriPlugin");
|
|
50
70
|
|
|
51
|
-
const JavascriptMetaInfoPlugin = require("./JavascriptMetaInfoPlugin");
|
|
52
71
|
const DefaultStatsFactoryPlugin = require("./stats/DefaultStatsFactoryPlugin");
|
|
53
72
|
const DefaultStatsPresetPlugin = require("./stats/DefaultStatsPresetPlugin");
|
|
54
73
|
const DefaultStatsPrinterPlugin = require("./stats/DefaultStatsPrinterPlugin");
|
|
55
74
|
|
|
56
75
|
const { cleverMerge } = require("./util/cleverMerge");
|
|
57
76
|
|
|
58
|
-
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
|
59
77
|
/** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
|
|
60
|
-
/** @typedef {import("
|
|
78
|
+
/** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
|
|
61
79
|
/** @typedef {import("./Compiler")} Compiler */
|
|
62
80
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
|
63
81
|
/** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
64
82
|
|
|
83
|
+
const CLASS_NAME = "WebpackOptionsApply";
|
|
84
|
+
|
|
65
85
|
class WebpackOptionsApply extends OptionsApply {
|
|
66
86
|
constructor() {
|
|
67
87
|
super();
|
|
@@ -73,7 +93,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
73
93
|
* @returns {WebpackOptions} options object
|
|
74
94
|
*/
|
|
75
95
|
process(options, compiler) {
|
|
76
|
-
compiler.outputPath =
|
|
96
|
+
compiler.outputPath = options.output.path;
|
|
77
97
|
compiler.recordsInputPath = options.recordsInputPath || null;
|
|
78
98
|
compiler.recordsOutputPath = options.recordsOutputPath || null;
|
|
79
99
|
compiler.name = options.name;
|
|
@@ -81,6 +101,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
81
101
|
if (options.externals) {
|
|
82
102
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
83
103
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
|
104
|
+
|
|
84
105
|
new ExternalsPlugin(options.externalsType, options.externals).apply(
|
|
85
106
|
compiler
|
|
86
107
|
);
|
|
@@ -88,99 +109,106 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
88
109
|
|
|
89
110
|
if (options.externalsPresets.node) {
|
|
90
111
|
const NodeTargetPlugin = require("./node/NodeTargetPlugin");
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
|
|
113
|
+
// Some older versions of Node.js don't support all built-in modules via import, only via `require`,
|
|
114
|
+
// but it seems like there shouldn't be a warning here since these versions are rarely used in real applications
|
|
115
|
+
new NodeTargetPlugin(
|
|
116
|
+
options.output.module &&
|
|
117
|
+
compiler.platform.node === null &&
|
|
118
|
+
compiler.platform.web === null
|
|
119
|
+
? "module-import"
|
|
120
|
+
: "node-commonjs"
|
|
121
|
+
).apply(compiler);
|
|
122
|
+
|
|
123
|
+
// Handle external CSS `@import` and `url()`
|
|
124
|
+
if (options.experiments.css) {
|
|
125
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
126
|
+
const ExternalsPlugin = require("./ExternalsPlugin");
|
|
127
|
+
|
|
128
|
+
new ExternalsPlugin(
|
|
129
|
+
"module",
|
|
130
|
+
({ request, dependencyType, contextInfo }, callback) => {
|
|
131
|
+
if (
|
|
132
|
+
/\.css(\?|$)/.test(contextInfo.issuer) &&
|
|
133
|
+
/^(\/\/|https?:\/\/|#)/.test(request)
|
|
134
|
+
) {
|
|
135
|
+
if (dependencyType === "url") {
|
|
136
|
+
return callback(null, `asset ${request}`);
|
|
137
|
+
} else if (
|
|
138
|
+
(dependencyType === "css-import" ||
|
|
139
|
+
dependencyType === "css-import-local-module" ||
|
|
140
|
+
dependencyType === "css-import-global-module") &&
|
|
141
|
+
options.experiments.css
|
|
142
|
+
) {
|
|
143
|
+
return callback(null, `css-import ${request}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
callback();
|
|
148
|
+
}
|
|
149
|
+
).apply(compiler);
|
|
150
|
+
}
|
|
122
151
|
}
|
|
123
|
-
if (options.externalsPresets.webAsync) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
|
|
127
|
-
if (dependencyType === "url") {
|
|
128
|
-
if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
|
|
129
|
-
return callback(null, `asset ${request}`);
|
|
130
|
-
} else if (options.experiments.css && dependencyType === "css-import") {
|
|
131
|
-
if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
|
|
132
|
-
return callback(null, `css-import ${request}`);
|
|
133
|
-
} else if (
|
|
134
|
-
options.experiments.css &&
|
|
135
|
-
/^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
|
|
136
|
-
) {
|
|
137
|
-
if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
|
|
138
|
-
return callback(null, `css-import ${request}`);
|
|
139
|
-
return callback(null, `import ${request}`);
|
|
140
|
-
}
|
|
141
|
-
callback();
|
|
142
|
-
}).apply(compiler);
|
|
143
|
-
} else if (options.externalsPresets.web) {
|
|
152
|
+
if (options.externalsPresets.webAsync || options.externalsPresets.web) {
|
|
153
|
+
const type = options.externalsPresets.webAsync ? "import" : "module";
|
|
154
|
+
|
|
144
155
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
145
156
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
157
|
+
|
|
158
|
+
new ExternalsPlugin(type, ({ request, dependencyType }, callback) => {
|
|
159
|
+
if (/^(\/\/|https?:\/\/|#|std:|jsr:|npm:)/.test(request)) {
|
|
160
|
+
if (dependencyType === "url") {
|
|
149
161
|
return callback(null, `asset ${request}`);
|
|
150
|
-
|
|
151
|
-
|
|
162
|
+
} else if (
|
|
163
|
+
(dependencyType === "css-import" ||
|
|
164
|
+
dependencyType === "css-import-local-module" ||
|
|
165
|
+
dependencyType === "css-import-global-module") &&
|
|
166
|
+
options.experiments.css
|
|
167
|
+
) {
|
|
152
168
|
return callback(null, `css-import ${request}`);
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (
|
|
157
|
-
options.experiments.css &&
|
|
158
|
-
/^\.css((\?)|$)/.test(/** @type {string} */ (request))
|
|
159
|
-
)
|
|
160
|
-
return callback(null, `css-import ${request}`);
|
|
161
|
-
return callback(null, `module ${request}`);
|
|
169
|
+
} else if (/^(\/\/|https?:\/\/|std:|jsr:|npm:)/.test(request)) {
|
|
170
|
+
return callback(null, `${type} ${request}`);
|
|
171
|
+
}
|
|
162
172
|
}
|
|
173
|
+
|
|
163
174
|
callback();
|
|
164
175
|
}).apply(compiler);
|
|
165
|
-
}
|
|
176
|
+
}
|
|
177
|
+
if (options.externalsPresets.electron) {
|
|
178
|
+
if (options.externalsPresets.electronMain) {
|
|
179
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
180
|
+
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
|
181
|
+
|
|
182
|
+
new ElectronTargetPlugin("main").apply(compiler);
|
|
183
|
+
}
|
|
184
|
+
if (options.externalsPresets.electronPreload) {
|
|
185
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
186
|
+
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
|
187
|
+
|
|
188
|
+
new ElectronTargetPlugin("preload").apply(compiler);
|
|
189
|
+
}
|
|
190
|
+
if (options.externalsPresets.electronRenderer) {
|
|
191
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
192
|
+
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
|
193
|
+
|
|
194
|
+
new ElectronTargetPlugin("renderer").apply(compiler);
|
|
195
|
+
}
|
|
196
|
+
if (
|
|
197
|
+
!options.externalsPresets.electronMain &&
|
|
198
|
+
!options.externalsPresets.electronPreload &&
|
|
199
|
+
!options.externalsPresets.electronRenderer
|
|
200
|
+
) {
|
|
201
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
202
|
+
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
|
203
|
+
|
|
204
|
+
new ElectronTargetPlugin().apply(compiler);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (options.externalsPresets.nwjs) {
|
|
166
208
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
167
209
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
|
|
171
|
-
return callback(null, `asset ${request}`);
|
|
172
|
-
} else if (dependencyType === "css-import") {
|
|
173
|
-
if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
|
|
174
|
-
return callback(null, `css-import ${request}`);
|
|
175
|
-
} else if (
|
|
176
|
-
/^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
|
|
177
|
-
) {
|
|
178
|
-
if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
|
|
179
|
-
return callback(null, `css-import ${request}`);
|
|
180
|
-
return callback(null, `module ${request}`);
|
|
181
|
-
}
|
|
182
|
-
callback();
|
|
183
|
-
}).apply(compiler);
|
|
210
|
+
|
|
211
|
+
new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
|
|
184
212
|
}
|
|
185
213
|
|
|
186
214
|
new ChunkPrefetchPreloadPlugin().apply(compiler);
|
|
@@ -189,16 +217,19 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
189
217
|
switch (options.output.chunkFormat) {
|
|
190
218
|
case "array-push": {
|
|
191
219
|
const ArrayPushCallbackChunkFormatPlugin = require("./javascript/ArrayPushCallbackChunkFormatPlugin");
|
|
220
|
+
|
|
192
221
|
new ArrayPushCallbackChunkFormatPlugin().apply(compiler);
|
|
193
222
|
break;
|
|
194
223
|
}
|
|
195
224
|
case "commonjs": {
|
|
196
225
|
const CommonJsChunkFormatPlugin = require("./javascript/CommonJsChunkFormatPlugin");
|
|
226
|
+
|
|
197
227
|
new CommonJsChunkFormatPlugin().apply(compiler);
|
|
198
228
|
break;
|
|
199
229
|
}
|
|
200
230
|
case "module": {
|
|
201
231
|
const ModuleChunkFormatPlugin = require("./esm/ModuleChunkFormatPlugin");
|
|
232
|
+
|
|
202
233
|
new ModuleChunkFormatPlugin().apply(compiler);
|
|
203
234
|
break;
|
|
204
235
|
}
|
|
@@ -216,6 +247,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
216
247
|
if (enabledChunkLoadingTypes.length > 0) {
|
|
217
248
|
for (const type of enabledChunkLoadingTypes) {
|
|
218
249
|
const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
|
|
250
|
+
|
|
219
251
|
new EnableChunkLoadingPlugin(type).apply(compiler);
|
|
220
252
|
}
|
|
221
253
|
}
|
|
@@ -227,6 +259,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
227
259
|
if (enabledWasmLoadingTypes.length > 0) {
|
|
228
260
|
for (const type of enabledWasmLoadingTypes) {
|
|
229
261
|
const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
|
|
262
|
+
|
|
230
263
|
new EnableWasmLoadingPlugin(type).apply(compiler);
|
|
231
264
|
}
|
|
232
265
|
}
|
|
@@ -236,14 +269,31 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
236
269
|
(options.output.enabledLibraryTypes);
|
|
237
270
|
|
|
238
271
|
if (enabledLibraryTypes.length > 0) {
|
|
272
|
+
let once = true;
|
|
239
273
|
for (const type of enabledLibraryTypes) {
|
|
240
274
|
const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
|
|
241
|
-
|
|
275
|
+
|
|
276
|
+
new EnableLibraryPlugin(type, {
|
|
277
|
+
// eslint-disable-next-line no-loop-func
|
|
278
|
+
additionalApply: () => {
|
|
279
|
+
if (!once) return;
|
|
280
|
+
once = false;
|
|
281
|
+
// We rely on `exportInfo` to generate the `export statement` in certain library bundles.
|
|
282
|
+
// Therefore, we ignore the disabling of `optimization.providedExport` and continue to apply `FlagDependencyExportsPlugin`.
|
|
283
|
+
if (
|
|
284
|
+
["module", "commonjs-static", "modern-module"].includes(type) &&
|
|
285
|
+
!options.optimization.providedExports
|
|
286
|
+
) {
|
|
287
|
+
new FlagDependencyExportsPlugin().apply(compiler);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}).apply(compiler);
|
|
242
291
|
}
|
|
243
292
|
}
|
|
244
293
|
|
|
245
294
|
if (options.output.pathinfo) {
|
|
246
295
|
const ModuleInfoHeaderPlugin = require("./ModuleInfoHeaderPlugin");
|
|
296
|
+
|
|
247
297
|
new ModuleInfoHeaderPlugin(options.output.pathinfo !== true).apply(
|
|
248
298
|
compiler
|
|
249
299
|
);
|
|
@@ -251,11 +301,20 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
251
301
|
|
|
252
302
|
if (options.output.clean) {
|
|
253
303
|
const CleanPlugin = require("./CleanPlugin");
|
|
304
|
+
|
|
254
305
|
new CleanPlugin(
|
|
255
306
|
options.output.clean === true ? {} : options.output.clean
|
|
256
307
|
).apply(compiler);
|
|
257
308
|
}
|
|
258
309
|
|
|
310
|
+
if (options.dotenv) {
|
|
311
|
+
const DotenvPlugin = require("./DotenvPlugin");
|
|
312
|
+
|
|
313
|
+
new DotenvPlugin(
|
|
314
|
+
typeof options.dotenv === "boolean" ? {} : options.dotenv
|
|
315
|
+
).apply(compiler);
|
|
316
|
+
}
|
|
317
|
+
|
|
259
318
|
if (options.devtool) {
|
|
260
319
|
if (options.devtool.includes("source-map")) {
|
|
261
320
|
const hidden = options.devtool.includes("hidden");
|
|
@@ -282,6 +341,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
282
341
|
}).apply(compiler);
|
|
283
342
|
} else if (options.devtool.includes("eval")) {
|
|
284
343
|
const EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
|
|
344
|
+
|
|
285
345
|
new EvalDevToolModulePlugin({
|
|
286
346
|
moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
|
|
287
347
|
namespace: options.output.devtoolNamespace
|
|
@@ -321,6 +381,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
321
381
|
|
|
322
382
|
if (options.experiments.syncWebAssembly) {
|
|
323
383
|
const WebAssemblyModulesPlugin = require("./wasm-sync/WebAssemblyModulesPlugin");
|
|
384
|
+
|
|
324
385
|
new WebAssemblyModulesPlugin({
|
|
325
386
|
mangleImports: options.optimization.mangleWasmImports
|
|
326
387
|
}).apply(compiler);
|
|
@@ -328,6 +389,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
328
389
|
|
|
329
390
|
if (options.experiments.asyncWebAssembly) {
|
|
330
391
|
const AsyncWebAssemblyModulesPlugin = require("./wasm-async/AsyncWebAssemblyModulesPlugin");
|
|
392
|
+
|
|
331
393
|
new AsyncWebAssemblyModulesPlugin({
|
|
332
394
|
mangleImports: options.optimization.mangleWasmImports
|
|
333
395
|
}).apply(compiler);
|
|
@@ -335,15 +397,50 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
335
397
|
|
|
336
398
|
if (options.experiments.css) {
|
|
337
399
|
const CssModulesPlugin = require("./css/CssModulesPlugin");
|
|
400
|
+
|
|
338
401
|
new CssModulesPlugin().apply(compiler);
|
|
339
402
|
}
|
|
340
403
|
|
|
341
404
|
if (options.experiments.lazyCompilation) {
|
|
342
405
|
const LazyCompilationPlugin = require("./hmr/LazyCompilationPlugin");
|
|
406
|
+
|
|
343
407
|
const lazyOptions =
|
|
344
408
|
typeof options.experiments.lazyCompilation === "object"
|
|
345
409
|
? options.experiments.lazyCompilation
|
|
346
410
|
: {};
|
|
411
|
+
const isUniversalTarget =
|
|
412
|
+
options.output.module &&
|
|
413
|
+
compiler.platform.node === null &&
|
|
414
|
+
compiler.platform.web === null;
|
|
415
|
+
|
|
416
|
+
if (isUniversalTarget) {
|
|
417
|
+
const emitter = require.resolve("../hot/emitter-event-target.js");
|
|
418
|
+
|
|
419
|
+
const NormalModuleReplacementPlugin = require("./NormalModuleReplacementPlugin");
|
|
420
|
+
|
|
421
|
+
// Override emitter that using `EventEmitter` to `EventTarget`
|
|
422
|
+
// TODO webpack6 - migrate to `EventTarget` by default
|
|
423
|
+
new NormalModuleReplacementPlugin(/emitter(\.js)?$/, (result) => {
|
|
424
|
+
if (
|
|
425
|
+
/webpack[/\\]hot|webpack-dev-server[/\\]client|webpack-hot-middleware[/\\]client/.test(
|
|
426
|
+
result.context
|
|
427
|
+
)
|
|
428
|
+
) {
|
|
429
|
+
result.request = emitter;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
return result;
|
|
433
|
+
}).apply(compiler);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
const backend = require.resolve(
|
|
437
|
+
isUniversalTarget
|
|
438
|
+
? "../hot/lazy-compilation-universal.js"
|
|
439
|
+
: `../hot/lazy-compilation-${
|
|
440
|
+
options.externalsPresets.node ? "node" : "web"
|
|
441
|
+
}.js`
|
|
442
|
+
);
|
|
443
|
+
|
|
347
444
|
new LazyCompilationPlugin({
|
|
348
445
|
backend:
|
|
349
446
|
typeof lazyOptions.backend === "function"
|
|
@@ -351,12 +448,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
351
448
|
: require("./hmr/lazyCompilationBackend")({
|
|
352
449
|
...lazyOptions.backend,
|
|
353
450
|
client:
|
|
354
|
-
(lazyOptions.backend && lazyOptions.backend.client) ||
|
|
355
|
-
require.resolve(
|
|
356
|
-
`../hot/lazy-compilation-${
|
|
357
|
-
options.externalsPresets.node ? "node" : "web"
|
|
358
|
-
}.js`
|
|
359
|
-
)
|
|
451
|
+
(lazyOptions.backend && lazyOptions.backend.client) || backend
|
|
360
452
|
}),
|
|
361
453
|
entries: !lazyOptions || lazyOptions.entries !== false,
|
|
362
454
|
imports: !lazyOptions || lazyOptions.imports !== false,
|
|
@@ -366,16 +458,20 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
366
458
|
|
|
367
459
|
if (options.experiments.buildHttp) {
|
|
368
460
|
const HttpUriPlugin = require("./schemes/HttpUriPlugin");
|
|
461
|
+
|
|
369
462
|
const httpOptions = options.experiments.buildHttp;
|
|
370
463
|
new HttpUriPlugin(httpOptions).apply(compiler);
|
|
371
464
|
}
|
|
372
465
|
|
|
466
|
+
if (options.experiments.deferImport) {
|
|
467
|
+
const JavascriptParser = require("./javascript/JavascriptParser");
|
|
468
|
+
const importPhases = require("acorn-import-phases");
|
|
469
|
+
|
|
470
|
+
JavascriptParser.extend(importPhases({ source: false }));
|
|
471
|
+
}
|
|
472
|
+
|
|
373
473
|
new EntryOptionPlugin().apply(compiler);
|
|
374
|
-
compiler.hooks.entryOption.call(
|
|
375
|
-
/** @type {string} */
|
|
376
|
-
(options.context),
|
|
377
|
-
options.entry
|
|
378
|
-
);
|
|
474
|
+
compiler.hooks.entryOption.call(options.context, options.entry);
|
|
379
475
|
|
|
380
476
|
new RuntimePlugin().apply(compiler);
|
|
381
477
|
|
|
@@ -386,23 +482,23 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
386
482
|
|
|
387
483
|
new CompatibilityPlugin().apply(compiler);
|
|
388
484
|
new HarmonyModulesPlugin({
|
|
389
|
-
|
|
485
|
+
deferImport: options.experiments.deferImport
|
|
390
486
|
}).apply(compiler);
|
|
391
487
|
if (options.amd !== false) {
|
|
392
488
|
const AMDPlugin = require("./dependencies/AMDPlugin");
|
|
393
489
|
const RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
|
|
490
|
+
|
|
394
491
|
new AMDPlugin(options.amd || {}).apply(compiler);
|
|
395
492
|
new RequireJsStuffPlugin().apply(compiler);
|
|
396
493
|
}
|
|
397
494
|
new CommonJsPlugin().apply(compiler);
|
|
398
|
-
new LoaderPlugin(
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
new APIPlugin({
|
|
404
|
-
module: options.output.module
|
|
495
|
+
new LoaderPlugin().apply(compiler);
|
|
496
|
+
new NodeStuffPlugin({
|
|
497
|
+
global: options.node ? options.node.global : false,
|
|
498
|
+
__dirname: options.node ? options.node.__dirname : false,
|
|
499
|
+
__filename: options.node ? options.node.__filename : false
|
|
405
500
|
}).apply(compiler);
|
|
501
|
+
new APIPlugin().apply(compiler);
|
|
406
502
|
new ExportsInfoApiPlugin().apply(compiler);
|
|
407
503
|
new WebpackIsIncludedPlugin().apply(compiler);
|
|
408
504
|
new ConstPlugin().apply(compiler);
|
|
@@ -430,74 +526,85 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
430
526
|
|
|
431
527
|
if (typeof options.mode !== "string") {
|
|
432
528
|
const WarnNoModeSetPlugin = require("./WarnNoModeSetPlugin");
|
|
529
|
+
|
|
433
530
|
new WarnNoModeSetPlugin().apply(compiler);
|
|
434
531
|
}
|
|
435
532
|
|
|
436
533
|
const EnsureChunkConditionsPlugin = require("./optimize/EnsureChunkConditionsPlugin");
|
|
534
|
+
|
|
437
535
|
new EnsureChunkConditionsPlugin().apply(compiler);
|
|
438
536
|
if (options.optimization.removeAvailableModules) {
|
|
439
537
|
const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
|
|
538
|
+
|
|
440
539
|
new RemoveParentModulesPlugin().apply(compiler);
|
|
441
540
|
}
|
|
442
541
|
if (options.optimization.removeEmptyChunks) {
|
|
443
542
|
const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
|
|
543
|
+
|
|
444
544
|
new RemoveEmptyChunksPlugin().apply(compiler);
|
|
445
545
|
}
|
|
446
546
|
if (options.optimization.mergeDuplicateChunks) {
|
|
447
547
|
const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
|
|
548
|
+
|
|
448
549
|
new MergeDuplicateChunksPlugin().apply(compiler);
|
|
449
550
|
}
|
|
450
551
|
if (options.optimization.flagIncludedChunks) {
|
|
451
552
|
const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
|
|
553
|
+
|
|
452
554
|
new FlagIncludedChunksPlugin().apply(compiler);
|
|
453
555
|
}
|
|
454
556
|
if (options.optimization.sideEffects) {
|
|
455
557
|
const SideEffectsFlagPlugin = require("./optimize/SideEffectsFlagPlugin");
|
|
558
|
+
|
|
456
559
|
new SideEffectsFlagPlugin(
|
|
457
560
|
options.optimization.sideEffects === true
|
|
458
561
|
).apply(compiler);
|
|
459
562
|
}
|
|
460
563
|
if (options.optimization.providedExports) {
|
|
461
|
-
const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
|
|
462
564
|
new FlagDependencyExportsPlugin().apply(compiler);
|
|
463
565
|
}
|
|
464
566
|
if (options.optimization.usedExports) {
|
|
465
567
|
const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin");
|
|
568
|
+
|
|
466
569
|
new FlagDependencyUsagePlugin(
|
|
467
570
|
options.optimization.usedExports === "global"
|
|
468
571
|
).apply(compiler);
|
|
469
572
|
}
|
|
470
573
|
if (options.optimization.innerGraph) {
|
|
471
574
|
const InnerGraphPlugin = require("./optimize/InnerGraphPlugin");
|
|
575
|
+
|
|
472
576
|
new InnerGraphPlugin().apply(compiler);
|
|
473
577
|
}
|
|
474
578
|
if (options.optimization.mangleExports) {
|
|
475
579
|
const MangleExportsPlugin = require("./optimize/MangleExportsPlugin");
|
|
580
|
+
|
|
476
581
|
new MangleExportsPlugin(
|
|
477
582
|
options.optimization.mangleExports !== "size"
|
|
478
583
|
).apply(compiler);
|
|
479
584
|
}
|
|
480
585
|
if (options.optimization.concatenateModules) {
|
|
481
586
|
const ModuleConcatenationPlugin = require("./optimize/ModuleConcatenationPlugin");
|
|
587
|
+
|
|
482
588
|
new ModuleConcatenationPlugin().apply(compiler);
|
|
483
589
|
}
|
|
484
590
|
if (options.optimization.splitChunks) {
|
|
485
591
|
const SplitChunksPlugin = require("./optimize/SplitChunksPlugin");
|
|
592
|
+
|
|
486
593
|
new SplitChunksPlugin(options.optimization.splitChunks).apply(compiler);
|
|
487
594
|
}
|
|
488
595
|
if (options.optimization.runtimeChunk) {
|
|
489
596
|
const RuntimeChunkPlugin = require("./optimize/RuntimeChunkPlugin");
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
(options.optimization.runtimeChunk)
|
|
493
|
-
).apply(compiler);
|
|
597
|
+
|
|
598
|
+
new RuntimeChunkPlugin(options.optimization.runtimeChunk).apply(compiler);
|
|
494
599
|
}
|
|
495
600
|
if (!options.optimization.emitOnErrors) {
|
|
496
601
|
const NoEmitOnErrorsPlugin = require("./NoEmitOnErrorsPlugin");
|
|
602
|
+
|
|
497
603
|
new NoEmitOnErrorsPlugin().apply(compiler);
|
|
498
604
|
}
|
|
499
605
|
if (options.optimization.realContentHash) {
|
|
500
606
|
const RealContentHashPlugin = require("./optimize/RealContentHashPlugin");
|
|
607
|
+
|
|
501
608
|
new RealContentHashPlugin({
|
|
502
609
|
hashFunction:
|
|
503
610
|
/** @type {NonNullable<WebpackOptions["output"]["hashFunction"]>} */
|
|
@@ -509,6 +616,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
509
616
|
}
|
|
510
617
|
if (options.optimization.checkWasmTypes) {
|
|
511
618
|
const WasmFinalizeExportsPlugin = require("./wasm-sync/WasmFinalizeExportsPlugin");
|
|
619
|
+
|
|
512
620
|
new WasmFinalizeExportsPlugin().apply(compiler);
|
|
513
621
|
}
|
|
514
622
|
const moduleIds = options.optimization.moduleIds;
|
|
@@ -516,17 +624,20 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
516
624
|
switch (moduleIds) {
|
|
517
625
|
case "natural": {
|
|
518
626
|
const NaturalModuleIdsPlugin = require("./ids/NaturalModuleIdsPlugin");
|
|
627
|
+
|
|
519
628
|
new NaturalModuleIdsPlugin().apply(compiler);
|
|
520
629
|
break;
|
|
521
630
|
}
|
|
522
631
|
case "named": {
|
|
523
632
|
const NamedModuleIdsPlugin = require("./ids/NamedModuleIdsPlugin");
|
|
633
|
+
|
|
524
634
|
new NamedModuleIdsPlugin().apply(compiler);
|
|
525
635
|
break;
|
|
526
636
|
}
|
|
527
637
|
case "hashed": {
|
|
528
638
|
const WarnDeprecatedOptionPlugin = require("./WarnDeprecatedOptionPlugin");
|
|
529
639
|
const HashedModuleIdsPlugin = require("./ids/HashedModuleIdsPlugin");
|
|
640
|
+
|
|
530
641
|
new WarnDeprecatedOptionPlugin(
|
|
531
642
|
"optimization.moduleIds",
|
|
532
643
|
"hashed",
|
|
@@ -539,11 +650,13 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
539
650
|
}
|
|
540
651
|
case "deterministic": {
|
|
541
652
|
const DeterministicModuleIdsPlugin = require("./ids/DeterministicModuleIdsPlugin");
|
|
653
|
+
|
|
542
654
|
new DeterministicModuleIdsPlugin().apply(compiler);
|
|
543
655
|
break;
|
|
544
656
|
}
|
|
545
657
|
case "size": {
|
|
546
658
|
const OccurrenceModuleIdsPlugin = require("./ids/OccurrenceModuleIdsPlugin");
|
|
659
|
+
|
|
547
660
|
new OccurrenceModuleIdsPlugin({
|
|
548
661
|
prioritiseInitial: true
|
|
549
662
|
}).apply(compiler);
|
|
@@ -560,22 +673,26 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
560
673
|
switch (chunkIds) {
|
|
561
674
|
case "natural": {
|
|
562
675
|
const NaturalChunkIdsPlugin = require("./ids/NaturalChunkIdsPlugin");
|
|
676
|
+
|
|
563
677
|
new NaturalChunkIdsPlugin().apply(compiler);
|
|
564
678
|
break;
|
|
565
679
|
}
|
|
566
680
|
case "named": {
|
|
567
681
|
const NamedChunkIdsPlugin = require("./ids/NamedChunkIdsPlugin");
|
|
682
|
+
|
|
568
683
|
new NamedChunkIdsPlugin().apply(compiler);
|
|
569
684
|
break;
|
|
570
685
|
}
|
|
571
686
|
case "deterministic": {
|
|
572
687
|
const DeterministicChunkIdsPlugin = require("./ids/DeterministicChunkIdsPlugin");
|
|
688
|
+
|
|
573
689
|
new DeterministicChunkIdsPlugin().apply(compiler);
|
|
574
690
|
break;
|
|
575
691
|
}
|
|
576
692
|
case "size": {
|
|
577
693
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
578
694
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
|
695
|
+
|
|
579
696
|
new OccurrenceChunkIdsPlugin({
|
|
580
697
|
prioritiseInitial: true
|
|
581
698
|
}).apply(compiler);
|
|
@@ -584,6 +701,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
584
701
|
case "total-size": {
|
|
585
702
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
586
703
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
|
704
|
+
|
|
587
705
|
new OccurrenceChunkIdsPlugin({
|
|
588
706
|
prioritiseInitial: false
|
|
589
707
|
}).apply(compiler);
|
|
@@ -597,14 +715,16 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
597
715
|
}
|
|
598
716
|
if (options.optimization.nodeEnv) {
|
|
599
717
|
const DefinePlugin = require("./DefinePlugin");
|
|
718
|
+
|
|
719
|
+
const defValue = JSON.stringify(options.optimization.nodeEnv);
|
|
720
|
+
|
|
600
721
|
new DefinePlugin({
|
|
601
|
-
"process.env.NODE_ENV":
|
|
722
|
+
"process.env.NODE_ENV": defValue,
|
|
723
|
+
"import.meta.env.NODE_ENV": defValue
|
|
602
724
|
}).apply(compiler);
|
|
603
725
|
}
|
|
604
726
|
if (options.optimization.minimize) {
|
|
605
|
-
for (const minimizer of
|
|
606
|
-
options.optimization.minimizer
|
|
607
|
-
)) {
|
|
727
|
+
for (const minimizer of options.optimization.minimizer) {
|
|
608
728
|
if (typeof minimizer === "function") {
|
|
609
729
|
/** @type {WebpackPluginFunction} */
|
|
610
730
|
(minimizer).call(compiler, compiler);
|
|
@@ -616,6 +736,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
616
736
|
|
|
617
737
|
if (options.performance) {
|
|
618
738
|
const SizeLimitsPlugin = require("./performance/SizeLimitsPlugin");
|
|
739
|
+
|
|
619
740
|
new SizeLimitsPlugin(options.performance).apply(compiler);
|
|
620
741
|
}
|
|
621
742
|
|
|
@@ -628,6 +749,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
628
749
|
new WarnCaseSensitiveModulesPlugin().apply(compiler);
|
|
629
750
|
|
|
630
751
|
const AddManagedPathsPlugin = require("./cache/AddManagedPathsPlugin");
|
|
752
|
+
|
|
631
753
|
new AddManagedPathsPlugin(
|
|
632
754
|
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
|
633
755
|
(options.snapshot.managedPaths),
|
|
@@ -644,6 +766,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
644
766
|
if (Number.isFinite(cacheOptions.maxGenerations)) {
|
|
645
767
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
646
768
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
|
769
|
+
|
|
647
770
|
new MemoryWithGcCachePlugin({
|
|
648
771
|
maxGenerations:
|
|
649
772
|
/** @type {number} */
|
|
@@ -652,6 +775,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
652
775
|
} else {
|
|
653
776
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
654
777
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
|
778
|
+
|
|
655
779
|
new MemoryCachePlugin().apply(compiler);
|
|
656
780
|
}
|
|
657
781
|
if (cacheOptions.cacheUnaffected) {
|
|
@@ -666,7 +790,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
666
790
|
}
|
|
667
791
|
case "filesystem": {
|
|
668
792
|
const AddBuildDependenciesPlugin = require("./cache/AddBuildDependenciesPlugin");
|
|
669
|
-
|
|
793
|
+
|
|
670
794
|
for (const key in cacheOptions.buildDependencies) {
|
|
671
795
|
const list = cacheOptions.buildDependencies[key];
|
|
672
796
|
new AddBuildDependenciesPlugin(list).apply(compiler);
|
|
@@ -674,10 +798,12 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
674
798
|
if (!Number.isFinite(cacheOptions.maxMemoryGenerations)) {
|
|
675
799
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
676
800
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
|
801
|
+
|
|
677
802
|
new MemoryCachePlugin().apply(compiler);
|
|
678
803
|
} else if (cacheOptions.maxMemoryGenerations !== 0) {
|
|
679
804
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
680
805
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
|
806
|
+
|
|
681
807
|
new MemoryWithGcCachePlugin({
|
|
682
808
|
maxGenerations:
|
|
683
809
|
/** @type {number} */
|
|
@@ -696,13 +822,14 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
696
822
|
case "pack": {
|
|
697
823
|
const IdleFileCachePlugin = require("./cache/IdleFileCachePlugin");
|
|
698
824
|
const PackFileCacheStrategy = require("./cache/PackFileCacheStrategy");
|
|
825
|
+
|
|
699
826
|
new IdleFileCachePlugin(
|
|
700
827
|
new PackFileCacheStrategy({
|
|
701
828
|
compiler,
|
|
702
829
|
fs:
|
|
703
830
|
/** @type {IntermediateFileSystem} */
|
|
704
831
|
(compiler.intermediateFileSystem),
|
|
705
|
-
context:
|
|
832
|
+
context: options.context,
|
|
706
833
|
cacheLocation:
|
|
707
834
|
/** @type {string} */
|
|
708
835
|
(cacheOptions.cacheLocation),
|
|
@@ -740,6 +867,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
740
867
|
|
|
741
868
|
if (options.ignoreWarnings && options.ignoreWarnings.length > 0) {
|
|
742
869
|
const IgnoreWarningsPlugin = require("./IgnoreWarningsPlugin");
|
|
870
|
+
|
|
743
871
|
new IgnoreWarningsPlugin(options.ignoreWarnings).apply(compiler);
|
|
744
872
|
}
|
|
745
873
|
|
|
@@ -749,7 +877,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
749
877
|
}
|
|
750
878
|
compiler.resolverFactory.hooks.resolveOptions
|
|
751
879
|
.for("normal")
|
|
752
|
-
.tap(
|
|
880
|
+
.tap(CLASS_NAME, (resolveOptions) => {
|
|
753
881
|
resolveOptions = cleverMerge(options.resolve, resolveOptions);
|
|
754
882
|
resolveOptions.fileSystem =
|
|
755
883
|
/** @type {InputFileSystem} */
|
|
@@ -758,7 +886,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
758
886
|
});
|
|
759
887
|
compiler.resolverFactory.hooks.resolveOptions
|
|
760
888
|
.for("context")
|
|
761
|
-
.tap(
|
|
889
|
+
.tap(CLASS_NAME, (resolveOptions) => {
|
|
762
890
|
resolveOptions = cleverMerge(options.resolve, resolveOptions);
|
|
763
891
|
resolveOptions.fileSystem =
|
|
764
892
|
/** @type {InputFileSystem} */
|
|
@@ -768,7 +896,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
|
768
896
|
});
|
|
769
897
|
compiler.resolverFactory.hooks.resolveOptions
|
|
770
898
|
.for("loader")
|
|
771
|
-
.tap(
|
|
899
|
+
.tap(CLASS_NAME, (resolveOptions) => {
|
|
772
900
|
resolveOptions = cleverMerge(options.resolveLoader, resolveOptions);
|
|
773
901
|
resolveOptions.fileSystem =
|
|
774
902
|
/** @type {InputFileSystem} */
|