webpack 5.111.0 → 5.112.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 +1 -1
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +237 -138
- package/lib/Compiler.js +23 -24
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -69
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +43 -24
- package/lib/NormalModule.js +3 -2190
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +15 -9
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +61 -38
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +15 -9
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +6 -6
- package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
- package/lib/cache/PackFileCacheStrategy.js +11 -28
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +3 -9
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +192 -122
- package/lib/config/getClaimedAssetTypes.js +28 -21
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +57 -42
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +700 -311
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +130 -54
- package/lib/css/data.js +7017 -4648
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -17370
- package/lib/debug/ProfilingPlugin.js +55 -23
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
- package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +20 -18
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/ErrorHelpers.js +222 -0
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
- package/lib/{util → graph}/findGraphRoots.js +20 -21
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +34 -26
- package/lib/html/HtmlGenerator.js +168 -125
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +260 -215
- package/lib/html/HtmlParser.js +598 -292
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +23 -1
- package/lib/html/htmlMinify.js +120 -51
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -14062
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +348 -99
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +25 -18
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +458 -256
- package/lib/javascript/JavascriptParser.js +916 -287
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -10946
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +17 -11
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +207 -285
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
- package/lib/loaders/LoaderRunner.js +160 -22
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +38 -14
- package/lib/{Module.js → module/Module.js} +122 -54
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +61 -15
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +5 -7
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +305 -309
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +17 -23
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +21 -15
- package/lib/optimize/MangleExportsPlugin.js +8 -9
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
- package/lib/optimize/SplitChunksPlugin.js +715 -159
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +25 -30
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +5 -7
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +13 -16
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +82 -65
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +5 -7
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +4 -7
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +19 -19
- package/lib/serialization/ObjectMiddleware.js +77 -49
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +19 -19
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
- package/lib/typescript/TypeScriptPlugin.js +5 -6
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +364 -66
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +32 -151
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -18
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +295 -103
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +4 -1
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +70 -40
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +13915 -8414
- package/lib/ErrorHelpers.js +0 -107
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -71
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1494
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/conventions.js +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
package/lib/config/defaults.js
CHANGED
|
@@ -11,7 +11,7 @@ const {
|
|
|
11
11
|
CSS_TYPE,
|
|
12
12
|
JAVASCRIPT_TYPE,
|
|
13
13
|
UNKNOWN_TYPE
|
|
14
|
-
} = require("../ModuleSourceTypeConstants");
|
|
14
|
+
} = require("../module/ModuleSourceTypeConstants");
|
|
15
15
|
const {
|
|
16
16
|
ASSET_MODULE_TYPE,
|
|
17
17
|
ASSET_MODULE_TYPE_BYTES,
|
|
@@ -29,9 +29,9 @@ const {
|
|
|
29
29
|
JSON_MODULE_TYPE,
|
|
30
30
|
WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
|
31
31
|
WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
32
|
-
} = require("../ModuleTypeConstants");
|
|
33
|
-
const Template = require("../Template");
|
|
32
|
+
} = require("../module/ModuleTypeConstants");
|
|
34
33
|
const RuleSetCompiler = require("../rules/RuleSetCompiler");
|
|
34
|
+
const Template = require("../template/Template");
|
|
35
35
|
const { cleverMerge } = require("../util/cleverMerge");
|
|
36
36
|
const {
|
|
37
37
|
getDefaultTarget,
|
|
@@ -79,7 +79,7 @@ const {
|
|
|
79
79
|
* WebpackOptionsNormalized
|
|
80
80
|
* } from "../../declarations/WebpackOptions"
|
|
81
81
|
*/
|
|
82
|
-
/** @import Module from "../Module" */
|
|
82
|
+
/** @import Module from "../module/Module" */
|
|
83
83
|
/**
|
|
84
84
|
* @import {
|
|
85
85
|
* ChunkLoadingTypes
|
|
@@ -228,7 +228,7 @@ const {
|
|
|
228
228
|
const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
|
|
229
229
|
const DEFAULT_CACHE_NAME = "default";
|
|
230
230
|
const DEFAULTS = {
|
|
231
|
-
// TODO
|
|
231
|
+
// TODO in the next major release: use xxhash64
|
|
232
232
|
HASH_FUNCTION: "md4"
|
|
233
233
|
};
|
|
234
234
|
|
|
@@ -386,7 +386,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
386
386
|
|
|
387
387
|
F(options, "validate", () => !(futureDefaults === true && production));
|
|
388
388
|
|
|
389
|
-
// Progress lives on infrastructureLogging;
|
|
389
|
+
// Progress lives on infrastructureLogging; the next major release shows the interactive
|
|
390
390
|
// bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
|
|
391
391
|
D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
|
|
392
392
|
|
|
@@ -492,10 +492,9 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
492
492
|
library: options.output.library
|
|
493
493
|
});
|
|
494
494
|
|
|
495
|
-
// `output.resourceHints.urlHints`
|
|
496
|
-
//
|
|
497
|
-
//
|
|
498
|
-
// `parser.<type>.urlHints` rules — matched later, last-match-wins — override.
|
|
495
|
+
// `output.resourceHints.urlHints` fans the project-wide rules out as the base
|
|
496
|
+
// `urlHints` of every URL-emitting parser. They go first, so a parser-scoped
|
|
497
|
+
// rule matches later and wins.
|
|
499
498
|
const outputUrlHints =
|
|
500
499
|
options.output.resourceHints && options.output.resourceHints.urlHints;
|
|
501
500
|
if (outputUrlHints && outputUrlHints.length > 0) {
|
|
@@ -537,15 +536,19 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
537
536
|
);
|
|
538
537
|
|
|
539
538
|
F(options, "externalsType", () => {
|
|
540
|
-
const
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
validExternalTypes
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
539
|
+
const libraryType = options.output.library && options.output.library.type;
|
|
540
|
+
if (libraryType !== undefined) {
|
|
541
|
+
// The schema states which types are externals types, and reading it
|
|
542
|
+
// costs 498 KB of objects, so only a build naming one pays for that.
|
|
543
|
+
const validExternalTypes = require("../../schemas/WebpackOptions.json")
|
|
544
|
+
.definitions.ExternalsType.enum;
|
|
545
|
+
|
|
546
|
+
if (validExternalTypes.includes(libraryType)) {
|
|
547
|
+
return /** @type {ExternalsType} */ (libraryType);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
return options.output.module ? "module-import" : "var";
|
|
549
552
|
});
|
|
550
553
|
|
|
551
554
|
applyNodeDefaults(options.node, {
|
|
@@ -576,9 +579,14 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
576
579
|
applyOptimizationDefaults(options.optimization, {
|
|
577
580
|
development,
|
|
578
581
|
production,
|
|
582
|
+
futureDefaults,
|
|
579
583
|
css:
|
|
580
584
|
/** @type {boolean} */
|
|
581
585
|
(options.experiments.css),
|
|
586
|
+
esmLibrary:
|
|
587
|
+
/** @type {string[]} */
|
|
588
|
+
(options.output.enabledLibraryTypes).length > 0 &&
|
|
589
|
+
Boolean(options.output.module),
|
|
582
590
|
records: Boolean(options.recordsInputPath || options.recordsOutputPath)
|
|
583
591
|
});
|
|
584
592
|
|
|
@@ -642,7 +650,7 @@ const applyExperimentsDefaults = (
|
|
|
642
650
|
) => {
|
|
643
651
|
D(experiments, "futureDefaults", false);
|
|
644
652
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
|
645
|
-
// TODO do we need sync web assembly
|
|
653
|
+
// TODO in the next major release: do we need sync web assembly?
|
|
646
654
|
D(experiments, "syncWebAssembly", false);
|
|
647
655
|
D(
|
|
648
656
|
experiments,
|
|
@@ -660,15 +668,13 @@ const applyExperimentsDefaults = (
|
|
|
660
668
|
experiments.futureDefaults ? true : "auto"
|
|
661
669
|
);
|
|
662
670
|
|
|
663
|
-
// Resolve
|
|
664
|
-
//
|
|
665
|
-
//
|
|
666
|
-
|
|
667
|
-
//
|
|
668
|
-
//
|
|
669
|
-
//
|
|
670
|
-
// (inline requests or loaders injected via hooks, e.g. html-webpack-plugin).
|
|
671
|
-
// TODO webpack 6: css/html default to `true`, drop the `"auto"` marker.
|
|
671
|
+
// Resolve `"auto"`: enable the built-in type unless a loader is already
|
|
672
|
+
// registered for these files, so the default breaks no existing setup. Both
|
|
673
|
+
// extensions are sampled, since `/\.css$/i` also covers `.module.css`.
|
|
674
|
+
|
|
675
|
+
// Enabled implicitly the value stays `"auto"`, and the plugins then step
|
|
676
|
+
// aside per module for requests loaders were applied to.
|
|
677
|
+
// TODO in the next major release: css/html/asyncWebAssembly default to `true`, drop the `"auto"` marker.
|
|
672
678
|
if (experiments.css === "auto") {
|
|
673
679
|
experiments.css =
|
|
674
680
|
!(
|
|
@@ -697,7 +703,8 @@ const applyExperimentsDefaults = (
|
|
|
697
703
|
if (experiments.asyncWebAssembly === "auto") {
|
|
698
704
|
experiments.asyncWebAssembly =
|
|
699
705
|
!experiments.syncWebAssembly &&
|
|
700
|
-
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm")
|
|
706
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm") &&
|
|
707
|
+
"auto";
|
|
701
708
|
}
|
|
702
709
|
|
|
703
710
|
if (typeof experiments.buildHttp === "object") {
|
|
@@ -779,7 +786,12 @@ const applyCacheDefaults = (
|
|
|
779
786
|
/** @type {NonNullable<FileCacheOptions["buildDependencies"]>} */
|
|
780
787
|
(cache.buildDependencies),
|
|
781
788
|
"defaultWebpack",
|
|
782
|
-
[
|
|
789
|
+
[
|
|
790
|
+
{
|
|
791
|
+
dependency: path.resolve(__dirname, "..") + path.sep,
|
|
792
|
+
optional: false
|
|
793
|
+
}
|
|
794
|
+
]
|
|
783
795
|
);
|
|
784
796
|
break;
|
|
785
797
|
case "memory":
|
|
@@ -1227,18 +1239,13 @@ const applyModuleDefaults = (
|
|
|
1227
1239
|
}
|
|
1228
1240
|
|
|
1229
1241
|
if (html) {
|
|
1230
|
-
// `
|
|
1231
|
-
//
|
|
1232
|
-
//
|
|
1233
|
-
// behaviour. Setting `extract: true` forces extraction for all HTML
|
|
1234
|
-
// modules (including imported ones); `extract: false` disables it
|
|
1235
|
-
// everywhere.
|
|
1242
|
+
// `extract` is deliberately left undefined, which HtmlGenerator reads as
|
|
1243
|
+
// "extract only a module that is a compilation entry". `true` forces it for
|
|
1244
|
+
// imported modules too, `false` disables it everywhere.
|
|
1236
1245
|
F(module.generator, HTML_MODULE_TYPE, () => ({}));
|
|
1237
|
-
// `
|
|
1238
|
-
//
|
|
1239
|
-
//
|
|
1240
|
-
// Users may pass `false` to disable extraction entirely or an array
|
|
1241
|
-
// (with `"..."` to include the defaults) to customize it.
|
|
1246
|
+
// `sources` defaults to `true`, so HtmlParser extracts URL-like attributes
|
|
1247
|
+
// as dependencies from its built-in list. `false` disables extraction, and
|
|
1248
|
+
// an array customizes it, with `"..."` keeping the defaults.
|
|
1242
1249
|
F(module.parser, HTML_MODULE_TYPE, () => ({}));
|
|
1243
1250
|
D(
|
|
1244
1251
|
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[HTML_MODULE_TYPE]>} */
|
|
@@ -1372,11 +1379,9 @@ const applyModuleDefaults = (
|
|
|
1372
1379
|
type: CSS_MODULE_TYPE,
|
|
1373
1380
|
resolve
|
|
1374
1381
|
});
|
|
1375
|
-
// For
|
|
1376
|
-
//
|
|
1377
|
-
//
|
|
1378
|
-
// the same modules-mode behavior from the auto rule, and forcing a
|
|
1379
|
-
// different type stamp here would create a duplicate module instance.
|
|
1382
|
+
// For `composes: className from "./style.css"`. A file already detected as
|
|
1383
|
+
// a CSS module by extension is skipped: it gets modules mode from the auto
|
|
1384
|
+
// rule anyway, and a second type stamp would duplicate the module.
|
|
1380
1385
|
const moduleExtension = /\.module\.\w+$/i;
|
|
1381
1386
|
rules.push({
|
|
1382
1387
|
dependency: /css-import-local-module/,
|
|
@@ -1426,11 +1431,9 @@ const applyModuleDefaults = (
|
|
|
1426
1431
|
type: HTML_MODULE_TYPE,
|
|
1427
1432
|
resolve
|
|
1428
1433
|
});
|
|
1429
|
-
// `<iframe srcdoc>` content
|
|
1430
|
-
// `data:text/html` module. `extract: "inline"` exposes the
|
|
1431
|
-
//
|
|
1432
|
-
// Template` reads back into the attribute, without emitting a standalone
|
|
1433
|
-
// `.html` file (the module is never a page on its own).
|
|
1434
|
+
// `<iframe srcdoc>` content goes back through the HTML pipeline as a
|
|
1435
|
+
// `data:text/html` module. `extract: "inline"` exposes it on the `html`
|
|
1436
|
+
// channel without emitting a file: it is never a page on its own.
|
|
1434
1437
|
rules.push({
|
|
1435
1438
|
dependency: "html-srcdoc",
|
|
1436
1439
|
generator: {
|
|
@@ -1439,12 +1442,9 @@ const applyModuleDefaults = (
|
|
|
1439
1442
|
resolve
|
|
1440
1443
|
});
|
|
1441
1444
|
if (css) {
|
|
1442
|
-
// Inline `<style>` content
|
|
1443
|
-
//
|
|
1444
|
-
//
|
|
1445
|
-
// processed CSS text on the `css-text` codegen channel that
|
|
1446
|
-
// `HtmlInlineStyleDependency.Template` reads back into the
|
|
1447
|
-
// `<style>` tag.
|
|
1445
|
+
// Inline `<style>` content goes into the CSS pipeline as a
|
|
1446
|
+
// `data:text/css` module. `exportType: "text"` is forced, so the
|
|
1447
|
+
// processed text reaches the `css-text` channel the template reads.
|
|
1448
1448
|
rules.push({
|
|
1449
1449
|
dependency: "html-style",
|
|
1450
1450
|
parser: {
|
|
@@ -1702,7 +1702,7 @@ const applyOutputDefaults = (
|
|
|
1702
1702
|
((tp.node === null && tp.web === null && tp.module !== false) ||
|
|
1703
1703
|
tp.deno === true ||
|
|
1704
1704
|
tp.bun === true ||
|
|
1705
|
-
//
|
|
1705
|
+
// the next major release emits ESM wherever the target reads one — a browserslist
|
|
1706
1706
|
// query (or `esX`/`nodeX`) without ESM support keeps script output
|
|
1707
1707
|
(futureDefaults && tp.module !== false && !hasScriptLibrary))
|
|
1708
1708
|
)
|
|
@@ -1750,12 +1750,11 @@ const applyOutputDefaults = (
|
|
|
1750
1750
|
"const",
|
|
1751
1751
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
1752
1752
|
);
|
|
1753
|
-
// Only the browserslist target reports these;
|
|
1754
|
-
//
|
|
1755
|
-
|
|
1756
|
-
// `let` was added after `const
|
|
1757
|
-
//
|
|
1758
|
-
// do report `let` (browserslist, built-ins) keep their own accurate value.
|
|
1753
|
+
// Only the browserslist target reports these; unset elsewhere, which
|
|
1754
|
+
// `optimistic` reads as the modern spelling being available.
|
|
1755
|
+
|
|
1756
|
+
// `let` was added after `const`, so a target predating it reports only
|
|
1757
|
+
// `const` and falls back to it. One reporting `let` keeps its own value.
|
|
1759
1758
|
F(environment, "let", () =>
|
|
1760
1759
|
conditionallyOptimistic(
|
|
1761
1760
|
/** @type {boolean | undefined} */ (tp && tp.let),
|
|
@@ -1887,10 +1886,9 @@ const applyOutputDefaults = (
|
|
|
1887
1886
|
tp && optimistic(/** @type {boolean | undefined} */ (tp.modulePreload))
|
|
1888
1887
|
);
|
|
1889
1888
|
|
|
1890
|
-
//
|
|
1891
|
-
//
|
|
1892
|
-
//
|
|
1893
|
-
// tags (no waterfall), so it stays opt-in.
|
|
1889
|
+
// For ESM output, preload the entry's initial dependency graph, which native
|
|
1890
|
+
// `import()` would otherwise fetch in a waterfall. Classic output loads its
|
|
1891
|
+
// initial chunks in parallel already, so it stays opt-in.
|
|
1894
1892
|
if (output.module && output.resourceHints === undefined) {
|
|
1895
1893
|
output.resourceHints = {};
|
|
1896
1894
|
}
|
|
@@ -1944,13 +1942,9 @@ const applyOutputDefaults = (
|
|
|
1944
1942
|
}
|
|
1945
1943
|
return "[id].css";
|
|
1946
1944
|
});
|
|
1947
|
-
// Derive html
|
|
1948
|
-
//
|
|
1949
|
-
//
|
|
1950
|
-
// extracted HTML modules in one compilation don't collide on the same
|
|
1951
|
-
// emitted file. For example: `output.filename: "bundle.js"` would derive
|
|
1952
|
-
// `bundle.html` — two `.html` modules extracted in the same build would
|
|
1953
|
-
// both want that name and conflict at emit time.
|
|
1945
|
+
// Derive the html filenames from `output.filename`, as the CSS pipeline does.
|
|
1946
|
+
// A derived template with no per-module placeholder falls back to
|
|
1947
|
+
// `[name].html`, or two extracted modules would want the same file.
|
|
1954
1948
|
const HAS_PATH_PLACEHOLDER_REGEXP =
|
|
1955
1949
|
/\[(name|id|chunkhash|contenthash|fullhash|hash)/;
|
|
1956
1950
|
/**
|
|
@@ -1997,11 +1991,9 @@ const applyOutputDefaults = (
|
|
|
1997
1991
|
if (tp) {
|
|
1998
1992
|
if (tp.global) return "global";
|
|
1999
1993
|
if (tp.globalThis) return "globalThis";
|
|
2000
|
-
//
|
|
2001
|
-
//
|
|
2002
|
-
//
|
|
2003
|
-
// scopes, `global` covers Node.js. Naming either alone leaves the other
|
|
2004
|
-
// platform reading an undeclared binding.
|
|
1994
|
+
// A universal target has no identifier defined on both sides, so this is
|
|
1995
|
+
// `globalThis` where nothing argues against it and a guarded pair where
|
|
1996
|
+
// something does: naming one alone leaves the other undeclared.
|
|
2005
1997
|
if (tp.web === null && tp.node === null) {
|
|
2006
1998
|
return tp.globalThis === undefined
|
|
2007
1999
|
? "globalThis"
|
|
@@ -2391,7 +2383,7 @@ const applyNodeDefaults = (
|
|
|
2391
2383
|
});
|
|
2392
2384
|
|
|
2393
2385
|
const handlerForNames = () => {
|
|
2394
|
-
// TODO
|
|
2386
|
+
// TODO in the next major release: remove `node-module` in favor of `eval-only`
|
|
2395
2387
|
if (targetProperties) {
|
|
2396
2388
|
if (targetProperties.node) {
|
|
2397
2389
|
return "eval-only";
|
|
@@ -2407,7 +2399,7 @@ const applyNodeDefaults = (
|
|
|
2407
2399
|
}
|
|
2408
2400
|
}
|
|
2409
2401
|
|
|
2410
|
-
// TODO
|
|
2402
|
+
// TODO in the next major release: should we use `warn-even-only`?
|
|
2411
2403
|
return futureDefaults ? "warn-mock" : "mock";
|
|
2412
2404
|
};
|
|
2413
2405
|
|
|
@@ -2467,12 +2459,14 @@ const applyPerformanceDefaults = (performance, { production }) => {
|
|
|
2467
2459
|
* @param {boolean} options.production is production
|
|
2468
2460
|
* @param {boolean} options.development is development
|
|
2469
2461
|
* @param {boolean} options.css is css enabled
|
|
2462
|
+
* @param {boolean} options.esmLibrary whether the output is an ECMAScript module consumed as a library
|
|
2470
2463
|
* @param {boolean} options.records using records
|
|
2464
|
+
* @param {boolean} options.futureDefaults use defaults of the next major version
|
|
2471
2465
|
* @returns {void}
|
|
2472
2466
|
*/
|
|
2473
2467
|
const applyOptimizationDefaults = (
|
|
2474
2468
|
optimization,
|
|
2475
|
-
{ production, development, css, records }
|
|
2469
|
+
{ production, development, css, esmLibrary, records, futureDefaults }
|
|
2476
2470
|
) => {
|
|
2477
2471
|
D(optimization, "removeAvailableModules", false);
|
|
2478
2472
|
D(optimization, "removeEmptyChunks", true);
|
|
@@ -2519,31 +2513,40 @@ const applyOptimizationDefaults = (
|
|
|
2519
2513
|
/** @type {NonNullable<Optimization["minimizeOptions"]>} */
|
|
2520
2514
|
(optimization.minimizeOptions);
|
|
2521
2515
|
if (optimization.minimize) {
|
|
2522
|
-
//
|
|
2523
|
-
//
|
|
2524
|
-
|
|
2516
|
+
// Only ESM output carries these annotations, and only a consumer that
|
|
2517
|
+
// re-bundles it reads them; terser drops them everywhere else, which is
|
|
2518
|
+
// what a script-loaded output — a federation container — wants.
|
|
2519
|
+
F(minimizeOptions, "javascript", () =>
|
|
2520
|
+
esmLibrary
|
|
2521
|
+
? {
|
|
2522
|
+
compress: { passes: 2 },
|
|
2523
|
+
// eslint-disable-next-line camelcase
|
|
2524
|
+
format: { preserve_annotations: true }
|
|
2525
|
+
}
|
|
2526
|
+
: { compress: { passes: 2 } }
|
|
2527
|
+
);
|
|
2525
2528
|
F(minimizeOptions, "css", () => ({}));
|
|
2526
2529
|
F(minimizeOptions, "html", () => ({}));
|
|
2530
|
+
D(minimizeOptions, "json", futureDefaults);
|
|
2531
|
+
if (futureDefaults) F(minimizeOptions, "xml", () => ({}));
|
|
2527
2532
|
}
|
|
2528
2533
|
A(optimization, "minimizer", () => [
|
|
2529
2534
|
{
|
|
2530
2535
|
apply: (compiler) => {
|
|
2531
2536
|
// Lazy load the minimizer plugin
|
|
2532
|
-
const
|
|
2533
|
-
|
|
2534
|
-
//
|
|
2535
|
-
// native CSS
|
|
2536
|
-
// functions each dispatched by its own `filter
|
|
2537
|
-
// cssMinify
|
|
2538
|
-
// worker-safe by resolving their parser with
|
|
2539
|
-
// the worker, so all three share the
|
|
2540
|
-
//
|
|
2541
|
-
|
|
2542
|
-
//
|
|
2543
|
-
//
|
|
2544
|
-
//
|
|
2545
|
-
// than resolved per asset — a coarse check, but it keeps the outcome
|
|
2546
|
-
// independent of tap order and of the plugin version in use.
|
|
2537
|
+
const MinimizerPlugin = require("minimizer-webpack-plugin");
|
|
2538
|
+
|
|
2539
|
+
// WHY: one minimizer instance, so one worker-thread pool, handles JS and
|
|
2540
|
+
// — where native CSS and HTML are enabled — those assets too, as an array
|
|
2541
|
+
// of minify functions each dispatched by its own `filter`: the JS one
|
|
2542
|
+
// to JS, `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and
|
|
2543
|
+
// HTML serializers stay worker-safe by resolving their parser with
|
|
2544
|
+
// `require("webpack/…")` in the worker, so all three share the pool, and
|
|
2545
|
+
// `test` is widened to let those assets reach the dispatcher.
|
|
2546
|
+
|
|
2547
|
+
// Step aside for a minimizer the user configured for these types:
|
|
2548
|
+
// whichever ran first would mark the asset `minimized` and silently
|
|
2549
|
+
// disable the other. Matchers are read directly, coarse but stable.
|
|
2547
2550
|
const claimedByOtherMinimizer = require("./getClaimedAssetTypes")(
|
|
2548
2551
|
compiler
|
|
2549
2552
|
);
|
|
@@ -2552,9 +2555,18 @@ const applyOptimizationDefaults = (
|
|
|
2552
2555
|
const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
|
|
2553
2556
|
compiler.options.optimization.minimizeOptions
|
|
2554
2557
|
);
|
|
2555
|
-
const
|
|
2558
|
+
const javascriptOptions = minimizeByType.javascript || {
|
|
2556
2559
|
compress: { passes: 2 }
|
|
2557
2560
|
};
|
|
2561
|
+
// webpack's printer, held to what terser writes, replaces terser; until
|
|
2562
|
+
// proven on real builds it is a future default, and terser as the plugin
|
|
2563
|
+
// publishes it minifies JS everywhere else.
|
|
2564
|
+
const javascriptMinify = futureDefaults
|
|
2565
|
+
? require.resolve("../javascript/jsMinify")
|
|
2566
|
+
: {
|
|
2567
|
+
path: require.resolve("minimizer-webpack-plugin"),
|
|
2568
|
+
export: "terserMinify"
|
|
2569
|
+
};
|
|
2558
2570
|
|
|
2559
2571
|
const { css, html } = compiler.options.experiments;
|
|
2560
2572
|
const minifyJs = minimizeByType.javascript !== false;
|
|
@@ -2566,16 +2578,47 @@ const applyOptimizationDefaults = (
|
|
|
2566
2578
|
Boolean(html) &&
|
|
2567
2579
|
!claimedByOtherMinimizer.html &&
|
|
2568
2580
|
minimizeByType.html !== false;
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2581
|
+
// `=== true` rather than `!== false`: outside `futureDefaults`, JSON is opt-in.
|
|
2582
|
+
const minifyJson =
|
|
2583
|
+
minimizeByType.json === true && !claimedByOtherMinimizer.json;
|
|
2584
|
+
// Off unless asked for: only an object, which futureDefaults supplies.
|
|
2585
|
+
const minifyXml =
|
|
2586
|
+
!claimedByOtherMinimizer.xml &&
|
|
2587
|
+
typeof minimizeByType.xml === "object";
|
|
2588
|
+
if (
|
|
2589
|
+
!minifyJs &&
|
|
2590
|
+
!minifyCss &&
|
|
2591
|
+
!minifyHtml &&
|
|
2592
|
+
!minifyJson &&
|
|
2593
|
+
!minifyXml
|
|
2594
|
+
) {
|
|
2574
2595
|
return;
|
|
2575
2596
|
}
|
|
2576
|
-
|
|
2597
|
+
// An asset name keeps the query and the fragment its filename template
|
|
2598
|
+
// wrote (`[query][fragment]`, `main.js#[contenthash]`), so both may follow.
|
|
2599
|
+
/**
|
|
2600
|
+
* @param {string[]} extensions extension patterns
|
|
2601
|
+
* @returns {RegExp} matcher for asset names with those extensions
|
|
2602
|
+
*/
|
|
2603
|
+
const assetNameTest = (extensions) =>
|
|
2604
|
+
new RegExp(`^[^?#]*\\.(?:${extensions.join("|")})(?:[?#].*)?$`, "i");
|
|
2605
|
+
if (
|
|
2606
|
+
minifyJs &&
|
|
2607
|
+
!minifyCss &&
|
|
2608
|
+
!minifyHtml &&
|
|
2609
|
+
!minifyJson &&
|
|
2610
|
+
!minifyXml
|
|
2611
|
+
) {
|
|
2612
|
+
new MinimizerPlugin({
|
|
2613
|
+
test: assetNameTest(["[cm]?js"]),
|
|
2614
|
+
minify: javascriptMinify,
|
|
2615
|
+
minimizerOptions: javascriptOptions
|
|
2616
|
+
}).apply(/** @type {EXPECTED_ANY} */ (compiler));
|
|
2617
|
+
return;
|
|
2618
|
+
}
|
|
2619
|
+
/** @type {(typeof javascriptMinify | string)[]} */
|
|
2577
2620
|
const minify = [];
|
|
2578
|
-
/** @type {
|
|
2621
|
+
/** @type {(typeof javascriptOptions | NonNullable<Parameters<typeof import("../css/cssMinify")>[1]> | NonNullable<Parameters<typeof import("../html/htmlMinify")>[1]> | Record<string, never>)[]} */
|
|
2579
2622
|
const minimizerOptions = [];
|
|
2580
2623
|
/** @type {string[]} */
|
|
2581
2624
|
const extensions = [];
|
|
@@ -2589,12 +2632,21 @@ const applyOptimizationDefaults = (
|
|
|
2589
2632
|
// prefixes and every spelling a target can read, so `vendorPrefixes`
|
|
2590
2633
|
// turns off the first alone — resolving it is what the second needs.
|
|
2591
2634
|
const { target } = compiler.options;
|
|
2592
|
-
const
|
|
2635
|
+
const context = /** @type {Context} */ (compiler.options.context);
|
|
2636
|
+
const named = target
|
|
2593
2637
|
? getTargetsBrowsers(
|
|
2594
2638
|
Array.isArray(target) ? target : [target],
|
|
2595
|
-
|
|
2639
|
+
context
|
|
2596
2640
|
)
|
|
2597
2641
|
: undefined;
|
|
2642
|
+
// A target naming no browsers is still served to some: browserslist's own
|
|
2643
|
+
// `defaults` are them, where none would read as "every current engine" —
|
|
2644
|
+
// unless `dropOverriddenDeclarations` asks for exactly that assumption.
|
|
2645
|
+
const browsers =
|
|
2646
|
+
named ||
|
|
2647
|
+
(cssOptions !== undefined && cssOptions.dropOverriddenDeclarations
|
|
2648
|
+
? undefined
|
|
2649
|
+
: getTargetsBrowsers(["browserslist:defaults"], context));
|
|
2598
2650
|
const cssEnvironment = {
|
|
2599
2651
|
browsers,
|
|
2600
2652
|
vendorPrefixes:
|
|
@@ -2605,33 +2657,50 @@ const applyOptimizationDefaults = (
|
|
|
2605
2657
|
? minimizeByType.html
|
|
2606
2658
|
: undefined;
|
|
2607
2659
|
if (minifyJs) {
|
|
2608
|
-
minify.push(
|
|
2609
|
-
minimizerOptions.push(
|
|
2660
|
+
minify.push(javascriptMinify);
|
|
2661
|
+
minimizerOptions.push(javascriptOptions);
|
|
2610
2662
|
extensions.push("[cm]?js");
|
|
2611
2663
|
}
|
|
2612
2664
|
if (minifyCss) {
|
|
2613
|
-
minify.push(require("../css/cssMinify"));
|
|
2665
|
+
minify.push(require.resolve("../css/cssMinify"));
|
|
2666
|
+
// An SVG `data:` URL is minified as the `.svg` assets are, or left alone.
|
|
2614
2667
|
minimizerOptions.push({
|
|
2615
2668
|
environment: cssEnvironment,
|
|
2669
|
+
svg: minifyXml,
|
|
2616
2670
|
...cssOptions
|
|
2617
2671
|
});
|
|
2618
2672
|
extensions.push("css");
|
|
2619
2673
|
}
|
|
2620
2674
|
if (minifyHtml) {
|
|
2621
|
-
minify.push(require("../html/htmlMinify"));
|
|
2622
|
-
// `minimize.css` rides
|
|
2623
|
-
//
|
|
2624
|
-
//
|
|
2625
|
-
// each language the other's answer.
|
|
2675
|
+
minify.push(require.resolve("../html/htmlMinify"));
|
|
2676
|
+
// `minimize.css` rides under its own key rather than spread beside the
|
|
2677
|
+
// HTML options: the two name some of the same switches, so one flat
|
|
2678
|
+
// object would hand each language the other's answer.
|
|
2626
2679
|
minimizerOptions.push({
|
|
2627
2680
|
environment: cssEnvironment,
|
|
2628
2681
|
css: cssOptions,
|
|
2682
|
+
svg: minifyXml,
|
|
2629
2683
|
...htmlOptions
|
|
2630
2684
|
});
|
|
2631
2685
|
extensions.push("html");
|
|
2632
2686
|
}
|
|
2633
|
-
|
|
2634
|
-
|
|
2687
|
+
if (minifyJson) {
|
|
2688
|
+
minify.push(require.resolve("../json/jsonMinify"));
|
|
2689
|
+
minimizerOptions.push({});
|
|
2690
|
+
// A web app manifest is JSON under its own extension.
|
|
2691
|
+
extensions.push("json", "webmanifest");
|
|
2692
|
+
}
|
|
2693
|
+
if (minifyXml) {
|
|
2694
|
+
minify.push(require.resolve("../html/xmlMinify"));
|
|
2695
|
+
minimizerOptions.push({
|
|
2696
|
+
environment: cssEnvironment,
|
|
2697
|
+
css: cssOptions,
|
|
2698
|
+
...minimizeByType.xml
|
|
2699
|
+
});
|
|
2700
|
+
extensions.push("svg", "xml");
|
|
2701
|
+
}
|
|
2702
|
+
new MinimizerPlugin({
|
|
2703
|
+
test: assetNameTest(extensions),
|
|
2635
2704
|
minify,
|
|
2636
2705
|
minimizerOptions
|
|
2637
2706
|
}).apply(/** @type {EXPECTED_ANY} */ (compiler));
|
|
@@ -2651,6 +2720,7 @@ const applyOptimizationDefaults = (
|
|
|
2651
2720
|
: [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
|
|
2652
2721
|
);
|
|
2653
2722
|
D(splitChunks, "hidePathInfo", production);
|
|
2723
|
+
D(splitChunks, "dedupDepth", futureDefaults ? 1 : 0);
|
|
2654
2724
|
D(splitChunks, "chunks", "async");
|
|
2655
2725
|
D(splitChunks, "usedExports", optimization.usedExports === true);
|
|
2656
2726
|
D(splitChunks, "minChunks", 1);
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { matchObject } = require("../ModuleFilenameHelpers");
|
|
8
|
+
const { matchObject } = require("../devtool/ModuleFilenameHelpers");
|
|
9
9
|
|
|
10
10
|
/** @import Compiler from "../Compiler" */
|
|
11
|
-
/** @import { MatchObject } from "../ModuleFilenameHelpers" */
|
|
12
|
-
/** @typedef {MatchObject & { minimizer?:
|
|
11
|
+
/** @import { MatchObject } from "../devtool/ModuleFilenameHelpers" */
|
|
12
|
+
/** @typedef {MatchObject & { minimizer?: import("minimizer-webpack-plugin").InternalPluginOptions<EXPECTED_ANY>["minimizer"] }} MinimizerOptions */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* @param {unknown} candidate a configured plugin or minimizer entry
|
|
@@ -17,24 +17,21 @@ const { matchObject } = require("../ModuleFilenameHelpers");
|
|
|
17
17
|
* @returns {boolean} whether the candidate minimizes that file
|
|
18
18
|
*/
|
|
19
19
|
const claims = (candidate, file) => {
|
|
20
|
-
//
|
|
21
|
-
// `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, …
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
20
|
+
// WHY: every minimizer in the `minimizer-webpack-plugin` family — itself,
|
|
21
|
+
// `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, … — keeps
|
|
22
|
+
// its implementation on `options.minimizer` and its asset matcher alongside
|
|
23
|
+
// it, in the shape `matchObject` reads. The matcher alone is not enough to
|
|
24
|
+
// recognize one: `BannerPlugin` and `SourceMapDevToolPlugin` carry the same
|
|
25
|
+
// three keys, and `LoaderOptionsPlugin` defaults `test` to match every file,
|
|
26
|
+
// so reading those as minimizers would disable minification.
|
|
27
27
|
const { options } = /** @type {{ options?: MinimizerOptions }} */ (candidate);
|
|
28
28
|
if (!options || !options.minimizer) return false;
|
|
29
|
-
// `test
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
// files it was configured for.
|
|
29
|
+
// `test` and `include` say which types it handles, and the minimizer takes a
|
|
30
|
+
// file only when both match. `exclude` merely narrows the files within them:
|
|
31
|
+
// honoring it would let a subdirectory-scoped minimizer claim nothing.
|
|
33
32
|
const { test, include } = options;
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
(include !== undefined && matchObject({ include }, file))
|
|
37
|
-
);
|
|
33
|
+
if (test === undefined && include === undefined) return false;
|
|
34
|
+
return matchObject({ test, include }, file);
|
|
38
35
|
};
|
|
39
36
|
|
|
40
37
|
/**
|
|
@@ -45,12 +42,14 @@ const claims = (candidate, file) => {
|
|
|
45
42
|
* matcher rather than resolving it per emitted asset, so a minimizer restricted
|
|
46
43
|
* to some of a type's files still claims the whole type.
|
|
47
44
|
* @param {Compiler} compiler the compiler
|
|
48
|
-
* @returns {{ css: boolean, html: boolean }} types another minimizer handles
|
|
45
|
+
* @returns {{ css: boolean, html: boolean, json: boolean, xml: boolean }} types another minimizer handles
|
|
49
46
|
*/
|
|
50
47
|
module.exports = (compiler) => {
|
|
51
48
|
const { optimization, plugins } = compiler.options;
|
|
52
49
|
let css = false;
|
|
53
50
|
let html = false;
|
|
51
|
+
let json = false;
|
|
52
|
+
let xml = false;
|
|
54
53
|
// Both lists are normalized arrays with falsy entries already filtered out,
|
|
55
54
|
// and `minimizer` was filled in by the defaults before any plugin applies.
|
|
56
55
|
const minimizer =
|
|
@@ -59,7 +58,15 @@ module.exports = (compiler) => {
|
|
|
59
58
|
for (const candidate of [...minimizer, ...plugins]) {
|
|
60
59
|
if (!css) css = claims(candidate, "file.css");
|
|
61
60
|
if (!html) html = claims(candidate, "file.html");
|
|
62
|
-
|
|
61
|
+
// The JSON minifier takes web app manifests too, so claiming either stops it.
|
|
62
|
+
if (!json) {
|
|
63
|
+
json =
|
|
64
|
+
claims(candidate, "file.json") || claims(candidate, "file.webmanifest");
|
|
65
|
+
}
|
|
66
|
+
if (!xml) {
|
|
67
|
+
xml = claims(candidate, "file.svg") || claims(candidate, "file.xml");
|
|
68
|
+
}
|
|
69
|
+
if (css && html && json && xml) break;
|
|
63
70
|
}
|
|
64
|
-
return { css, html };
|
|
71
|
+
return { css, html, json, xml };
|
|
65
72
|
};
|