webpack 5.111.1 → 5.112.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 +1 -1
- package/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- 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 +37 -8
- package/lib/NormalModule.js +3 -2242
- 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 +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -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} +6 -6
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- 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} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- 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/context/ContextModule.js +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- 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 -11
- 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} +14 -11
- 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} +166 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- 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} +17 -16
- 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} +9 -6
- 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} +31 -9
- 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} +10 -11
- 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} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- 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} +21 -17
- 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 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- 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} +25 -22
- 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} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- 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} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- 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} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- 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} +22 -25
- 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} +122 -103
- 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} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
- 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} +82 -53
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- 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} +155 -27
- 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 +23 -21
- 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 +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- 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/errors/AbstractMethodError.js +1 -1
- 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/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
- 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/errors/JSONParseError.js +4 -4
- 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 +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- 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} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- 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 +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- 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 +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- 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 +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- 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 +2 -2
- package/lib/loaders/LoaderRunner.js +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- 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} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- 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 +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- 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} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- 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 +2 -3
- 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 +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- 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 +19 -13
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +22 -13
- 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 +1 -1
- 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 +66 -45
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
- 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/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- 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 +7 -11
- 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 +3 -3
- 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 +80 -17
- 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} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -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 +1 -1
- package/lib/schemes/HttpUriPlugin.js +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- 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 +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -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} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- 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 +35 -28
- 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 +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- 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 +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- 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 +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- 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 +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- 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 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- 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}/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
|
|
@@ -87,6 +87,8 @@ const {
|
|
|
87
87
|
*/
|
|
88
88
|
/** @import { WasmLoadingTypes } from "../wasm/EnableWasmLoadingPlugin" */
|
|
89
89
|
/** @import { PlatformTargetProperties, TargetProperties } from "./target" */
|
|
90
|
+
/** @import Compiler from "../Compiler" */
|
|
91
|
+
/** @typedef {Parameters<import("minimizer-webpack-plugin")["apply"]>[0]} MinimizerCompiler */
|
|
90
92
|
|
|
91
93
|
/**
|
|
92
94
|
* Defines the recursive non nullable type used by this module.
|
|
@@ -228,7 +230,7 @@ const {
|
|
|
228
230
|
const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
|
|
229
231
|
const DEFAULT_CACHE_NAME = "default";
|
|
230
232
|
const DEFAULTS = {
|
|
231
|
-
// TODO
|
|
233
|
+
// TODO in the next major release: use xxhash64
|
|
232
234
|
HASH_FUNCTION: "md4"
|
|
233
235
|
};
|
|
234
236
|
|
|
@@ -279,18 +281,20 @@ const A = (obj, prop, factory) => {
|
|
|
279
281
|
if (value === undefined) {
|
|
280
282
|
obj[prop] = factory();
|
|
281
283
|
} else if (Array.isArray(value)) {
|
|
282
|
-
/** @type {
|
|
284
|
+
/** @type {(T[P] extends (infer E)[] ? E : never)[] | undefined} */
|
|
283
285
|
let newArray;
|
|
284
286
|
for (let i = 0; i < value.length; i++) {
|
|
285
287
|
const item = value[i];
|
|
286
288
|
if (item === "...") {
|
|
287
289
|
if (newArray === undefined) {
|
|
288
290
|
newArray = value.slice(0, i);
|
|
289
|
-
obj[prop] = /** @type {T[P]} */ (
|
|
291
|
+
obj[prop] = /** @type {T[P]} */ (
|
|
292
|
+
/** @type {T[P] | NonNullable<typeof newArray>} */ (newArray)
|
|
293
|
+
);
|
|
290
294
|
}
|
|
291
295
|
const items =
|
|
292
|
-
/** @type {
|
|
293
|
-
(/** @type {
|
|
296
|
+
/** @type {NonNullable<typeof newArray>} */
|
|
297
|
+
(/** @type {T[P] | NonNullable<typeof newArray>} */ (factory()));
|
|
294
298
|
if (items !== undefined) {
|
|
295
299
|
for (const item of items) {
|
|
296
300
|
newArray.push(item);
|
|
@@ -386,7 +390,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
386
390
|
|
|
387
391
|
F(options, "validate", () => !(futureDefaults === true && production));
|
|
388
392
|
|
|
389
|
-
// Progress lives on infrastructureLogging;
|
|
393
|
+
// Progress lives on infrastructureLogging; the next major release shows the interactive
|
|
390
394
|
// bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
|
|
391
395
|
D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
|
|
392
396
|
|
|
@@ -536,15 +540,19 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
536
540
|
);
|
|
537
541
|
|
|
538
542
|
F(options, "externalsType", () => {
|
|
539
|
-
const
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
validExternalTypes
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
543
|
+
const libraryType = options.output.library && options.output.library.type;
|
|
544
|
+
if (libraryType !== undefined) {
|
|
545
|
+
// The schema states which types are externals types, and reading it
|
|
546
|
+
// costs 498 KB of objects, so only a build naming one pays for that.
|
|
547
|
+
const validExternalTypes = require("../../schemas/WebpackOptions.json")
|
|
548
|
+
.definitions.ExternalsType.enum;
|
|
549
|
+
|
|
550
|
+
if (validExternalTypes.includes(libraryType)) {
|
|
551
|
+
return /** @type {ExternalsType} */ (libraryType);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
return options.output.module ? "module-import" : "var";
|
|
548
556
|
});
|
|
549
557
|
|
|
550
558
|
applyNodeDefaults(options.node, {
|
|
@@ -575,9 +583,14 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
575
583
|
applyOptimizationDefaults(options.optimization, {
|
|
576
584
|
development,
|
|
577
585
|
production,
|
|
586
|
+
futureDefaults,
|
|
578
587
|
css:
|
|
579
588
|
/** @type {boolean} */
|
|
580
589
|
(options.experiments.css),
|
|
590
|
+
esmLibrary:
|
|
591
|
+
/** @type {string[]} */
|
|
592
|
+
(options.output.enabledLibraryTypes).length > 0 &&
|
|
593
|
+
Boolean(options.output.module),
|
|
581
594
|
records: Boolean(options.recordsInputPath || options.recordsOutputPath)
|
|
582
595
|
});
|
|
583
596
|
|
|
@@ -641,7 +654,7 @@ const applyExperimentsDefaults = (
|
|
|
641
654
|
) => {
|
|
642
655
|
D(experiments, "futureDefaults", false);
|
|
643
656
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
|
644
|
-
// TODO do we need sync web assembly
|
|
657
|
+
// TODO in the next major release: do we need sync web assembly?
|
|
645
658
|
D(experiments, "syncWebAssembly", false);
|
|
646
659
|
D(
|
|
647
660
|
experiments,
|
|
@@ -665,7 +678,7 @@ const applyExperimentsDefaults = (
|
|
|
665
678
|
|
|
666
679
|
// Enabled implicitly the value stays `"auto"`, and the plugins then step
|
|
667
680
|
// aside per module for requests loaders were applied to.
|
|
668
|
-
// TODO
|
|
681
|
+
// TODO in the next major release: css/html/asyncWebAssembly default to `true`, drop the `"auto"` marker.
|
|
669
682
|
if (experiments.css === "auto") {
|
|
670
683
|
experiments.css =
|
|
671
684
|
!(
|
|
@@ -694,7 +707,8 @@ const applyExperimentsDefaults = (
|
|
|
694
707
|
if (experiments.asyncWebAssembly === "auto") {
|
|
695
708
|
experiments.asyncWebAssembly =
|
|
696
709
|
!experiments.syncWebAssembly &&
|
|
697
|
-
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm")
|
|
710
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm") &&
|
|
711
|
+
"auto";
|
|
698
712
|
}
|
|
699
713
|
|
|
700
714
|
if (typeof experiments.buildHttp === "object") {
|
|
@@ -776,7 +790,12 @@ const applyCacheDefaults = (
|
|
|
776
790
|
/** @type {NonNullable<FileCacheOptions["buildDependencies"]>} */
|
|
777
791
|
(cache.buildDependencies),
|
|
778
792
|
"defaultWebpack",
|
|
779
|
-
[
|
|
793
|
+
[
|
|
794
|
+
{
|
|
795
|
+
dependency: path.resolve(__dirname, "..") + path.sep,
|
|
796
|
+
optional: false
|
|
797
|
+
}
|
|
798
|
+
]
|
|
780
799
|
);
|
|
781
800
|
break;
|
|
782
801
|
case "memory":
|
|
@@ -1687,13 +1706,13 @@ const applyOutputDefaults = (
|
|
|
1687
1706
|
((tp.node === null && tp.web === null && tp.module !== false) ||
|
|
1688
1707
|
tp.deno === true ||
|
|
1689
1708
|
tp.bun === true ||
|
|
1690
|
-
//
|
|
1709
|
+
// the next major release emits ESM wherever the target reads one — a browserslist
|
|
1691
1710
|
// query (or `esX`/`nodeX`) without ESM support keeps script output
|
|
1692
1711
|
(futureDefaults && tp.module !== false && !hasScriptLibrary))
|
|
1693
1712
|
)
|
|
1694
1713
|
);
|
|
1695
1714
|
|
|
1696
|
-
const environment =
|
|
1715
|
+
const environment = output.environment;
|
|
1697
1716
|
/**
|
|
1698
1717
|
* Returns true, when v is truthy or undefined.
|
|
1699
1718
|
* @param {boolean | undefined} v value
|
|
@@ -2368,7 +2387,7 @@ const applyNodeDefaults = (
|
|
|
2368
2387
|
});
|
|
2369
2388
|
|
|
2370
2389
|
const handlerForNames = () => {
|
|
2371
|
-
// TODO
|
|
2390
|
+
// TODO in the next major release: remove `node-module` in favor of `eval-only`
|
|
2372
2391
|
if (targetProperties) {
|
|
2373
2392
|
if (targetProperties.node) {
|
|
2374
2393
|
return "eval-only";
|
|
@@ -2384,7 +2403,7 @@ const applyNodeDefaults = (
|
|
|
2384
2403
|
}
|
|
2385
2404
|
}
|
|
2386
2405
|
|
|
2387
|
-
// TODO
|
|
2406
|
+
// TODO in the next major release: should we use `warn-even-only`?
|
|
2388
2407
|
return futureDefaults ? "warn-mock" : "mock";
|
|
2389
2408
|
};
|
|
2390
2409
|
|
|
@@ -2444,12 +2463,14 @@ const applyPerformanceDefaults = (performance, { production }) => {
|
|
|
2444
2463
|
* @param {boolean} options.production is production
|
|
2445
2464
|
* @param {boolean} options.development is development
|
|
2446
2465
|
* @param {boolean} options.css is css enabled
|
|
2466
|
+
* @param {boolean} options.esmLibrary whether the output is an ECMAScript module consumed as a library
|
|
2447
2467
|
* @param {boolean} options.records using records
|
|
2468
|
+
* @param {boolean} options.futureDefaults use defaults of the next major version
|
|
2448
2469
|
* @returns {void}
|
|
2449
2470
|
*/
|
|
2450
2471
|
const applyOptimizationDefaults = (
|
|
2451
2472
|
optimization,
|
|
2452
|
-
{ production, development, css, records }
|
|
2473
|
+
{ production, development, css, esmLibrary, records, futureDefaults }
|
|
2453
2474
|
) => {
|
|
2454
2475
|
D(optimization, "removeAvailableModules", false);
|
|
2455
2476
|
D(optimization, "removeEmptyChunks", true);
|
|
@@ -2481,13 +2502,12 @@ const applyOptimizationDefaults = (
|
|
|
2481
2502
|
D(optimization, "realContentHash", production);
|
|
2482
2503
|
// A plugin assigning the object shorthand in `apply()` runs after
|
|
2483
2504
|
// normalization: it replaces `minimizeOptions`, keeping `minimize` boolean.
|
|
2484
|
-
const minimizeAssignedInApply =
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
if (typeof minimizeAssignedInApply === "object") {
|
|
2488
|
-
optimization.minimizeOptions = /** @type {OptimizationMinimizeOptions} */ (
|
|
2489
|
-
minimizeAssignedInApply
|
|
2505
|
+
const minimizeAssignedInApply =
|
|
2506
|
+
/** @type {Optimization["minimize"] | OptimizationMinimizeOptions} */ (
|
|
2507
|
+
optimization.minimize
|
|
2490
2508
|
);
|
|
2509
|
+
if (typeof minimizeAssignedInApply === "object") {
|
|
2510
|
+
optimization.minimizeOptions = minimizeAssignedInApply;
|
|
2491
2511
|
optimization.minimize = true;
|
|
2492
2512
|
}
|
|
2493
2513
|
D(optimization, "minimize", production);
|
|
@@ -2496,25 +2516,36 @@ const applyOptimizationDefaults = (
|
|
|
2496
2516
|
/** @type {NonNullable<Optimization["minimizeOptions"]>} */
|
|
2497
2517
|
(optimization.minimizeOptions);
|
|
2498
2518
|
if (optimization.minimize) {
|
|
2499
|
-
//
|
|
2500
|
-
//
|
|
2501
|
-
|
|
2519
|
+
// Only ESM output carries these annotations, and only a consumer that
|
|
2520
|
+
// re-bundles it reads them; terser drops them everywhere else, which is
|
|
2521
|
+
// what a script-loaded output — a federation container — wants.
|
|
2522
|
+
F(minimizeOptions, "javascript", () =>
|
|
2523
|
+
esmLibrary
|
|
2524
|
+
? {
|
|
2525
|
+
compress: { passes: 2 },
|
|
2526
|
+
// eslint-disable-next-line camelcase
|
|
2527
|
+
format: { preserve_annotations: true }
|
|
2528
|
+
}
|
|
2529
|
+
: { compress: { passes: 2 } }
|
|
2530
|
+
);
|
|
2502
2531
|
F(minimizeOptions, "css", () => ({}));
|
|
2503
2532
|
F(minimizeOptions, "html", () => ({}));
|
|
2533
|
+
D(minimizeOptions, "json", futureDefaults);
|
|
2534
|
+
if (futureDefaults) F(minimizeOptions, "xml", () => ({}));
|
|
2504
2535
|
}
|
|
2505
2536
|
A(optimization, "minimizer", () => [
|
|
2506
2537
|
{
|
|
2507
2538
|
apply: (compiler) => {
|
|
2508
2539
|
// Lazy load the minimizer plugin
|
|
2509
|
-
const
|
|
2540
|
+
const MinimizerPlugin = require("minimizer-webpack-plugin");
|
|
2510
2541
|
|
|
2511
2542
|
// WHY: one minimizer instance, so one worker-thread pool, handles JS and
|
|
2512
2543
|
// — where native CSS and HTML are enabled — those assets too, as an array
|
|
2513
|
-
// of minify functions each dispatched by its own `filter`:
|
|
2514
|
-
// `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and
|
|
2515
|
-
// stay worker-safe by resolving their parser with
|
|
2516
|
-
// in the worker, so all three share the pool, and
|
|
2517
|
-
// those assets reach the dispatcher.
|
|
2544
|
+
// of minify functions each dispatched by its own `filter`: the JS one
|
|
2545
|
+
// to JS, `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and
|
|
2546
|
+
// HTML serializers stay worker-safe by resolving their parser with
|
|
2547
|
+
// `require("webpack/…")` in the worker, so all three share the pool, and
|
|
2548
|
+
// `test` is widened to let those assets reach the dispatcher.
|
|
2518
2549
|
|
|
2519
2550
|
// Step aside for a minimizer the user configured for these types:
|
|
2520
2551
|
// whichever ran first would mark the asset `minimized` and silently
|
|
@@ -2527,9 +2558,18 @@ const applyOptimizationDefaults = (
|
|
|
2527
2558
|
const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
|
|
2528
2559
|
compiler.options.optimization.minimizeOptions
|
|
2529
2560
|
);
|
|
2530
|
-
const
|
|
2561
|
+
const javascriptOptions = minimizeByType.javascript || {
|
|
2531
2562
|
compress: { passes: 2 }
|
|
2532
2563
|
};
|
|
2564
|
+
// webpack's printer, held to what terser writes, replaces terser; until
|
|
2565
|
+
// proven on real builds it is a future default, and terser as the plugin
|
|
2566
|
+
// publishes it minifies JS everywhere else.
|
|
2567
|
+
const javascriptMinify = futureDefaults
|
|
2568
|
+
? require.resolve("../javascript/jsMinify")
|
|
2569
|
+
: {
|
|
2570
|
+
path: require.resolve("minimizer-webpack-plugin"),
|
|
2571
|
+
export: "terserMinify"
|
|
2572
|
+
};
|
|
2533
2573
|
|
|
2534
2574
|
const { css, html } = compiler.options.experiments;
|
|
2535
2575
|
const minifyJs = minimizeByType.javascript !== false;
|
|
@@ -2541,16 +2581,51 @@ const applyOptimizationDefaults = (
|
|
|
2541
2581
|
Boolean(html) &&
|
|
2542
2582
|
!claimedByOtherMinimizer.html &&
|
|
2543
2583
|
minimizeByType.html !== false;
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2584
|
+
// `=== true` rather than `!== false`: outside `futureDefaults`, JSON is opt-in.
|
|
2585
|
+
const minifyJson =
|
|
2586
|
+
minimizeByType.json === true && !claimedByOtherMinimizer.json;
|
|
2587
|
+
// Off unless asked for: only an object, which futureDefaults supplies.
|
|
2588
|
+
const minifyXml =
|
|
2589
|
+
!claimedByOtherMinimizer.xml &&
|
|
2590
|
+
typeof minimizeByType.xml === "object";
|
|
2591
|
+
if (
|
|
2592
|
+
!minifyJs &&
|
|
2593
|
+
!minifyCss &&
|
|
2594
|
+
!minifyHtml &&
|
|
2595
|
+
!minifyJson &&
|
|
2596
|
+
!minifyXml
|
|
2597
|
+
) {
|
|
2598
|
+
return;
|
|
2599
|
+
}
|
|
2600
|
+
// An asset name keeps the query and the fragment its filename template
|
|
2601
|
+
// wrote (`[query][fragment]`, `main.js#[contenthash]`), so both may follow.
|
|
2602
|
+
/**
|
|
2603
|
+
* @param {string[]} extensions extension patterns
|
|
2604
|
+
* @returns {RegExp} matcher for asset names with those extensions
|
|
2605
|
+
*/
|
|
2606
|
+
const assetNameTest = (extensions) =>
|
|
2607
|
+
new RegExp(`^[^?#]*\\.(?:${extensions.join("|")})(?:[?#].*)?$`, "i");
|
|
2608
|
+
if (
|
|
2609
|
+
minifyJs &&
|
|
2610
|
+
!minifyCss &&
|
|
2611
|
+
!minifyHtml &&
|
|
2612
|
+
!minifyJson &&
|
|
2613
|
+
!minifyXml
|
|
2614
|
+
) {
|
|
2615
|
+
new MinimizerPlugin({
|
|
2616
|
+
test: assetNameTest(["[cm]?js"]),
|
|
2617
|
+
minify: javascriptMinify,
|
|
2618
|
+
minimizerOptions: javascriptOptions
|
|
2619
|
+
}).apply(
|
|
2620
|
+
/** @type {MinimizerCompiler} */ (
|
|
2621
|
+
/** @type {Compiler | MinimizerCompiler} */ (compiler)
|
|
2622
|
+
)
|
|
2548
2623
|
);
|
|
2549
2624
|
return;
|
|
2550
2625
|
}
|
|
2551
|
-
/** @type {(typeof
|
|
2626
|
+
/** @type {(typeof javascriptMinify | string)[]} */
|
|
2552
2627
|
const minify = [];
|
|
2553
|
-
/** @type {
|
|
2628
|
+
/** @type {(typeof javascriptOptions | NonNullable<Parameters<typeof import("../css/cssMinify")>[1]> | NonNullable<Parameters<typeof import("../html/htmlMinify")>[1]> | Record<string, never>)[]} */
|
|
2554
2629
|
const minimizerOptions = [];
|
|
2555
2630
|
/** @type {string[]} */
|
|
2556
2631
|
const extensions = [];
|
|
@@ -2564,12 +2639,21 @@ const applyOptimizationDefaults = (
|
|
|
2564
2639
|
// prefixes and every spelling a target can read, so `vendorPrefixes`
|
|
2565
2640
|
// turns off the first alone — resolving it is what the second needs.
|
|
2566
2641
|
const { target } = compiler.options;
|
|
2567
|
-
const
|
|
2642
|
+
const context = /** @type {Context} */ (compiler.options.context);
|
|
2643
|
+
const named = target
|
|
2568
2644
|
? getTargetsBrowsers(
|
|
2569
2645
|
Array.isArray(target) ? target : [target],
|
|
2570
|
-
|
|
2646
|
+
context
|
|
2571
2647
|
)
|
|
2572
2648
|
: undefined;
|
|
2649
|
+
// A target naming no browsers is still served to some: browserslist's own
|
|
2650
|
+
// `defaults` are them, where none would read as "every current engine" —
|
|
2651
|
+
// unless `dropOverriddenDeclarations` asks for exactly that assumption.
|
|
2652
|
+
const browsers =
|
|
2653
|
+
named ||
|
|
2654
|
+
(cssOptions !== undefined && cssOptions.dropOverriddenDeclarations
|
|
2655
|
+
? undefined
|
|
2656
|
+
: getTargetsBrowsers(["browserslist:defaults"], context));
|
|
2573
2657
|
const cssEnvironment = {
|
|
2574
2658
|
browsers,
|
|
2575
2659
|
vendorPrefixes:
|
|
@@ -2580,35 +2664,57 @@ const applyOptimizationDefaults = (
|
|
|
2580
2664
|
? minimizeByType.html
|
|
2581
2665
|
: undefined;
|
|
2582
2666
|
if (minifyJs) {
|
|
2583
|
-
minify.push(
|
|
2584
|
-
minimizerOptions.push(
|
|
2667
|
+
minify.push(javascriptMinify);
|
|
2668
|
+
minimizerOptions.push(javascriptOptions);
|
|
2585
2669
|
extensions.push("[cm]?js");
|
|
2586
2670
|
}
|
|
2587
2671
|
if (minifyCss) {
|
|
2588
|
-
minify.push(require("../css/cssMinify"));
|
|
2672
|
+
minify.push(require.resolve("../css/cssMinify"));
|
|
2673
|
+
// An SVG `data:` URL is minified as the `.svg` assets are, or left alone.
|
|
2589
2674
|
minimizerOptions.push({
|
|
2590
2675
|
environment: cssEnvironment,
|
|
2676
|
+
svg: minifyXml,
|
|
2591
2677
|
...cssOptions
|
|
2592
2678
|
});
|
|
2593
2679
|
extensions.push("css");
|
|
2594
2680
|
}
|
|
2595
2681
|
if (minifyHtml) {
|
|
2596
|
-
minify.push(require("../html/htmlMinify"));
|
|
2682
|
+
minify.push(require.resolve("../html/htmlMinify"));
|
|
2597
2683
|
// `minimize.css` rides under its own key rather than spread beside the
|
|
2598
2684
|
// HTML options: the two name some of the same switches, so one flat
|
|
2599
2685
|
// object would hand each language the other's answer.
|
|
2600
2686
|
minimizerOptions.push({
|
|
2601
2687
|
environment: cssEnvironment,
|
|
2602
2688
|
css: cssOptions,
|
|
2689
|
+
svg: minifyXml,
|
|
2603
2690
|
...htmlOptions
|
|
2604
2691
|
});
|
|
2605
2692
|
extensions.push("html");
|
|
2606
2693
|
}
|
|
2607
|
-
|
|
2608
|
-
|
|
2694
|
+
if (minifyJson) {
|
|
2695
|
+
minify.push(require.resolve("../json/jsonMinify"));
|
|
2696
|
+
minimizerOptions.push({});
|
|
2697
|
+
// A web app manifest is JSON under its own extension.
|
|
2698
|
+
extensions.push("json", "webmanifest");
|
|
2699
|
+
}
|
|
2700
|
+
if (minifyXml) {
|
|
2701
|
+
minify.push(require.resolve("../html/xmlMinify"));
|
|
2702
|
+
minimizerOptions.push({
|
|
2703
|
+
environment: cssEnvironment,
|
|
2704
|
+
css: cssOptions,
|
|
2705
|
+
...minimizeByType.xml
|
|
2706
|
+
});
|
|
2707
|
+
extensions.push("svg", "xml");
|
|
2708
|
+
}
|
|
2709
|
+
new MinimizerPlugin({
|
|
2710
|
+
test: assetNameTest(extensions),
|
|
2609
2711
|
minify,
|
|
2610
2712
|
minimizerOptions
|
|
2611
|
-
}).apply(
|
|
2713
|
+
}).apply(
|
|
2714
|
+
/** @type {MinimizerCompiler} */ (
|
|
2715
|
+
/** @type {Compiler | MinimizerCompiler} */ (compiler)
|
|
2716
|
+
)
|
|
2717
|
+
);
|
|
2612
2718
|
}
|
|
2613
2719
|
}
|
|
2614
2720
|
]);
|
|
@@ -2625,6 +2731,7 @@ const applyOptimizationDefaults = (
|
|
|
2625
2731
|
: [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
|
|
2626
2732
|
);
|
|
2627
2733
|
D(splitChunks, "hidePathInfo", production);
|
|
2734
|
+
D(splitChunks, "dedupDepth", futureDefaults ? 1 : 0);
|
|
2628
2735
|
D(splitChunks, "chunks", "async");
|
|
2629
2736
|
D(splitChunks, "usedExports", optimization.usedExports === true);
|
|
2630
2737
|
D(splitChunks, "minChunks", 1);
|
|
@@ -5,14 +5,14 @@
|
|
|
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<import("terser").MinifyOptions>["minimizer"] }} MinimizerOptions */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* @param {
|
|
15
|
+
* @param {NonNullable<Compiler["options"]["optimization"]["minimizer"]>[number] | Compiler["options"]["plugins"][number]} candidate a configured plugin or minimizer entry
|
|
16
16
|
* @param {string} file probe filename
|
|
17
17
|
* @returns {boolean} whether the candidate minimizes that file
|
|
18
18
|
*/
|
|
@@ -26,14 +26,12 @@ const claims = (candidate, file) => {
|
|
|
26
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` and `include` say which types it handles,
|
|
30
|
-
//
|
|
31
|
-
//
|
|
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.
|
|
32
32
|
const { test, include } = options;
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
(include !== undefined && matchObject({ include }, file))
|
|
36
|
-
);
|
|
33
|
+
if (test === undefined && include === undefined) return false;
|
|
34
|
+
return matchObject({ test, include }, file);
|
|
37
35
|
};
|
|
38
36
|
|
|
39
37
|
/**
|
|
@@ -44,12 +42,14 @@ const claims = (candidate, file) => {
|
|
|
44
42
|
* matcher rather than resolving it per emitted asset, so a minimizer restricted
|
|
45
43
|
* to some of a type's files still claims the whole type.
|
|
46
44
|
* @param {Compiler} compiler the compiler
|
|
47
|
-
* @returns {{ css: boolean, html: boolean }} types another minimizer handles
|
|
45
|
+
* @returns {{ css: boolean, html: boolean, json: boolean, xml: boolean }} types another minimizer handles
|
|
48
46
|
*/
|
|
49
47
|
module.exports = (compiler) => {
|
|
50
48
|
const { optimization, plugins } = compiler.options;
|
|
51
49
|
let css = false;
|
|
52
50
|
let html = false;
|
|
51
|
+
let json = false;
|
|
52
|
+
let xml = false;
|
|
53
53
|
// Both lists are normalized arrays with falsy entries already filtered out,
|
|
54
54
|
// and `minimizer` was filled in by the defaults before any plugin applies.
|
|
55
55
|
const minimizer =
|
|
@@ -58,7 +58,15 @@ module.exports = (compiler) => {
|
|
|
58
58
|
for (const candidate of [...minimizer, ...plugins]) {
|
|
59
59
|
if (!css) css = claims(candidate, "file.css");
|
|
60
60
|
if (!html) html = claims(candidate, "file.html");
|
|
61
|
-
|
|
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;
|
|
62
70
|
}
|
|
63
|
-
return { css, html };
|
|
71
|
+
return { css, html, json, xml };
|
|
64
72
|
};
|
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
const util = require("util");
|
|
9
9
|
const { fileUrlToPath } = require("../util/identifier");
|
|
10
|
+
const memoize = require("../util/memoize");
|
|
11
|
+
|
|
12
|
+
const getCreatePathGlobRegExp = memoize(
|
|
13
|
+
() => require("../util/globUtils").createPathGlobRegExp
|
|
14
|
+
);
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
17
|
* @import {
|
|
@@ -24,6 +29,7 @@ const { fileUrlToPath } = require("../util/identifier");
|
|
|
24
29
|
* OptimizationRuntimeChunkNormalized,
|
|
25
30
|
* OutputNormalized,
|
|
26
31
|
* PluginsNormalized,
|
|
32
|
+
* RawDevTool,
|
|
27
33
|
* WebpackOptions,
|
|
28
34
|
* WebpackOptionsNormalized
|
|
29
35
|
* } from "../../declarations/WebpackOptions"
|
|
@@ -307,6 +313,10 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
307
313
|
? config.ignoreWarnings.map((ignore) => {
|
|
308
314
|
if (typeof ignore === "function") return ignore;
|
|
309
315
|
const i = ignore instanceof RegExp ? { message: ignore } : ignore;
|
|
316
|
+
const file =
|
|
317
|
+
typeof i.file === "string"
|
|
318
|
+
? getCreatePathGlobRegExp()(i.file)
|
|
319
|
+
: i.file;
|
|
310
320
|
return (warning, { requestShortener }) => {
|
|
311
321
|
if (!i.message && !i.module && !i.file) return false;
|
|
312
322
|
if (i.message && !i.message.test(warning.message)) {
|
|
@@ -323,9 +333,9 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
323
333
|
return false;
|
|
324
334
|
}
|
|
325
335
|
if (
|
|
326
|
-
|
|
336
|
+
file &&
|
|
327
337
|
(!(/** @type {WebpackError} */ (warning).file) ||
|
|
328
|
-
!
|
|
338
|
+
!file.test(/** @type {WebpackError} */ (warning).file))
|
|
329
339
|
) {
|
|
330
340
|
return false;
|
|
331
341
|
}
|
|
@@ -344,7 +354,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
344
354
|
unsafeCache: module.unsafeCache,
|
|
345
355
|
parser: keyedNestedConfig(module.parser, cloneObject, {
|
|
346
356
|
javascript: (parserOptions) => ({
|
|
347
|
-
// TODO
|
|
357
|
+
// TODO in the next major release: remove from `ModuleOptions`, keep only `*ByModuleType`
|
|
348
358
|
unknownContextRequest: module.unknownContextRequest,
|
|
349
359
|
unknownContextRegExp: module.unknownContextRegExp,
|
|
350
360
|
unknownContextRecursive: module.unknownContextRecursive,
|
|
@@ -390,7 +400,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
390
400
|
cacheGroups: cloneObject(splitChunks.cacheGroups)
|
|
391
401
|
}
|
|
392
402
|
),
|
|
393
|
-
// TODO
|
|
403
|
+
// TODO in the next major release: normalize `minimize` to the per-asset-type object and
|
|
394
404
|
// drop `minimizeOptions` — a breaking change for what plugins read back.
|
|
395
405
|
minimize:
|
|
396
406
|
typeof optimization.minimize === "object" ? true : optimization.minimize,
|
|
@@ -475,7 +485,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
475
485
|
importFunctionName: output.importFunctionName,
|
|
476
486
|
importMetaName: output.importMetaName,
|
|
477
487
|
scriptType: output.scriptType,
|
|
478
|
-
// TODO
|
|
488
|
+
// TODO in the next major release: remove `libraryTarget`/`auxiliaryComment`/`amdContainer`/etc in favor of the `library` option
|
|
479
489
|
library: libraryBase && {
|
|
480
490
|
type:
|
|
481
491
|
output.libraryTarget !== undefined
|
|
@@ -493,6 +503,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
493
503
|
output.libraryExport !== undefined
|
|
494
504
|
? output.libraryExport
|
|
495
505
|
: libraryBase.export,
|
|
506
|
+
entryExports: libraryBase.entryExports,
|
|
496
507
|
name: libraryBase.name,
|
|
497
508
|
umdAmdContainer: libraryBase.umdAmdContainer,
|
|
498
509
|
umdNamedDefine:
|
|
@@ -745,7 +756,7 @@ const applyWebpackOptionsInterception = (options) => {
|
|
|
745
756
|
};
|
|
746
757
|
}
|
|
747
758
|
|
|
748
|
-
// TODO
|
|
759
|
+
// TODO in the next major release: remove compatibility logic and move `devtools` fully into `devtool` with multi-type support
|
|
749
760
|
let _devtool = options.devtool;
|
|
750
761
|
/** @type {WebpackOptionsNormalized["devtool"]} */
|
|
751
762
|
let cached;
|
|
@@ -756,7 +767,7 @@ const applyWebpackOptionsInterception = (options) => {
|
|
|
756
767
|
// Prefer `all`, then `javascript`, then `css`
|
|
757
768
|
const match = ["all", "javascript", "css"]
|
|
758
769
|
.map((type) =>
|
|
759
|
-
/** @type {
|
|
770
|
+
/** @type {Exclude<WebpackOptionsNormalized["devtool"], RawDevTool | undefined>} */ (
|
|
760
771
|
_devtool
|
|
761
772
|
).find((item) => item.type === type)
|
|
762
773
|
)
|
package/lib/config/target.js
CHANGED
|
@@ -12,12 +12,22 @@ const getBrowserslistTargetHandler = memoize(() =>
|
|
|
12
12
|
require("./browserslistTargetHandler")
|
|
13
13
|
);
|
|
14
14
|
|
|
15
|
+
// The half of browserslist that finds a config, the same module instance the
|
|
16
|
+
// queries use, so its caches stay shared and a request for one costs nothing
|
|
17
|
+
// twice. browserslist's own entry requires it, so it resolves wherever that does
|
|
18
|
+
const getBrowserslistConfigLoader = memoize(() => require("browserslist/node"));
|
|
19
|
+
|
|
15
20
|
/**
|
|
16
21
|
* Gets default target.
|
|
17
22
|
* @param {string} context the context directory
|
|
18
23
|
* @returns {string} default target
|
|
19
24
|
*/
|
|
20
25
|
const getDefaultTarget = (context) => {
|
|
26
|
+
// WHY: the default only turns on whether a browserslist config exists, and
|
|
27
|
+
// the config half answers that without the caniuse data the queries read —
|
|
28
|
+
// 1.3 MB that a build with no such config never uses.
|
|
29
|
+
const config = getBrowserslistConfigLoader().loadConfig({ path: context });
|
|
30
|
+
if (!config) return "web";
|
|
21
31
|
const browsers = getBrowserslistTargetHandler().load(undefined, context);
|
|
22
32
|
return browsers ? "browserslist" : "web";
|
|
23
33
|
};
|
|
@@ -110,7 +120,7 @@ const getDefaultTarget = (context) => {
|
|
|
110
120
|
*/
|
|
111
121
|
const versionDependent = (major, minor) => {
|
|
112
122
|
if (!major) {
|
|
113
|
-
return () =>
|
|
123
|
+
return () => undefined;
|
|
114
124
|
}
|
|
115
125
|
/** @type {number} */
|
|
116
126
|
const nMajor = Number(major);
|