@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.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 +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +28 -36
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +7819 -3331
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +31 -18
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +232 -68
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
package/lib/config/defaults.js
CHANGED
|
@@ -36,51 +36,57 @@ const { cleverMerge } = require("../util/cleverMerge");
|
|
|
36
36
|
const {
|
|
37
37
|
getDefaultTarget,
|
|
38
38
|
getTargetProperties,
|
|
39
|
+
getTargetsBrowsers,
|
|
39
40
|
getTargetsProperties
|
|
40
41
|
} = require("./target");
|
|
41
42
|
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
/** @
|
|
82
|
-
/**
|
|
83
|
-
|
|
43
|
+
/**
|
|
44
|
+
* @import {
|
|
45
|
+
* CacheOptionsNormalized,
|
|
46
|
+
* Context,
|
|
47
|
+
* DevTool as Devtool,
|
|
48
|
+
* CssGeneratorOptions,
|
|
49
|
+
* EntryDescription,
|
|
50
|
+
* EntryNormalized as Entry,
|
|
51
|
+
* Environment,
|
|
52
|
+
* Experiments,
|
|
53
|
+
* ExperimentsNormalized,
|
|
54
|
+
* ExternalsPresets,
|
|
55
|
+
* ExternalsType,
|
|
56
|
+
* FileCacheOptions,
|
|
57
|
+
* GeneratorOptionsByModuleTypeKnown,
|
|
58
|
+
* InfrastructureLogging,
|
|
59
|
+
* JavascriptParserOptions,
|
|
60
|
+
* JsonGeneratorOptions,
|
|
61
|
+
* Library,
|
|
62
|
+
* LibraryName,
|
|
63
|
+
* LibraryType,
|
|
64
|
+
* Loader,
|
|
65
|
+
* Mode,
|
|
66
|
+
* HashFunction,
|
|
67
|
+
* HashSalt,
|
|
68
|
+
* ModuleOptionsNormalized as ModuleOptions,
|
|
69
|
+
* Node as WebpackNode,
|
|
70
|
+
* OptimizationMinimizeOptions,
|
|
71
|
+
* OptimizationNormalized as Optimization,
|
|
72
|
+
* OptimizationSplitChunksOptions,
|
|
73
|
+
* OutputNormalized as Output,
|
|
74
|
+
* ParserOptionsByModuleTypeKnown,
|
|
75
|
+
* Performance,
|
|
76
|
+
* ResolveOptions,
|
|
77
|
+
* RuleSetRules,
|
|
78
|
+
* SnapshotOptions,
|
|
79
|
+
* WebpackOptionsNormalized
|
|
80
|
+
* } from "../../declarations/WebpackOptions"
|
|
81
|
+
*/
|
|
82
|
+
/** @import Module from "../Module" */
|
|
83
|
+
/**
|
|
84
|
+
* @import {
|
|
85
|
+
* ChunkLoadingTypes
|
|
86
|
+
* } from "../javascript/EnableChunkLoadingPlugin"
|
|
87
|
+
*/
|
|
88
|
+
/** @import { WasmLoadingTypes } from "../wasm/EnableWasmLoadingPlugin" */
|
|
89
|
+
/** @import { PlatformTargetProperties, TargetProperties } from "./target" */
|
|
84
90
|
|
|
85
91
|
/**
|
|
86
92
|
* Defines the recursive non nullable type used by this module.
|
|
@@ -361,30 +367,6 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
361
367
|
rules: options.module.rules
|
|
362
368
|
});
|
|
363
369
|
|
|
364
|
-
// After experiments are resolved: the default dev source map depends on the
|
|
365
|
-
// (possibly "auto"-resolved) `experiments.css` value.
|
|
366
|
-
F(
|
|
367
|
-
options,
|
|
368
|
-
"devtool",
|
|
369
|
-
() =>
|
|
370
|
-
/** @type {Devtool} */ (
|
|
371
|
-
development
|
|
372
|
-
? [
|
|
373
|
-
options.experiments.css
|
|
374
|
-
? {
|
|
375
|
-
type: "css",
|
|
376
|
-
use: "source-map"
|
|
377
|
-
}
|
|
378
|
-
: undefined,
|
|
379
|
-
{
|
|
380
|
-
type: "javascript",
|
|
381
|
-
use: "eval"
|
|
382
|
-
}
|
|
383
|
-
].filter(Boolean)
|
|
384
|
-
: false
|
|
385
|
-
)
|
|
386
|
-
);
|
|
387
|
-
|
|
388
370
|
const futureDefaults =
|
|
389
371
|
/** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
|
|
390
372
|
(options.experiments.futureDefaults);
|
|
@@ -436,6 +418,36 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
436
418
|
(options.experiments.asyncWebAssembly)
|
|
437
419
|
});
|
|
438
420
|
|
|
421
|
+
// Placed after `applyOutputDefaults`, which settles `enabledLibraryTypes`. A library
|
|
422
|
+
// is read by another bundler, where an eval wrapper hides `import.meta` from it.
|
|
423
|
+
const noDevSourceMap = /** @type {LibraryType[]} */ (
|
|
424
|
+
options.output.enabledLibraryTypes
|
|
425
|
+
).some(
|
|
426
|
+
(type) => futureDefaults || type === "module" || type === "modern-module"
|
|
427
|
+
);
|
|
428
|
+
|
|
429
|
+
F(
|
|
430
|
+
options,
|
|
431
|
+
"devtool",
|
|
432
|
+
() =>
|
|
433
|
+
/** @type {Devtool} */ (
|
|
434
|
+
development && !noDevSourceMap
|
|
435
|
+
? [
|
|
436
|
+
options.experiments.css
|
|
437
|
+
? {
|
|
438
|
+
type: "css",
|
|
439
|
+
use: "source-map"
|
|
440
|
+
}
|
|
441
|
+
: undefined,
|
|
442
|
+
{
|
|
443
|
+
type: "javascript",
|
|
444
|
+
use: "eval"
|
|
445
|
+
}
|
|
446
|
+
].filter(Boolean)
|
|
447
|
+
: false
|
|
448
|
+
)
|
|
449
|
+
);
|
|
450
|
+
|
|
439
451
|
applyModuleDefaults(options.module, {
|
|
440
452
|
cache,
|
|
441
453
|
hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
|
|
@@ -511,7 +523,13 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
511
523
|
/** @type {NonNullable<WebpackOptionsNormalized["loader"]>} */ (
|
|
512
524
|
options.loader
|
|
513
525
|
),
|
|
514
|
-
{
|
|
526
|
+
{
|
|
527
|
+
targetProperties,
|
|
528
|
+
environment: options.output.environment,
|
|
529
|
+
outputModule:
|
|
530
|
+
/** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
|
|
531
|
+
(options.output.module)
|
|
532
|
+
}
|
|
515
533
|
);
|
|
516
534
|
|
|
517
535
|
F(options, "externalsType", () => {
|
|
@@ -628,11 +646,15 @@ const applyExperimentsDefaults = (
|
|
|
628
646
|
"asyncWebAssembly",
|
|
629
647
|
experiments.futureDefaults ? true : "auto"
|
|
630
648
|
);
|
|
631
|
-
// the universal target (web + node, neither specific) only works as ESM
|
|
649
|
+
// the universal target (web + node, neither specific) only works as ESM —
|
|
650
|
+
// unless the target cannot read one, which no output format can repair, so
|
|
651
|
+
// leave `output.chunkFormat` to say so rather than emitting a module the
|
|
652
|
+
// target has already reported it will not load
|
|
632
653
|
const universal =
|
|
633
654
|
Boolean(targetProperties) &&
|
|
634
655
|
/** @type {TargetProperties} */ (targetProperties).node === null &&
|
|
635
|
-
/** @type {TargetProperties} */ (targetProperties).web === null
|
|
656
|
+
/** @type {TargetProperties} */ (targetProperties).web === null &&
|
|
657
|
+
/** @type {TargetProperties} */ (targetProperties).module !== false;
|
|
636
658
|
// the deno and bun targets only emit ECMAScript modules
|
|
637
659
|
const deno =
|
|
638
660
|
Boolean(targetProperties) &&
|
|
@@ -1683,6 +1705,9 @@ const applyOutputDefaults = (
|
|
|
1683
1705
|
"const",
|
|
1684
1706
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
1685
1707
|
);
|
|
1708
|
+
// Only the browserslist target reports these; everywhere else they stay
|
|
1709
|
+
// unset, which `optimistic` reads as the modern spelling being available —
|
|
1710
|
+
// the same policy the JS features above follow.
|
|
1686
1711
|
// `let` was added after `const`; targets predating it report only `const`,
|
|
1687
1712
|
// so fall back to `const` when `let` is unreported (undefined). Targets that
|
|
1688
1713
|
// do report `let` (browserslist, built-ins) keep their own accurate value.
|
|
@@ -1727,6 +1752,14 @@ const applyOutputDefaults = (
|
|
|
1727
1752
|
"forOf",
|
|
1728
1753
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.forOf))
|
|
1729
1754
|
);
|
|
1755
|
+
// Stage 3 syntax, so these are the one pair read pessimistically: a preset that
|
|
1756
|
+
// says nothing means unavailable, and the phase keeps webpack's own form.
|
|
1757
|
+
F(environment, "deferImport", () =>
|
|
1758
|
+
Boolean(tp && /** @type {boolean | undefined} */ (tp.deferImport))
|
|
1759
|
+
);
|
|
1760
|
+
F(environment, "sourceImport", () =>
|
|
1761
|
+
Boolean(tp && /** @type {boolean | undefined} */ (tp.sourceImport))
|
|
1762
|
+
);
|
|
1730
1763
|
F(
|
|
1731
1764
|
environment,
|
|
1732
1765
|
"destructuring",
|
|
@@ -1811,6 +1844,7 @@ const applyOutputDefaults = (
|
|
|
1811
1844
|
output.resourceHints = {};
|
|
1812
1845
|
}
|
|
1813
1846
|
if (output.resourceHints) {
|
|
1847
|
+
D(output.resourceHints, "dedupe", false);
|
|
1814
1848
|
if (output.module) D(output.resourceHints, "initial", true);
|
|
1815
1849
|
// `modulePreloadPolyfill` defaults from the target's modulepreload
|
|
1816
1850
|
// support: inject the polyfill iff the environment lacks it.
|
|
@@ -1912,10 +1946,15 @@ const applyOutputDefaults = (
|
|
|
1912
1946
|
if (tp) {
|
|
1913
1947
|
if (tp.global) return "global";
|
|
1914
1948
|
if (tp.globalThis) return "globalThis";
|
|
1915
|
-
// Universal target (web + node)
|
|
1916
|
-
//
|
|
1917
|
-
|
|
1918
|
-
|
|
1949
|
+
// Universal target (web + node): no one identifier is defined on both
|
|
1950
|
+
// sides, so `globalThis` where the target reports nothing against it,
|
|
1951
|
+
// and a guarded pair where it does — `self` covers window and worker
|
|
1952
|
+
// scopes, `global` covers Node.js. Naming either alone leaves the other
|
|
1953
|
+
// platform reading an undeclared binding.
|
|
1954
|
+
if (tp.web === null && tp.node === null) {
|
|
1955
|
+
return tp.globalThis === undefined
|
|
1956
|
+
? "globalThis"
|
|
1957
|
+
: 'typeof self !== "undefined" ? self : global';
|
|
1919
1958
|
}
|
|
1920
1959
|
}
|
|
1921
1960
|
return "self";
|
|
@@ -2048,7 +2087,9 @@ const applyOutputDefaults = (
|
|
|
2048
2087
|
"hotUpdateMainFilename",
|
|
2049
2088
|
// Only `chunkLoading: "import"` loads the manifest via `import()` (needs an
|
|
2050
2089
|
// `export default` ES module); every other loader fetches it as raw JSON.
|
|
2051
|
-
`[runtime].[fullhash].hot-update.${
|
|
2090
|
+
`[runtime].[fullhash].hot-update.${
|
|
2091
|
+
output.chunkLoading === "import" ? "json.mjs" : "json"
|
|
2092
|
+
}`
|
|
2052
2093
|
);
|
|
2053
2094
|
D(output, "crossOriginLoading", false);
|
|
2054
2095
|
F(output, "scriptType", () => (output.module ? "module" : false));
|
|
@@ -2189,6 +2230,8 @@ const applyExternalsPresetsDefaults = (
|
|
|
2189
2230
|
isUniversal("node"))
|
|
2190
2231
|
)
|
|
2191
2232
|
);
|
|
2233
|
+
// Opt-in only: never auto-externalize installed packages, it would change existing builds.
|
|
2234
|
+
D(externalsPresets, "nodeModules", false);
|
|
2192
2235
|
D(
|
|
2193
2236
|
externalsPresets,
|
|
2194
2237
|
"deno",
|
|
@@ -2251,9 +2294,13 @@ const applyExternalsPresetsDefaults = (
|
|
|
2251
2294
|
* @param {object} options options
|
|
2252
2295
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
2253
2296
|
* @param {Environment} options.environment environment
|
|
2297
|
+
* @param {boolean} options.outputModule is output type is module
|
|
2254
2298
|
* @returns {void}
|
|
2255
2299
|
*/
|
|
2256
|
-
const applyLoaderDefaults = (
|
|
2300
|
+
const applyLoaderDefaults = (
|
|
2301
|
+
loader,
|
|
2302
|
+
{ targetProperties, environment, outputModule }
|
|
2303
|
+
) => {
|
|
2257
2304
|
F(loader, "target", () => {
|
|
2258
2305
|
if (targetProperties) {
|
|
2259
2306
|
if (targetProperties.electron) {
|
|
@@ -2267,6 +2314,15 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
|
|
|
2267
2314
|
if (targetProperties.bun) return "bun";
|
|
2268
2315
|
if (targetProperties.node) return "node";
|
|
2269
2316
|
if (targetProperties.web) return "web";
|
|
2317
|
+
// no single platform to report: the bundle runs on both (target
|
|
2318
|
+
// `"universal"` / `["web", "node"]`), so loaders get `"universal"`
|
|
2319
|
+
if (
|
|
2320
|
+
outputModule &&
|
|
2321
|
+
targetProperties.node === null &&
|
|
2322
|
+
targetProperties.web === null
|
|
2323
|
+
) {
|
|
2324
|
+
return "universal";
|
|
2325
|
+
}
|
|
2270
2326
|
}
|
|
2271
2327
|
});
|
|
2272
2328
|
D(loader, "environment", environment);
|
|
@@ -2329,6 +2385,39 @@ const applyPerformanceDefaults = (performance, { production }) => {
|
|
|
2329
2385
|
if (performance === false) return;
|
|
2330
2386
|
D(performance, "maxAssetSize", 250000);
|
|
2331
2387
|
D(performance, "maxEntrypointSize", 250000);
|
|
2388
|
+
// Stands in for every check left unset, so an explicit one still wins.
|
|
2389
|
+
const all = performance.all !== undefined ? performance.all : false;
|
|
2390
|
+
|
|
2391
|
+
D(performance, "asyncChunkWaterfalls", all);
|
|
2392
|
+
D(performance, "broadContexts", all);
|
|
2393
|
+
D(performance, "cacheEffectiveness", all);
|
|
2394
|
+
D(performance, "circularDependencies", all);
|
|
2395
|
+
D(performance, "conflictingResourceHints", all);
|
|
2396
|
+
D(performance, "duplicateModules", all);
|
|
2397
|
+
D(performance, "duplicatePackages", all);
|
|
2398
|
+
D(performance, "dynamicExports", all);
|
|
2399
|
+
D(performance, "entrypointOverlap", all);
|
|
2400
|
+
D(performance, "embeddedSourceMaps", all);
|
|
2401
|
+
D(performance, "evalUsage", all);
|
|
2402
|
+
D(performance, "hotspots", all);
|
|
2403
|
+
D(performance, "legacyJavascript", all);
|
|
2404
|
+
D(performance, "largeModules", all);
|
|
2405
|
+
D(performance, "inlinedAssets", all);
|
|
2406
|
+
D(performance, "mixedExports", all);
|
|
2407
|
+
D(performance, "missingSideEffects", all);
|
|
2408
|
+
D(performance, "osDependentRules", all);
|
|
2409
|
+
D(performance, "pureAnnotations", all);
|
|
2410
|
+
D(performance, "redundantDynamicImports", all);
|
|
2411
|
+
D(performance, "scopeHoistingBailouts", all);
|
|
2412
|
+
D(performance, "splitChunksCapped", all);
|
|
2413
|
+
D(performance, "tinyChunks", all);
|
|
2414
|
+
D(performance, "topLevelThis", all);
|
|
2415
|
+
D(performance, "unsplitVendors", all);
|
|
2416
|
+
D(performance, "unusedAliases", all);
|
|
2417
|
+
D(performance, "unusedDefines", all);
|
|
2418
|
+
D(performance, "unusedExternals", all);
|
|
2419
|
+
D(performance, "unusedReexports", all);
|
|
2420
|
+
D(performance, "unusedRules", all);
|
|
2332
2421
|
F(performance, "hints", () => (production ? "warning" : false));
|
|
2333
2422
|
};
|
|
2334
2423
|
|
|
@@ -2374,19 +2463,131 @@ const applyOptimizationDefaults = (
|
|
|
2374
2463
|
D(optimization, "mangleWasmImports", false);
|
|
2375
2464
|
D(optimization, "portableRecords", records);
|
|
2376
2465
|
D(optimization, "realContentHash", production);
|
|
2377
|
-
|
|
2466
|
+
F(optimization, "minimize", () => (production ? {} : false));
|
|
2467
|
+
// A plugin can assign the `true` shorthand in `apply()`, which runs after
|
|
2468
|
+
// `getNormalizedOptimizationMinimize` and so never gets normalized. The
|
|
2469
|
+
// normalized type does not allow it, hence the cast.
|
|
2470
|
+
if (/** @type {unknown} */ (optimization.minimize) === true) {
|
|
2471
|
+
optimization.minimize = {};
|
|
2472
|
+
}
|
|
2473
|
+
const { minimize } = optimization;
|
|
2474
|
+
if (minimize) {
|
|
2475
|
+
// Canonicalize the object form: the JS minimizer's defaults become
|
|
2476
|
+
// visible in the resolved config rather than hidden in the wiring.
|
|
2477
|
+
F(minimize, "javascript", () => ({ compress: { passes: 2 } }));
|
|
2478
|
+
F(minimize, "css", () => ({}));
|
|
2479
|
+
F(minimize, "html", () => ({}));
|
|
2480
|
+
}
|
|
2378
2481
|
A(optimization, "minimizer", () => [
|
|
2379
2482
|
{
|
|
2380
2483
|
apply: (compiler) => {
|
|
2381
2484
|
// Lazy load the minimizer plugin
|
|
2382
2485
|
const TerserPlugin = require("minimizer-webpack-plugin");
|
|
2383
2486
|
|
|
2487
|
+
// One minimizer instance (one worker-thread pool) handles JS and, when
|
|
2488
|
+
// native CSS / HTML is enabled, those assets too — an array of minify
|
|
2489
|
+
// functions each dispatched by its own `filter` (terser -> JS,
|
|
2490
|
+
// cssMinify -> CSS, htmlMinify -> HTML). The CSS / HTML serializers stay
|
|
2491
|
+
// worker-safe by resolving their parser with `require("webpack/…")` in
|
|
2492
|
+
// the worker, so all three share the same pool. `test` is widened to let
|
|
2493
|
+
// CSS / HTML assets reach the dispatcher.
|
|
2494
|
+
// Step aside for a minimizer the user already configured for these
|
|
2495
|
+
// types: whichever of the two ran first would mark the asset
|
|
2496
|
+
// `minimized` and silently disable the other, so webpack only claims
|
|
2497
|
+
// what nothing else does. Their asset matchers are read directly rather
|
|
2498
|
+
// than resolved per asset — a coarse check, but it keeps the outcome
|
|
2499
|
+
// independent of tap order and of the plugin version in use.
|
|
2500
|
+
const claimedByOtherMinimizer = require("./getClaimedAssetTypes")(
|
|
2501
|
+
compiler
|
|
2502
|
+
);
|
|
2503
|
+
|
|
2504
|
+
// Normalized + defaulted `optimization.minimize` is the per-asset-type
|
|
2505
|
+
// object here: `false` disables a type, an object is its options.
|
|
2506
|
+
const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
|
|
2507
|
+
compiler.options.optimization.minimize
|
|
2508
|
+
);
|
|
2509
|
+
const terserOptions = minimizeByType.javascript || {
|
|
2510
|
+
compress: { passes: 2 }
|
|
2511
|
+
};
|
|
2512
|
+
|
|
2513
|
+
const { css, html } = compiler.options.experiments;
|
|
2514
|
+
const minifyJs = minimizeByType.javascript !== false;
|
|
2515
|
+
const minifyCss =
|
|
2516
|
+
Boolean(css) &&
|
|
2517
|
+
!claimedByOtherMinimizer.css &&
|
|
2518
|
+
minimizeByType.css !== false;
|
|
2519
|
+
const minifyHtml =
|
|
2520
|
+
Boolean(html) &&
|
|
2521
|
+
!claimedByOtherMinimizer.html &&
|
|
2522
|
+
minimizeByType.html !== false;
|
|
2523
|
+
if (!minifyJs && !minifyCss && !minifyHtml) return;
|
|
2524
|
+
if (minifyJs && !minifyCss && !minifyHtml) {
|
|
2525
|
+
new TerserPlugin({ terserOptions }).apply(
|
|
2526
|
+
/** @type {EXPECTED_ANY} */ (compiler)
|
|
2527
|
+
);
|
|
2528
|
+
return;
|
|
2529
|
+
}
|
|
2530
|
+
/** @type {(typeof TerserPlugin.terserMinify | typeof import("../css/cssMinify") | typeof import("../html/htmlMinify"))[]} */
|
|
2531
|
+
const minify = [];
|
|
2532
|
+
/** @type {EXPECTED_OBJECT[]} */
|
|
2533
|
+
const minimizerOptions = [];
|
|
2534
|
+
/** @type {string[]} */
|
|
2535
|
+
const extensions = [];
|
|
2536
|
+
// `minimize.css` follows the CSS minifier wherever it runs: the HTML
|
|
2537
|
+
// entry gets the same options, like the shared environment below.
|
|
2538
|
+
const cssOptions =
|
|
2539
|
+
typeof minimizeByType.css === "object"
|
|
2540
|
+
? minimizeByType.css
|
|
2541
|
+
: undefined;
|
|
2542
|
+
// The browserslist selection, when the target is one. It decides both the
|
|
2543
|
+
// prefixes and every spelling a target can read, so `vendorPrefixes`
|
|
2544
|
+
// turns off the first alone — resolving it is what the second needs.
|
|
2545
|
+
const { target } = compiler.options;
|
|
2546
|
+
const browsers = target
|
|
2547
|
+
? getTargetsBrowsers(
|
|
2548
|
+
Array.isArray(target) ? target : [target],
|
|
2549
|
+
/** @type {Context} */ (compiler.options.context)
|
|
2550
|
+
)
|
|
2551
|
+
: undefined;
|
|
2552
|
+
const cssEnvironment = {
|
|
2553
|
+
browsers,
|
|
2554
|
+
vendorPrefixes:
|
|
2555
|
+
cssOptions === undefined || cssOptions.vendorPrefixes !== false
|
|
2556
|
+
};
|
|
2557
|
+
const htmlOptions =
|
|
2558
|
+
typeof minimizeByType.html === "object"
|
|
2559
|
+
? minimizeByType.html
|
|
2560
|
+
: undefined;
|
|
2561
|
+
if (minifyJs) {
|
|
2562
|
+
minify.push(TerserPlugin.terserMinify);
|
|
2563
|
+
minimizerOptions.push(terserOptions);
|
|
2564
|
+
extensions.push("[cm]?js");
|
|
2565
|
+
}
|
|
2566
|
+
if (minifyCss) {
|
|
2567
|
+
minify.push(require("../css/cssMinify"));
|
|
2568
|
+
minimizerOptions.push({
|
|
2569
|
+
environment: cssEnvironment,
|
|
2570
|
+
...cssOptions
|
|
2571
|
+
});
|
|
2572
|
+
extensions.push("css");
|
|
2573
|
+
}
|
|
2574
|
+
if (minifyHtml) {
|
|
2575
|
+
minify.push(require("../html/htmlMinify"));
|
|
2576
|
+
// `minimize.css` rides along under its own key rather than spread
|
|
2577
|
+
// beside the HTML options: the two name some of the same switches
|
|
2578
|
+
// (`quotes`, `comments`), and one flat object would hand
|
|
2579
|
+
// each language the other's answer.
|
|
2580
|
+
minimizerOptions.push({
|
|
2581
|
+
environment: cssEnvironment,
|
|
2582
|
+
css: cssOptions,
|
|
2583
|
+
...htmlOptions
|
|
2584
|
+
});
|
|
2585
|
+
extensions.push("html");
|
|
2586
|
+
}
|
|
2384
2587
|
new TerserPlugin({
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
}
|
|
2389
|
-
}
|
|
2588
|
+
test: new RegExp(`\\.(?:${extensions.join("|")})(\\?.*)?$`, "i"),
|
|
2589
|
+
minify,
|
|
2590
|
+
minimizerOptions
|
|
2390
2591
|
}).apply(/** @type {EXPECTED_ANY} */ (compiler));
|
|
2391
2592
|
}
|
|
2392
2593
|
}
|
|
@@ -5,8 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @import {
|
|
10
|
+
* WebpackOptions as Configuration
|
|
11
|
+
* } from "../../declarations/WebpackOptions"
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* @import {
|
|
15
|
+
* MultiWebpackOptions as MultiConfiguration
|
|
16
|
+
* } from "../MultiCompiler"
|
|
17
|
+
*/
|
|
10
18
|
|
|
11
19
|
/**
|
|
12
20
|
* @template T
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q @sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { matchObject } = require("../ModuleFilenameHelpers");
|
|
9
|
+
|
|
10
|
+
/** @import Compiler from "../Compiler" */
|
|
11
|
+
/** @import { MatchObject } from "../ModuleFilenameHelpers" */
|
|
12
|
+
/** @typedef {MatchObject & { minimizer?: EXPECTED_OBJECT }} MinimizerOptions */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @param {unknown} candidate a configured plugin or minimizer entry
|
|
16
|
+
* @param {string} file probe filename
|
|
17
|
+
* @returns {boolean} whether the candidate minimizes that file
|
|
18
|
+
*/
|
|
19
|
+
const claims = (candidate, file) => {
|
|
20
|
+
// Every minimizer in the `minimizer-webpack-plugin` family (itself,
|
|
21
|
+
// `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, …) keeps
|
|
22
|
+
// the minify implementation on `options.minimizer` and its asset matcher
|
|
23
|
+
// alongside it in the shape `matchObject` reads. The matcher alone is not
|
|
24
|
+
// enough to recognize one: `BannerPlugin` and `SourceMapDevToolPlugin` carry
|
|
25
|
+
// the same three keys, and `LoaderOptionsPlugin` defaults `test` to match
|
|
26
|
+
// every file — reading those as minimizers would disable minification.
|
|
27
|
+
const { options } = /** @type {{ options?: MinimizerOptions }} */ (candidate);
|
|
28
|
+
if (!options || !options.minimizer) return false;
|
|
29
|
+
// `test`/`include` say which types it handles, `exclude` only narrows the
|
|
30
|
+
// files within them — honouring that narrowing would make a minimizer scoped
|
|
31
|
+
// to a subdirectory claim nothing, and webpack would then race it on the very
|
|
32
|
+
// files it was configured for.
|
|
33
|
+
const { test, include } = options;
|
|
34
|
+
return (
|
|
35
|
+
(test !== undefined && matchObject({ test }, file)) ||
|
|
36
|
+
(include !== undefined && matchObject({ include }, file))
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Which asset types the user's own configuration already minimizes, so webpack's
|
|
42
|
+
* default minimizer can leave those alone instead of racing the user's plugin
|
|
43
|
+
* for them (the loser is skipped via `minimized` asset info, so without this
|
|
44
|
+
* whichever tapped first would win). Deliberately coarse: it reads a plugin's
|
|
45
|
+
* matcher rather than resolving it per emitted asset, so a minimizer restricted
|
|
46
|
+
* to some of a type's files still claims the whole type.
|
|
47
|
+
* @param {Compiler} compiler the compiler
|
|
48
|
+
* @returns {{ css: boolean, html: boolean }} types another minimizer handles
|
|
49
|
+
*/
|
|
50
|
+
module.exports = (compiler) => {
|
|
51
|
+
const { optimization, plugins } = compiler.options;
|
|
52
|
+
let css = false;
|
|
53
|
+
let html = false;
|
|
54
|
+
// Both lists are normalized arrays with falsy entries already filtered out,
|
|
55
|
+
// and `minimizer` was filled in by the defaults before any plugin applies.
|
|
56
|
+
const minimizer =
|
|
57
|
+
/** @type {NonNullable<typeof optimization.minimizer>} */
|
|
58
|
+
(optimization.minimizer);
|
|
59
|
+
for (const candidate of [...minimizer, ...plugins]) {
|
|
60
|
+
if (!css) css = claims(candidate, "file.css");
|
|
61
|
+
if (!html) html = claims(candidate, "file.html");
|
|
62
|
+
if (css && html) break;
|
|
63
|
+
}
|
|
64
|
+
return { css, html };
|
|
65
|
+
};
|
|
@@ -7,22 +7,27 @@
|
|
|
7
7
|
|
|
8
8
|
const util = require("util");
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @import {
|
|
12
|
+
* CacheOptionsNormalized as CacheOptions,
|
|
13
|
+
* EntryDescriptionNormalized,
|
|
14
|
+
* EntryStatic,
|
|
15
|
+
* EntryStaticNormalized,
|
|
16
|
+
* Externals,
|
|
17
|
+
* LibraryName,
|
|
18
|
+
* LibraryOptions,
|
|
19
|
+
* ModuleOptionsNormalized,
|
|
20
|
+
* Optimization,
|
|
21
|
+
* OptimizationNormalized,
|
|
22
|
+
* OptimizationRuntimeChunk,
|
|
23
|
+
* OptimizationRuntimeChunkNormalized,
|
|
24
|
+
* OutputNormalized,
|
|
25
|
+
* PluginsNormalized,
|
|
26
|
+
* WebpackOptions,
|
|
27
|
+
* WebpackOptionsNormalized
|
|
28
|
+
* } from "../../declarations/WebpackOptions"
|
|
29
|
+
*/
|
|
30
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
26
31
|
|
|
27
32
|
/**
|
|
28
33
|
* Defines the webpack options interception type used by this module.
|
|
@@ -326,6 +331,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
326
331
|
cacheGroups: cloneObject(splitChunks.cacheGroups)
|
|
327
332
|
}
|
|
328
333
|
),
|
|
334
|
+
minimize: getNormalizedOptimizationMinimize(optimization.minimize),
|
|
329
335
|
minimizer:
|
|
330
336
|
optimization.minimizer !== undefined
|
|
331
337
|
? /** @type {OptimizationNormalized["minimizer"]} */ (
|
|
@@ -419,6 +425,7 @@ const getNormalizedWebpackOptions = (config) => ({
|
|
|
419
425
|
? output.libraryExport
|
|
420
426
|
: libraryBase.export,
|
|
421
427
|
name: libraryBase.name,
|
|
428
|
+
umdAmdContainer: libraryBase.umdAmdContainer,
|
|
422
429
|
umdNamedDefine:
|
|
423
430
|
output.umdNamedDefine !== undefined
|
|
424
431
|
? output.umdNamedDefine
|
|
@@ -604,6 +611,19 @@ const getNormalizedEntryStatic = (entry) => {
|
|
|
604
611
|
return result;
|
|
605
612
|
};
|
|
606
613
|
|
|
614
|
+
/**
|
|
615
|
+
* Gets normalized optimization minimize: the `true` shorthand becomes an empty
|
|
616
|
+
* per-asset-type object, so downstream only sees `false` or the object form.
|
|
617
|
+
* @param {Optimization["minimize"]} minimize minimize option
|
|
618
|
+
* @returns {OptimizationNormalized["minimize"]} normalized minimize option
|
|
619
|
+
*/
|
|
620
|
+
const getNormalizedOptimizationMinimize = (minimize) => {
|
|
621
|
+
if (minimize === undefined) return;
|
|
622
|
+
if (minimize === false) return false;
|
|
623
|
+
if (minimize === true) return {};
|
|
624
|
+
return cloneObject(minimize);
|
|
625
|
+
};
|
|
626
|
+
|
|
607
627
|
/**
|
|
608
628
|
* Gets normalized optimization runtime chunk.
|
|
609
629
|
* @param {OptimizationRuntimeChunk=} runtimeChunk runtimeChunk option
|