@depup/webpack 5.106.0-depup.0 → 5.109.0-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 +9 -11
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +498 -127
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +15 -0
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +104 -26
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +29 -3
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +43 -7
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +591 -41
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +12 -26
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +682 -368
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +25 -2
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +54 -6
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +663 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +97 -6
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1117 -79
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +8608 -1159
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
package/lib/config/defaults.js
CHANGED
|
@@ -22,6 +22,7 @@ const {
|
|
|
22
22
|
CSS_MODULE_TYPE_AUTO,
|
|
23
23
|
CSS_MODULE_TYPE_GLOBAL,
|
|
24
24
|
CSS_MODULE_TYPE_MODULE,
|
|
25
|
+
HTML_MODULE_TYPE,
|
|
25
26
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
26
27
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
27
28
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
@@ -30,6 +31,7 @@ const {
|
|
|
30
31
|
WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
31
32
|
} = require("../ModuleTypeConstants");
|
|
32
33
|
const Template = require("../Template");
|
|
34
|
+
const RuleSetCompiler = require("../rules/RuleSetCompiler");
|
|
33
35
|
const { cleverMerge } = require("../util/cleverMerge");
|
|
34
36
|
const {
|
|
35
37
|
getDefaultTarget,
|
|
@@ -70,6 +72,7 @@ const {
|
|
|
70
72
|
/** @typedef {import("../../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
|
|
71
73
|
/** @typedef {import("../../declarations/WebpackOptions").Performance} Performance */
|
|
72
74
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
75
|
+
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
|
|
73
76
|
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRules} RuleSetRules */
|
|
74
77
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
|
75
78
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
|
@@ -80,11 +83,13 @@ const {
|
|
|
80
83
|
/** @typedef {import("./target").TargetProperties} TargetProperties */
|
|
81
84
|
|
|
82
85
|
/**
|
|
86
|
+
* Defines the recursive non nullable type used by this module.
|
|
83
87
|
* @template T
|
|
84
88
|
* @typedef {{ [P in keyof T]-?: T[P] extends object ? RecursiveNonNullable<NonNullable<T[P]>> : NonNullable<T[P]> }} RecursiveNonNullable
|
|
85
89
|
*/
|
|
86
90
|
|
|
87
91
|
/**
|
|
92
|
+
* Defines the shared type used by this module.
|
|
88
93
|
* @typedef {Output & {
|
|
89
94
|
* uniqueName: NonNullable<Output["uniqueName"]>,
|
|
90
95
|
* filename: NonNullable<Output["filename"]>,
|
|
@@ -100,6 +105,7 @@ const {
|
|
|
100
105
|
* devtoolNamespace: NonNullable<Output["devtoolNamespace"]>,
|
|
101
106
|
* publicPath: NonNullable<Output["publicPath"]>,
|
|
102
107
|
* workerPublicPath: NonNullable<Output["workerPublicPath"]>,
|
|
108
|
+
* workerChunkFilename: NonNullable<Output["workerChunkFilename"]>,
|
|
103
109
|
* workerWasmLoading: NonNullable<Output["workerWasmLoading"]>,
|
|
104
110
|
* workerChunkLoading: NonNullable<Output["workerChunkLoading"]>,
|
|
105
111
|
* chunkFormat: NonNullable<Output["chunkFormat"]>,
|
|
@@ -120,6 +126,7 @@ const {
|
|
|
120
126
|
* compareBeforeEmit: NonNullable<Output["compareBeforeEmit"]>,
|
|
121
127
|
* strictModuleErrorHandling: NonNullable<Output["strictModuleErrorHandling"]>,
|
|
122
128
|
* strictModuleExceptionHandling: NonNullable<Output["strictModuleExceptionHandling"]>,
|
|
129
|
+
* strictModuleResolution: NonNullable<Output["strictModuleResolution"]>,
|
|
123
130
|
* importFunctionName: NonNullable<Output["importFunctionName"]>,
|
|
124
131
|
* importMetaName: NonNullable<Output["importMetaName"]>,
|
|
125
132
|
* environment: RecursiveNonNullable<Output["environment"]>,
|
|
@@ -129,6 +136,7 @@ const {
|
|
|
129
136
|
*/
|
|
130
137
|
|
|
131
138
|
/**
|
|
139
|
+
* Defines the shared type used by this module.
|
|
132
140
|
* @typedef {SnapshotOptions & {
|
|
133
141
|
* managedPaths: NonNullable<SnapshotOptions["managedPaths"]>,
|
|
134
142
|
* unmanagedPaths: NonNullable<SnapshotOptions["unmanagedPaths"]>,
|
|
@@ -141,6 +149,7 @@ const {
|
|
|
141
149
|
*/
|
|
142
150
|
|
|
143
151
|
/**
|
|
152
|
+
* Defines the shared type used by this module.
|
|
144
153
|
* @typedef {Optimization & {
|
|
145
154
|
* runtimeChunk: NonNullable<Optimization["runtimeChunk"]>,
|
|
146
155
|
* splitChunks: NonNullable<Optimization["splitChunks"]>,
|
|
@@ -155,6 +164,7 @@ const {
|
|
|
155
164
|
* usedExports: NonNullable<Optimization["usedExports"]>,
|
|
156
165
|
* mangleExports: NonNullable<Optimization["mangleExports"]>,
|
|
157
166
|
* innerGraph: NonNullable<Optimization["innerGraph"]>,
|
|
167
|
+
* inlineExports: NonNullable<Optimization["inlineExports"]>,
|
|
158
168
|
* concatenateModules: NonNullable<Optimization["concatenateModules"]>,
|
|
159
169
|
* avoidEntryIife: NonNullable<Optimization["avoidEntryIife"]>,
|
|
160
170
|
* emitOnErrors: NonNullable<Optimization["emitOnErrors"]>,
|
|
@@ -169,6 +179,7 @@ const {
|
|
|
169
179
|
*/
|
|
170
180
|
|
|
171
181
|
/**
|
|
182
|
+
* Defines the shared type used by this module.
|
|
172
183
|
* @typedef {ExternalsPresets & {
|
|
173
184
|
* web: NonNullable<ExternalsPresets["web"]>,
|
|
174
185
|
* node: NonNullable<ExternalsPresets["node"]>,
|
|
@@ -181,6 +192,7 @@ const {
|
|
|
181
192
|
*/
|
|
182
193
|
|
|
183
194
|
/**
|
|
195
|
+
* Defines the shared type used by this module.
|
|
184
196
|
* @typedef {InfrastructureLogging & {
|
|
185
197
|
* stream: NonNullable<InfrastructureLogging["stream"]>,
|
|
186
198
|
* level: NonNullable<InfrastructureLogging["level"]>,
|
|
@@ -191,14 +203,17 @@ const {
|
|
|
191
203
|
*/
|
|
192
204
|
|
|
193
205
|
/**
|
|
206
|
+
* Defines the webpack options normalized with base defaults type used by this module.
|
|
194
207
|
* @typedef {WebpackOptionsNormalized & { context: NonNullable<WebpackOptionsNormalized["context"]> } & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }} WebpackOptionsNormalizedWithBaseDefaults
|
|
195
208
|
*/
|
|
196
209
|
|
|
197
210
|
/**
|
|
211
|
+
* Defines the webpack options normalized with defaults type used by this module.
|
|
198
212
|
* @typedef {WebpackOptionsNormalizedWithBaseDefaults & { target: NonNullable<WebpackOptionsNormalized["target"]> } & { output: OutputNormalizedWithDefaults } & { optimization: OptimizationNormalizedWithDefaults } & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> } & { stats: NonNullable<WebpackOptionsNormalized["stats"]> } & { node: NonNullable<WebpackOptionsNormalized["node"]> } & { profile: NonNullable<WebpackOptionsNormalized["profile"]> } & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> } & { snapshot: SnapshotNormalizedWithDefaults } & { externalsPresets: ExternalsPresetsNormalizedWithDefaults } & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> } & { watch: NonNullable<WebpackOptionsNormalized["watch"]> } & { performance: NonNullable<WebpackOptionsNormalized["performance"]> } & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> } & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]> } & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }} WebpackOptionsNormalizedWithDefaults
|
|
199
213
|
*/
|
|
200
214
|
|
|
201
215
|
/**
|
|
216
|
+
* Defines the resolved options type used by this module.
|
|
202
217
|
* @typedef {object} ResolvedOptions
|
|
203
218
|
* @property {PlatformTargetProperties | false} platform - platform target properties
|
|
204
219
|
*/
|
|
@@ -211,7 +226,7 @@ const DEFAULTS = {
|
|
|
211
226
|
};
|
|
212
227
|
|
|
213
228
|
/**
|
|
214
|
-
*
|
|
229
|
+
* Processes the provided obj.
|
|
215
230
|
* @template T
|
|
216
231
|
* @template {keyof T} P
|
|
217
232
|
* @param {T} obj an object
|
|
@@ -226,7 +241,7 @@ const D = (obj, prop, value) => {
|
|
|
226
241
|
};
|
|
227
242
|
|
|
228
243
|
/**
|
|
229
|
-
*
|
|
244
|
+
* Processes the provided obj.
|
|
230
245
|
* @template T
|
|
231
246
|
* @template {keyof T} P
|
|
232
247
|
* @param {T} obj an object
|
|
@@ -282,6 +297,7 @@ const A = (obj, prop, factory) => {
|
|
|
282
297
|
};
|
|
283
298
|
|
|
284
299
|
/**
|
|
300
|
+
* Apply webpack options base defaults.
|
|
285
301
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
286
302
|
* @returns {void}
|
|
287
303
|
*/
|
|
@@ -291,6 +307,7 @@ const applyWebpackOptionsBaseDefaults = (options) => {
|
|
|
291
307
|
};
|
|
292
308
|
|
|
293
309
|
/**
|
|
310
|
+
* Apply webpack options defaults.
|
|
294
311
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
295
312
|
* @param {number=} compilerIndex index of compiler
|
|
296
313
|
* @returns {ResolvedOptions} Resolved options after apply defaults
|
|
@@ -326,6 +343,26 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
326
343
|
}
|
|
327
344
|
}
|
|
328
345
|
|
|
346
|
+
D(options, "watch", false);
|
|
347
|
+
D(options, "profile", false);
|
|
348
|
+
D(options, "parallelism", 100);
|
|
349
|
+
D(options, "recordsInputPath", false);
|
|
350
|
+
D(options, "recordsOutputPath", false);
|
|
351
|
+
|
|
352
|
+
// Capture the raw html intent before "auto" is resolved: only an explicit
|
|
353
|
+
// `html: true` (or futureDefaults) keeps `.html` ahead of `.js` when resolving.
|
|
354
|
+
const htmlExplicitlyEnabled = options.experiments.html === true;
|
|
355
|
+
const htmlWasUnset = options.experiments.html === undefined;
|
|
356
|
+
|
|
357
|
+
applyExperimentsDefaults(options.experiments, {
|
|
358
|
+
production,
|
|
359
|
+
development,
|
|
360
|
+
targetProperties,
|
|
361
|
+
rules: options.module.rules
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// After experiments are resolved: the default dev source map depends on the
|
|
365
|
+
// (possibly "auto"-resolved) `experiments.css` value.
|
|
329
366
|
F(
|
|
330
367
|
options,
|
|
331
368
|
"devtool",
|
|
@@ -348,24 +385,20 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
348
385
|
)
|
|
349
386
|
);
|
|
350
387
|
|
|
351
|
-
D(options, "watch", false);
|
|
352
|
-
D(options, "profile", false);
|
|
353
|
-
D(options, "parallelism", 100);
|
|
354
|
-
D(options, "recordsInputPath", false);
|
|
355
|
-
D(options, "recordsOutputPath", false);
|
|
356
|
-
|
|
357
|
-
applyExperimentsDefaults(options.experiments, {
|
|
358
|
-
production,
|
|
359
|
-
development,
|
|
360
|
-
targetProperties
|
|
361
|
-
});
|
|
362
|
-
|
|
363
388
|
const futureDefaults =
|
|
364
389
|
/** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
|
|
365
390
|
(options.experiments.futureDefaults);
|
|
366
391
|
|
|
392
|
+
// `.html` outranks `.js` only for an explicit opt-in (`html: true`, or the
|
|
393
|
+
// futureDefaults-forced default), never for the auto-enabled default.
|
|
394
|
+
const htmlFirst = htmlExplicitlyEnabled || (htmlWasUnset && futureDefaults);
|
|
395
|
+
|
|
367
396
|
F(options, "validate", () => !(futureDefaults === true && production));
|
|
368
397
|
|
|
398
|
+
// Progress lives on infrastructureLogging; webpack@6 shows the interactive
|
|
399
|
+
// bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
|
|
400
|
+
D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
|
|
401
|
+
|
|
369
402
|
F(options, "cache", () =>
|
|
370
403
|
development ? { type: /** @type {"memory"} */ ("memory") } : false
|
|
371
404
|
);
|
|
@@ -399,7 +432,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
399
432
|
entry: options.entry,
|
|
400
433
|
futureDefaults,
|
|
401
434
|
asyncWebAssembly:
|
|
402
|
-
/** @type {
|
|
435
|
+
/** @type {boolean} */
|
|
403
436
|
(options.experiments.asyncWebAssembly)
|
|
404
437
|
});
|
|
405
438
|
|
|
@@ -415,11 +448,17 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
415
448
|
/** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
|
|
416
449
|
(options.experiments.syncWebAssembly),
|
|
417
450
|
asyncWebAssembly:
|
|
418
|
-
/** @type {
|
|
451
|
+
/** @type {boolean} */
|
|
419
452
|
(options.experiments.asyncWebAssembly),
|
|
420
453
|
css:
|
|
421
|
-
/** @type {
|
|
454
|
+
/** @type {boolean} */
|
|
422
455
|
(options.experiments.css),
|
|
456
|
+
html:
|
|
457
|
+
/** @type {boolean} */
|
|
458
|
+
(options.experiments.html),
|
|
459
|
+
typescript:
|
|
460
|
+
/** @type {boolean} */
|
|
461
|
+
(options.experiments.typescript),
|
|
423
462
|
deferImport:
|
|
424
463
|
/** @type {NonNullable<ExperimentsNormalized["deferImport"]>} */
|
|
425
464
|
(options.experiments.deferImport),
|
|
@@ -433,9 +472,33 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
433
472
|
mode: options.mode,
|
|
434
473
|
outputModule:
|
|
435
474
|
/** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
|
|
436
|
-
(options.output.module)
|
|
475
|
+
(options.output.module),
|
|
476
|
+
library: options.output.library
|
|
437
477
|
});
|
|
438
478
|
|
|
479
|
+
// `output.resourceHints.urlHints` shorthand: fan the project-wide rules out
|
|
480
|
+
// as the base `urlHints` of every URL-emitting parser (JS `new URL`, CSS
|
|
481
|
+
// `url()`, HTML `<img src>`). They go first so parser-scoped
|
|
482
|
+
// `parser.<type>.urlHints` rules — matched later, last-match-wins — override.
|
|
483
|
+
const outputUrlHints =
|
|
484
|
+
options.output.resourceHints && options.output.resourceHints.urlHints;
|
|
485
|
+
if (outputUrlHints && outputUrlHints.length > 0) {
|
|
486
|
+
for (const type of [
|
|
487
|
+
"javascript",
|
|
488
|
+
CSS_MODULE_TYPE,
|
|
489
|
+
CSS_MODULE_TYPE_AUTO,
|
|
490
|
+
CSS_MODULE_TYPE_MODULE,
|
|
491
|
+
CSS_MODULE_TYPE_GLOBAL,
|
|
492
|
+
HTML_MODULE_TYPE
|
|
493
|
+
]) {
|
|
494
|
+
const parser =
|
|
495
|
+
/** @type {{ urlHints?: import("../../declarations/WebpackOptions").UrlHintRule[] } | undefined} */
|
|
496
|
+
(options.module.parser[type]);
|
|
497
|
+
if (!parser) continue;
|
|
498
|
+
parser.urlHints = [...outputUrlHints, ...(parser.urlHints || [])];
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
439
502
|
applyExternalsPresetsDefaults(options.externalsPresets, {
|
|
440
503
|
targetProperties,
|
|
441
504
|
buildHttp: Boolean(options.experiments.buildHttp),
|
|
@@ -492,7 +555,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
492
555
|
development,
|
|
493
556
|
production,
|
|
494
557
|
css:
|
|
495
|
-
/** @type {
|
|
558
|
+
/** @type {boolean} */
|
|
496
559
|
(options.experiments.css),
|
|
497
560
|
records: Boolean(options.recordsInputPath || options.recordsOutputPath)
|
|
498
561
|
});
|
|
@@ -504,8 +567,15 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
504
567
|
targetProperties,
|
|
505
568
|
mode: /** @type {Mode} */ (options.mode),
|
|
506
569
|
css:
|
|
507
|
-
/** @type {
|
|
508
|
-
(options.experiments.css)
|
|
570
|
+
/** @type {boolean} */
|
|
571
|
+
(options.experiments.css),
|
|
572
|
+
html:
|
|
573
|
+
/** @type {boolean} */
|
|
574
|
+
(options.experiments.html),
|
|
575
|
+
htmlFirst,
|
|
576
|
+
typescript:
|
|
577
|
+
/** @type {boolean} */
|
|
578
|
+
(options.experiments.typescript)
|
|
509
579
|
}),
|
|
510
580
|
options.resolve
|
|
511
581
|
);
|
|
@@ -524,36 +594,103 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
524
594
|
browser: targetProperties.browser,
|
|
525
595
|
webworker: targetProperties.webworker,
|
|
526
596
|
node: targetProperties.node,
|
|
597
|
+
deno: targetProperties.deno,
|
|
598
|
+
bun: targetProperties.bun,
|
|
527
599
|
nwjs: targetProperties.nwjs,
|
|
528
|
-
electron: targetProperties.electron
|
|
600
|
+
electron: targetProperties.electron,
|
|
601
|
+
// spans both web and node (target "universal" or ["web", "node"])
|
|
602
|
+
universal:
|
|
603
|
+
targetProperties.node === null && targetProperties.web === null
|
|
529
604
|
}
|
|
530
605
|
};
|
|
531
606
|
};
|
|
532
607
|
|
|
533
608
|
/**
|
|
609
|
+
* Apply experiments defaults.
|
|
534
610
|
* @param {ExperimentsNormalized} experiments options
|
|
535
611
|
* @param {object} options options
|
|
536
612
|
* @param {boolean} options.production is production
|
|
537
613
|
* @param {boolean} options.development is development mode
|
|
538
614
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
615
|
+
* @param {RuleSetRules} options.rules user `module.rules`, used to resolve the css/html/asyncWebAssembly/typescript "auto" defaults
|
|
539
616
|
* @returns {void}
|
|
540
617
|
*/
|
|
541
618
|
const applyExperimentsDefaults = (
|
|
542
619
|
experiments,
|
|
543
|
-
{ production, development, targetProperties }
|
|
620
|
+
{ production, development, targetProperties, rules }
|
|
544
621
|
) => {
|
|
545
622
|
D(experiments, "futureDefaults", false);
|
|
546
623
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
|
547
624
|
// TODO do we need sync web assembly in webpack@6?
|
|
548
625
|
D(experiments, "syncWebAssembly", false);
|
|
549
|
-
D(
|
|
550
|
-
|
|
626
|
+
D(
|
|
627
|
+
experiments,
|
|
628
|
+
"asyncWebAssembly",
|
|
629
|
+
experiments.futureDefaults ? true : "auto"
|
|
630
|
+
);
|
|
631
|
+
// the universal target (web + node, neither specific) only works as ESM
|
|
632
|
+
const universal =
|
|
633
|
+
Boolean(targetProperties) &&
|
|
634
|
+
/** @type {TargetProperties} */ (targetProperties).node === null &&
|
|
635
|
+
/** @type {TargetProperties} */ (targetProperties).web === null;
|
|
636
|
+
// the deno and bun targets only emit ECMAScript modules
|
|
637
|
+
const deno =
|
|
638
|
+
Boolean(targetProperties) &&
|
|
639
|
+
/** @type {TargetProperties} */ (targetProperties).deno === true;
|
|
640
|
+
const bun =
|
|
641
|
+
Boolean(targetProperties) &&
|
|
642
|
+
/** @type {TargetProperties} */ (targetProperties).bun === true;
|
|
643
|
+
D(experiments, "outputModule", universal || deno || bun);
|
|
551
644
|
D(experiments, "lazyCompilation", undefined);
|
|
552
645
|
D(experiments, "buildHttp", undefined);
|
|
553
646
|
D(experiments, "cacheUnaffected", experiments.futureDefaults);
|
|
554
647
|
D(experiments, "deferImport", false);
|
|
555
648
|
D(experiments, "sourceImport", false);
|
|
556
|
-
F(experiments, "css", () => (experiments.futureDefaults ? true :
|
|
649
|
+
F(experiments, "css", () => (experiments.futureDefaults ? true : "auto"));
|
|
650
|
+
F(experiments, "html", () => (experiments.futureDefaults ? true : "auto"));
|
|
651
|
+
F(experiments, "typescript", () =>
|
|
652
|
+
experiments.futureDefaults ? true : "auto"
|
|
653
|
+
);
|
|
654
|
+
|
|
655
|
+
// Resolve the "auto" default: enable the built-in css/html module type unless
|
|
656
|
+
// the user already registered a loader (or explicit type) for these files, so
|
|
657
|
+
// enabling them by default does not break existing css-loader/html-loader setups.
|
|
658
|
+
// The built-in `/\.css$/i` rule also covers `.module.css`, so a loader scoped to
|
|
659
|
+
// CSS modules must disable the built-in type too — sample both extensions.
|
|
660
|
+
// When enabled implicitly the value stays `"auto"` (truthy): Css/HtmlModulesPlugin
|
|
661
|
+
// then step aside per-module for requests that loaders were applied to
|
|
662
|
+
// (inline requests or loaders injected via hooks, e.g. html-webpack-plugin).
|
|
663
|
+
// TODO webpack 6: css/html default to `true`, drop the `"auto"` marker.
|
|
664
|
+
if (experiments.css === "auto") {
|
|
665
|
+
experiments.css =
|
|
666
|
+
!(
|
|
667
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.css") ||
|
|
668
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.module.css")
|
|
669
|
+
) && "auto";
|
|
670
|
+
}
|
|
671
|
+
if (experiments.html === "auto") {
|
|
672
|
+
experiments.html =
|
|
673
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.html") && "auto";
|
|
674
|
+
}
|
|
675
|
+
// Auto-enable only when the built-in TypeScript support can actually run:
|
|
676
|
+
// it needs `module.stripTypeScriptTypes` (Node.js >= 22.6) and must step
|
|
677
|
+
// aside for a loader registered for `.ts`/`.mts`/`.cts` (e.g. ts-loader).
|
|
678
|
+
if (experiments.typescript === "auto") {
|
|
679
|
+
experiments.typescript =
|
|
680
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
681
|
+
typeof require("module").stripTypeScriptTypes === "function" &&
|
|
682
|
+
!(
|
|
683
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.ts") ||
|
|
684
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.mts") ||
|
|
685
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.cts")
|
|
686
|
+
);
|
|
687
|
+
}
|
|
688
|
+
// `syncWebAssembly` already claims `.wasm`, so don't let "auto" override it.
|
|
689
|
+
if (experiments.asyncWebAssembly === "auto") {
|
|
690
|
+
experiments.asyncWebAssembly =
|
|
691
|
+
!experiments.syncWebAssembly &&
|
|
692
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm");
|
|
693
|
+
}
|
|
557
694
|
|
|
558
695
|
if (typeof experiments.buildHttp === "object") {
|
|
559
696
|
D(experiments.buildHttp, "frozen", production);
|
|
@@ -562,6 +699,7 @@ const applyExperimentsDefaults = (
|
|
|
562
699
|
};
|
|
563
700
|
|
|
564
701
|
/**
|
|
702
|
+
* Apply cache defaults.
|
|
565
703
|
* @param {CacheOptionsNormalized} cache options
|
|
566
704
|
* @param {object} options options
|
|
567
705
|
* @param {string} options.name name
|
|
@@ -644,6 +782,7 @@ const applyCacheDefaults = (
|
|
|
644
782
|
};
|
|
645
783
|
|
|
646
784
|
/**
|
|
785
|
+
* Apply snapshot defaults.
|
|
647
786
|
* @param {SnapshotOptions} snapshot options
|
|
648
787
|
* @param {object} options options
|
|
649
788
|
* @param {boolean} options.production is production
|
|
@@ -721,6 +860,7 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
721
860
|
};
|
|
722
861
|
|
|
723
862
|
/**
|
|
863
|
+
* Apply javascript parser options defaults.
|
|
724
864
|
* @param {JavascriptParserOptions} parserOptions parser options
|
|
725
865
|
* @param {object} options options
|
|
726
866
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
@@ -728,11 +868,21 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
728
868
|
* @param {boolean} options.sourceImport is import source enabled
|
|
729
869
|
* @param {boolean} options.isNode is node target platform
|
|
730
870
|
* @param {boolean} options.outputModule is output.module enabled
|
|
871
|
+
* @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
|
|
872
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
731
873
|
* @returns {void}
|
|
732
874
|
*/
|
|
733
875
|
const applyJavascriptParserOptionsDefaults = (
|
|
734
876
|
parserOptions,
|
|
735
|
-
{
|
|
877
|
+
{
|
|
878
|
+
futureDefaults,
|
|
879
|
+
deferImport,
|
|
880
|
+
sourceImport,
|
|
881
|
+
isNode,
|
|
882
|
+
outputModule,
|
|
883
|
+
library,
|
|
884
|
+
typescript
|
|
885
|
+
}
|
|
736
886
|
) => {
|
|
737
887
|
D(parserOptions, "unknownContextRequest", ".");
|
|
738
888
|
D(parserOptions, "unknownContextRegExp", false);
|
|
@@ -755,10 +905,14 @@ const applyJavascriptParserOptionsDefaults = (
|
|
|
755
905
|
D(parserOptions, "dynamicUrl", true);
|
|
756
906
|
D(parserOptions, "deferImport", deferImport);
|
|
757
907
|
D(parserOptions, "sourceImport", sourceImport);
|
|
908
|
+
D(parserOptions, "typescript", typescript);
|
|
758
909
|
if (futureDefaults) D(parserOptions, "exportsPresence", "error");
|
|
910
|
+
D(parserOptions, "strictModeViolations", futureDefaults ? "error" : "warn");
|
|
911
|
+
D(parserOptions, "anonymousDefaultExportName", !library);
|
|
759
912
|
};
|
|
760
913
|
|
|
761
914
|
/**
|
|
915
|
+
* Apply json generator options defaults.
|
|
762
916
|
* @param {JsonGeneratorOptions} generatorOptions generator options
|
|
763
917
|
* @returns {void}
|
|
764
918
|
*/
|
|
@@ -767,6 +921,7 @@ const applyJsonGeneratorOptionsDefaults = (generatorOptions) => {
|
|
|
767
921
|
};
|
|
768
922
|
|
|
769
923
|
/**
|
|
924
|
+
* Apply css generator options defaults.
|
|
770
925
|
* @param {CssGeneratorOptions} generatorOptions generator options
|
|
771
926
|
* @param {object} options options
|
|
772
927
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -785,12 +940,15 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
785
940
|
};
|
|
786
941
|
|
|
787
942
|
/**
|
|
943
|
+
* Apply module defaults.
|
|
788
944
|
* @param {ModuleOptions} module options
|
|
789
945
|
* @param {object} options options
|
|
790
946
|
* @param {boolean} options.cache is caching enabled
|
|
791
947
|
* @param {boolean} options.syncWebAssembly is syncWebAssembly enabled
|
|
792
948
|
* @param {boolean} options.asyncWebAssembly is asyncWebAssembly enabled
|
|
949
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
793
950
|
* @param {boolean} options.css is css enabled
|
|
951
|
+
* @param {boolean} options.html is html enabled
|
|
794
952
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
795
953
|
* @param {string} options.uniqueName the unique name
|
|
796
954
|
* @param {boolean} options.isNode is node target platform
|
|
@@ -801,6 +959,7 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
801
959
|
* @param {HashSalt} options.hashSalt hash salt
|
|
802
960
|
* @param {HashFunction} options.hashFunction hash function
|
|
803
961
|
* @param {boolean} options.outputModule is output.module enabled
|
|
962
|
+
* @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
|
|
804
963
|
* @returns {void}
|
|
805
964
|
*/
|
|
806
965
|
const applyModuleDefaults = (
|
|
@@ -812,6 +971,8 @@ const applyModuleDefaults = (
|
|
|
812
971
|
syncWebAssembly,
|
|
813
972
|
asyncWebAssembly,
|
|
814
973
|
css,
|
|
974
|
+
html,
|
|
975
|
+
typescript,
|
|
815
976
|
futureDefaults,
|
|
816
977
|
isNode,
|
|
817
978
|
uniqueName,
|
|
@@ -819,7 +980,8 @@ const applyModuleDefaults = (
|
|
|
819
980
|
mode,
|
|
820
981
|
deferImport,
|
|
821
982
|
sourceImport,
|
|
822
|
-
outputModule
|
|
983
|
+
outputModule,
|
|
984
|
+
library
|
|
823
985
|
}
|
|
824
986
|
) => {
|
|
825
987
|
if (cache) {
|
|
@@ -827,6 +989,7 @@ const applyModuleDefaults = (
|
|
|
827
989
|
module,
|
|
828
990
|
"unsafeCache",
|
|
829
991
|
/**
|
|
992
|
+
* Handles the callback logic for this hook.
|
|
830
993
|
* @param {Module} module module
|
|
831
994
|
* @returns {boolean} true, if we want to cache the module
|
|
832
995
|
*/
|
|
@@ -880,11 +1043,14 @@ const applyModuleDefaults = (
|
|
|
880
1043
|
deferImport,
|
|
881
1044
|
sourceImport,
|
|
882
1045
|
isNode,
|
|
883
|
-
outputModule
|
|
1046
|
+
outputModule,
|
|
1047
|
+
library,
|
|
1048
|
+
typescript
|
|
884
1049
|
}
|
|
885
1050
|
);
|
|
886
1051
|
|
|
887
1052
|
F(module.generator, "json", () => ({}));
|
|
1053
|
+
|
|
888
1054
|
applyJsonGeneratorOptionsDefaults(
|
|
889
1055
|
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown["json"]>} */
|
|
890
1056
|
(module.generator.json)
|
|
@@ -911,6 +1077,18 @@ const applyModuleDefaults = (
|
|
|
911
1077
|
"namedExports",
|
|
912
1078
|
true
|
|
913
1079
|
);
|
|
1080
|
+
D(
|
|
1081
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
1082
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
1083
|
+
"customMedia",
|
|
1084
|
+
true
|
|
1085
|
+
);
|
|
1086
|
+
D(
|
|
1087
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
1088
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
1089
|
+
"customSelectors",
|
|
1090
|
+
true
|
|
1091
|
+
);
|
|
914
1092
|
|
|
915
1093
|
for (const type of [
|
|
916
1094
|
CSS_MODULE_TYPE_AUTO,
|
|
@@ -955,6 +1133,18 @@ const applyModuleDefaults = (
|
|
|
955
1133
|
"grid",
|
|
956
1134
|
true
|
|
957
1135
|
);
|
|
1136
|
+
D(
|
|
1137
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
1138
|
+
(module.parser[type]),
|
|
1139
|
+
"customMedia",
|
|
1140
|
+
true
|
|
1141
|
+
);
|
|
1142
|
+
D(
|
|
1143
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
1144
|
+
(module.parser[type]),
|
|
1145
|
+
"customSelectors",
|
|
1146
|
+
true
|
|
1147
|
+
);
|
|
958
1148
|
}
|
|
959
1149
|
|
|
960
1150
|
F(module.generator, CSS_MODULE_TYPE, () => ({}));
|
|
@@ -1027,6 +1217,28 @@ const applyModuleDefaults = (
|
|
|
1027
1217
|
}
|
|
1028
1218
|
}
|
|
1029
1219
|
|
|
1220
|
+
if (html) {
|
|
1221
|
+
// `module.generator.html.extract` is intentionally left undefined by
|
|
1222
|
+
// default: HtmlGenerator treats undefined as "extract iff this HTML
|
|
1223
|
+
// module is a compilation entry", which is the HTML-entry-point
|
|
1224
|
+
// behaviour. Setting `extract: true` forces extraction for all HTML
|
|
1225
|
+
// modules (including imported ones); `extract: false` disables it
|
|
1226
|
+
// everywhere.
|
|
1227
|
+
F(module.generator, HTML_MODULE_TYPE, () => ({}));
|
|
1228
|
+
// `module.parser.html.sources` defaults to `true` — HtmlParser uses
|
|
1229
|
+
// the built-in source list to extract URL-like attributes (`<img
|
|
1230
|
+
// src>`, `<link href>`, `<script src>`, …) as webpack dependencies.
|
|
1231
|
+
// Users may pass `false` to disable extraction entirely or an array
|
|
1232
|
+
// (with `"..."` to include the defaults) to customize it.
|
|
1233
|
+
F(module.parser, HTML_MODULE_TYPE, () => ({}));
|
|
1234
|
+
D(
|
|
1235
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[HTML_MODULE_TYPE]>} */
|
|
1236
|
+
(module.parser[HTML_MODULE_TYPE]),
|
|
1237
|
+
"sources",
|
|
1238
|
+
true
|
|
1239
|
+
);
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1030
1242
|
A(module, "defaultRules", () => {
|
|
1031
1243
|
const esm = {
|
|
1032
1244
|
type: JAVASCRIPT_MODULE_TYPE_ESM,
|
|
@@ -1084,6 +1296,7 @@ const applyModuleDefaults = (
|
|
|
1084
1296
|
...esm
|
|
1085
1297
|
}
|
|
1086
1298
|
];
|
|
1299
|
+
|
|
1087
1300
|
if (asyncWebAssembly) {
|
|
1088
1301
|
const wasm = {
|
|
1089
1302
|
type: WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
|
@@ -1129,6 +1342,7 @@ const applyModuleDefaults = (
|
|
|
1129
1342
|
...wasm
|
|
1130
1343
|
});
|
|
1131
1344
|
}
|
|
1345
|
+
|
|
1132
1346
|
if (css) {
|
|
1133
1347
|
const resolve = {
|
|
1134
1348
|
fullySpecified: true,
|
|
@@ -1150,14 +1364,20 @@ const applyModuleDefaults = (
|
|
|
1150
1364
|
resolve
|
|
1151
1365
|
});
|
|
1152
1366
|
// For CSS modules, i.e. `.class { composes: className from "./style.css" }`
|
|
1153
|
-
// We inherit for such constructions
|
|
1367
|
+
// We inherit for such constructions, but skip files that are already
|
|
1368
|
+
// detected as CSS modules by extension (`.module.<ext>`) — they get
|
|
1369
|
+
// the same modules-mode behavior from the auto rule, and forcing a
|
|
1370
|
+
// different type stamp here would create a duplicate module instance.
|
|
1371
|
+
const moduleExtension = /\.module\.\w+$/i;
|
|
1154
1372
|
rules.push({
|
|
1155
1373
|
dependency: /css-import-local-module/,
|
|
1374
|
+
exclude: moduleExtension,
|
|
1156
1375
|
type: CSS_MODULE_TYPE_MODULE,
|
|
1157
1376
|
resolve
|
|
1158
1377
|
});
|
|
1159
1378
|
rules.push({
|
|
1160
1379
|
dependency: /css-import-global-module/,
|
|
1380
|
+
exclude: moduleExtension,
|
|
1161
1381
|
type: CSS_MODULE_TYPE_GLOBAL,
|
|
1162
1382
|
resolve
|
|
1163
1383
|
});
|
|
@@ -1179,6 +1399,94 @@ const applyModuleDefaults = (
|
|
|
1179
1399
|
}
|
|
1180
1400
|
);
|
|
1181
1401
|
}
|
|
1402
|
+
if (html) {
|
|
1403
|
+
const resolve = {
|
|
1404
|
+
fullySpecified: true,
|
|
1405
|
+
preferRelative: true
|
|
1406
|
+
};
|
|
1407
|
+
|
|
1408
|
+
rules.push({
|
|
1409
|
+
test: /\.html$/i,
|
|
1410
|
+
type: HTML_MODULE_TYPE,
|
|
1411
|
+
resolve
|
|
1412
|
+
});
|
|
1413
|
+
rules.push({
|
|
1414
|
+
mimetype: "text/html",
|
|
1415
|
+
type: HTML_MODULE_TYPE,
|
|
1416
|
+
resolve
|
|
1417
|
+
});
|
|
1418
|
+
// `<iframe srcdoc>` content is fed back through the HTML pipeline as a
|
|
1419
|
+
// `data:text/html` module. `extract: "inline"` exposes the processed
|
|
1420
|
+
// HTML on the `html` codegen channel that `HtmlInlineHtmlDependency.
|
|
1421
|
+
// Template` reads back into the attribute, without emitting a standalone
|
|
1422
|
+
// `.html` file (the module is never a page on its own).
|
|
1423
|
+
rules.push({
|
|
1424
|
+
dependency: "html-srcdoc",
|
|
1425
|
+
generator: {
|
|
1426
|
+
extract: "inline"
|
|
1427
|
+
},
|
|
1428
|
+
resolve
|
|
1429
|
+
});
|
|
1430
|
+
if (css) {
|
|
1431
|
+
// Inline `<style>` content in an HTML module is fed into the
|
|
1432
|
+
// CSS pipeline as a `data:text/css` virtual module. We force
|
|
1433
|
+
// `exportType: "text"` so the CSS module exposes the
|
|
1434
|
+
// processed CSS text on the `css-text` codegen channel that
|
|
1435
|
+
// `HtmlInlineStyleDependency.Template` reads back into the
|
|
1436
|
+
// `<style>` tag.
|
|
1437
|
+
rules.push({
|
|
1438
|
+
dependency: "html-style",
|
|
1439
|
+
parser: {
|
|
1440
|
+
exportType: "text"
|
|
1441
|
+
},
|
|
1442
|
+
resolve
|
|
1443
|
+
});
|
|
1444
|
+
// A `style="..."` attribute is a CSS block's contents, not a
|
|
1445
|
+
// stylesheet, so parse it as one (`as: "block-contents"`).
|
|
1446
|
+
rules.push({
|
|
1447
|
+
dependency: "html-style-attribute",
|
|
1448
|
+
parser: {
|
|
1449
|
+
exportType: "text",
|
|
1450
|
+
as: "block-contents"
|
|
1451
|
+
},
|
|
1452
|
+
resolve
|
|
1453
|
+
});
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1457
|
+
if (typescript) {
|
|
1458
|
+
rules.push(
|
|
1459
|
+
{
|
|
1460
|
+
test: /\.mts$/i,
|
|
1461
|
+
...esm
|
|
1462
|
+
},
|
|
1463
|
+
{
|
|
1464
|
+
test: /\.ts$/i,
|
|
1465
|
+
descriptionData: {
|
|
1466
|
+
type: "module"
|
|
1467
|
+
},
|
|
1468
|
+
...esm
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
test: /\.cts$/i,
|
|
1472
|
+
...commonjs
|
|
1473
|
+
},
|
|
1474
|
+
{
|
|
1475
|
+
test: /\.ts$/i,
|
|
1476
|
+
descriptionData: {
|
|
1477
|
+
type: "commonjs"
|
|
1478
|
+
},
|
|
1479
|
+
...commonjs
|
|
1480
|
+
},
|
|
1481
|
+
{
|
|
1482
|
+
mimetype: {
|
|
1483
|
+
or: ["text/typescript", "application/typescript"]
|
|
1484
|
+
},
|
|
1485
|
+
...esm
|
|
1486
|
+
}
|
|
1487
|
+
);
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1182
1490
|
rules.push(
|
|
1183
1491
|
{
|
|
1184
1492
|
dependency: "url",
|
|
@@ -1211,11 +1519,52 @@ const applyModuleDefaults = (
|
|
|
1211
1519
|
type: ASSET_MODULE_TYPE_BYTES
|
|
1212
1520
|
}
|
|
1213
1521
|
);
|
|
1522
|
+
if (html) {
|
|
1523
|
+
// A `.webmanifest` referenced by `<link rel="manifest">` is a `url`
|
|
1524
|
+
// dependency; route it to the `asset/webmanifest` type so its icon URLs
|
|
1525
|
+
// are parsed. Must come after the generic `url` → asset rule so it wins.
|
|
1526
|
+
rules.push({
|
|
1527
|
+
dependency: "url",
|
|
1528
|
+
test: /\.webmanifest$/i,
|
|
1529
|
+
type: "asset/webmanifest"
|
|
1530
|
+
});
|
|
1531
|
+
// A generated manifest (`output.html.manifest` object) is injected as a
|
|
1532
|
+
// `data:application/manifest+json` URL with no `.webmanifest` extension;
|
|
1533
|
+
// route it by mimetype so its icons are parsed and hashed too.
|
|
1534
|
+
rules.push({
|
|
1535
|
+
dependency: "url",
|
|
1536
|
+
mimetype: "application/manifest+json",
|
|
1537
|
+
type: "asset/webmanifest"
|
|
1538
|
+
});
|
|
1539
|
+
}
|
|
1540
|
+
if (futureDefaults) {
|
|
1541
|
+
rules.push({
|
|
1542
|
+
oneOf: [
|
|
1543
|
+
{
|
|
1544
|
+
resourceQuery: /(\?|&)raw(&|$)/,
|
|
1545
|
+
type: ASSET_MODULE_TYPE_SOURCE
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
resourceQuery: /(\?|&)url(&|$)/,
|
|
1549
|
+
type: ASSET_MODULE_TYPE_RESOURCE
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
resourceQuery: /(\?|&)no-inline(&|$)/,
|
|
1553
|
+
type: ASSET_MODULE_TYPE_RESOURCE
|
|
1554
|
+
},
|
|
1555
|
+
{
|
|
1556
|
+
resourceQuery: /(\?|&)inline(&|$)/,
|
|
1557
|
+
type: ASSET_MODULE_TYPE_INLINE
|
|
1558
|
+
}
|
|
1559
|
+
]
|
|
1560
|
+
});
|
|
1561
|
+
}
|
|
1214
1562
|
return rules;
|
|
1215
1563
|
});
|
|
1216
1564
|
};
|
|
1217
1565
|
|
|
1218
1566
|
/**
|
|
1567
|
+
* Apply output defaults.
|
|
1219
1568
|
* @param {Output} output options
|
|
1220
1569
|
* @param {object} options options
|
|
1221
1570
|
* @param {string} options.context context
|
|
@@ -1242,6 +1591,7 @@ const applyOutputDefaults = (
|
|
|
1242
1591
|
}
|
|
1243
1592
|
) => {
|
|
1244
1593
|
/**
|
|
1594
|
+
* Returns a readable library name.
|
|
1245
1595
|
* @param {Library=} library the library option
|
|
1246
1596
|
* @returns {string} a readable library name
|
|
1247
1597
|
*/
|
|
@@ -1293,11 +1643,13 @@ const applyOutputDefaults = (
|
|
|
1293
1643
|
|
|
1294
1644
|
const environment = /** @type {Environment} */ (output.environment);
|
|
1295
1645
|
/**
|
|
1646
|
+
* Returns true, when v is truthy or undefined.
|
|
1296
1647
|
* @param {boolean | undefined} v value
|
|
1297
1648
|
* @returns {boolean} true, when v is truthy or undefined
|
|
1298
1649
|
*/
|
|
1299
1650
|
const optimistic = (v) => v || v === undefined;
|
|
1300
1651
|
/**
|
|
1652
|
+
* Conditionally optimistic.
|
|
1301
1653
|
* @param {boolean | undefined} v value
|
|
1302
1654
|
* @param {boolean | undefined} c condition
|
|
1303
1655
|
* @returns {boolean | undefined} true, when v is truthy or undefined, or c is truthy
|
|
@@ -1309,6 +1661,17 @@ const applyOutputDefaults = (
|
|
|
1309
1661
|
"globalThis",
|
|
1310
1662
|
() => /** @type {boolean | undefined} */ (tp && tp.globalThis)
|
|
1311
1663
|
);
|
|
1664
|
+
F(
|
|
1665
|
+
environment,
|
|
1666
|
+
"symbol",
|
|
1667
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.symbol))
|
|
1668
|
+
);
|
|
1669
|
+
F(
|
|
1670
|
+
environment,
|
|
1671
|
+
"hasOwn",
|
|
1672
|
+
// No optimistic, because it is new
|
|
1673
|
+
() => tp && /** @type {boolean | undefined} */ (tp.hasOwn)
|
|
1674
|
+
);
|
|
1312
1675
|
F(
|
|
1313
1676
|
environment,
|
|
1314
1677
|
"bigIntLiteral",
|
|
@@ -1320,6 +1683,22 @@ const applyOutputDefaults = (
|
|
|
1320
1683
|
"const",
|
|
1321
1684
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
1322
1685
|
);
|
|
1686
|
+
// `let` was added after `const`; targets predating it report only `const`,
|
|
1687
|
+
// so fall back to `const` when `let` is unreported (undefined). Targets that
|
|
1688
|
+
// do report `let` (browserslist, built-ins) keep their own accurate value.
|
|
1689
|
+
F(environment, "let", () =>
|
|
1690
|
+
conditionallyOptimistic(
|
|
1691
|
+
/** @type {boolean | undefined} */ (tp && tp.let),
|
|
1692
|
+
environment.const
|
|
1693
|
+
)
|
|
1694
|
+
);
|
|
1695
|
+
F(
|
|
1696
|
+
environment,
|
|
1697
|
+
"logicalAssignment",
|
|
1698
|
+
() =>
|
|
1699
|
+
// No optimistic, because it is new
|
|
1700
|
+
tp && /** @type {boolean | undefined} */ (tp.logicalAssignment)
|
|
1701
|
+
);
|
|
1323
1702
|
F(
|
|
1324
1703
|
environment,
|
|
1325
1704
|
"methodShorthand",
|
|
@@ -1338,6 +1717,11 @@ const applyOutputDefaults = (
|
|
|
1338
1717
|
() =>
|
|
1339
1718
|
tp && optimistic(/** @type {boolean | undefined} */ (tp.asyncFunction))
|
|
1340
1719
|
);
|
|
1720
|
+
F(
|
|
1721
|
+
environment,
|
|
1722
|
+
"generator",
|
|
1723
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.generator))
|
|
1724
|
+
);
|
|
1341
1725
|
F(
|
|
1342
1726
|
environment,
|
|
1343
1727
|
"forOf",
|
|
@@ -1355,6 +1739,11 @@ const applyOutputDefaults = (
|
|
|
1355
1739
|
() =>
|
|
1356
1740
|
tp && optimistic(/** @type {boolean | undefined} */ (tp.optionalChaining))
|
|
1357
1741
|
);
|
|
1742
|
+
F(
|
|
1743
|
+
environment,
|
|
1744
|
+
"spread",
|
|
1745
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.spread))
|
|
1746
|
+
);
|
|
1358
1747
|
F(
|
|
1359
1748
|
environment,
|
|
1360
1749
|
"nodePrefixForCoreModules",
|
|
@@ -1371,6 +1760,13 @@ const applyOutputDefaults = (
|
|
|
1371
1760
|
// No optimistic, because it is new
|
|
1372
1761
|
tp && /** @type {boolean | undefined} */ (tp.importMetaDirnameAndFilename)
|
|
1373
1762
|
);
|
|
1763
|
+
F(
|
|
1764
|
+
environment,
|
|
1765
|
+
"nodeBuiltinModuleGetter",
|
|
1766
|
+
() =>
|
|
1767
|
+
// No optimistic, because it is new
|
|
1768
|
+
tp && /** @type {boolean | undefined} */ (tp.nodeBuiltinModuleGetter)
|
|
1769
|
+
);
|
|
1374
1770
|
F(
|
|
1375
1771
|
environment,
|
|
1376
1772
|
"templateLiteral",
|
|
@@ -1400,6 +1796,30 @@ const applyOutputDefaults = (
|
|
|
1400
1796
|
"document",
|
|
1401
1797
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.document))
|
|
1402
1798
|
);
|
|
1799
|
+
F(
|
|
1800
|
+
environment,
|
|
1801
|
+
"modulePreload",
|
|
1802
|
+
() =>
|
|
1803
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.modulePreload))
|
|
1804
|
+
);
|
|
1805
|
+
|
|
1806
|
+
// Vite-style default for ESM output (`output.module`): preload the entry's
|
|
1807
|
+
// initial dependency graph, which native `import()` would otherwise fetch in
|
|
1808
|
+
// a waterfall. Classic output loads initial chunks via parallel `<script>`
|
|
1809
|
+
// tags (no waterfall), so it stays opt-in.
|
|
1810
|
+
if (output.module && output.resourceHints === undefined) {
|
|
1811
|
+
output.resourceHints = {};
|
|
1812
|
+
}
|
|
1813
|
+
if (output.resourceHints) {
|
|
1814
|
+
if (output.module) D(output.resourceHints, "initial", true);
|
|
1815
|
+
// `modulePreloadPolyfill` defaults from the target's modulepreload
|
|
1816
|
+
// support: inject the polyfill iff the environment lacks it.
|
|
1817
|
+
D(
|
|
1818
|
+
output.resourceHints,
|
|
1819
|
+
"modulePreloadPolyfill",
|
|
1820
|
+
!environment.modulePreload
|
|
1821
|
+
);
|
|
1822
|
+
}
|
|
1403
1823
|
|
|
1404
1824
|
D(output, "filename", output.module ? "[name].mjs" : "[name].js");
|
|
1405
1825
|
F(output, "iife", () => !output.module);
|
|
@@ -1439,8 +1859,48 @@ const applyOutputDefaults = (
|
|
|
1439
1859
|
}
|
|
1440
1860
|
return "[id].css";
|
|
1441
1861
|
});
|
|
1862
|
+
// Derive html filename defaults from `output.filename` / `output.chunkFilename`
|
|
1863
|
+
// (the same shape the CSS pipeline uses), but if the derived template lacks
|
|
1864
|
+
// any per-module differentiator, fall back to `[name].html` so multiple
|
|
1865
|
+
// extracted HTML modules in one compilation don't collide on the same
|
|
1866
|
+
// emitted file. For example: `output.filename: "bundle.js"` would derive
|
|
1867
|
+
// `bundle.html` — two `.html` modules extracted in the same build would
|
|
1868
|
+
// both want that name and conflict at emit time.
|
|
1869
|
+
const HAS_PATH_PLACEHOLDER_REGEXP =
|
|
1870
|
+
/\[(name|id|chunkhash|contenthash|fullhash|hash)/;
|
|
1871
|
+
/**
|
|
1872
|
+
* @param {string} template html filename template derived from `output.filename`
|
|
1873
|
+
* @returns {string} same template, or `[name].html` if it has no per-module placeholder
|
|
1874
|
+
*/
|
|
1875
|
+
const ensureUniqueHtmlTemplate = (template) =>
|
|
1876
|
+
HAS_PATH_PLACEHOLDER_REGEXP.test(template) ? template : "[name].html";
|
|
1877
|
+
F(output, "htmlFilename", () => {
|
|
1878
|
+
const filename =
|
|
1879
|
+
/** @type {NonNullable<Output["htmlFilename"]>} */
|
|
1880
|
+
(output.filename);
|
|
1881
|
+
if (typeof filename !== "function") {
|
|
1882
|
+
return ensureUniqueHtmlTemplate(
|
|
1883
|
+
filename.replace(/\.[mc]?js(\?|$)/, ".html$1")
|
|
1884
|
+
);
|
|
1885
|
+
}
|
|
1886
|
+
return "[name].html";
|
|
1887
|
+
});
|
|
1888
|
+
F(output, "htmlChunkFilename", () => {
|
|
1889
|
+
const chunkFilename =
|
|
1890
|
+
/** @type {NonNullable<Output["htmlChunkFilename"]>} */
|
|
1891
|
+
(output.chunkFilename);
|
|
1892
|
+
if (typeof chunkFilename !== "function") {
|
|
1893
|
+
return ensureUniqueHtmlTemplate(
|
|
1894
|
+
chunkFilename.replace(/\.[mc]?js(\?|$)/, ".html$1")
|
|
1895
|
+
);
|
|
1896
|
+
}
|
|
1897
|
+
return "[name].html";
|
|
1898
|
+
});
|
|
1899
|
+
D(output, "html", false);
|
|
1442
1900
|
D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
|
|
1443
1901
|
D(output, "webassemblyModuleFilename", "[hash].module.wasm");
|
|
1902
|
+
// On by default like other wasm toolchains; set false to drop the fallback runtime code.
|
|
1903
|
+
D(output, "wasmStreamingFallback", true);
|
|
1444
1904
|
D(output, "compareBeforeEmit", true);
|
|
1445
1905
|
D(output, "charset", !futureDefaults);
|
|
1446
1906
|
const uniqueNameId = Template.toIdentifier(
|
|
@@ -1452,8 +1912,11 @@ const applyOutputDefaults = (
|
|
|
1452
1912
|
if (tp) {
|
|
1453
1913
|
if (tp.global) return "global";
|
|
1454
1914
|
if (tp.globalThis) return "globalThis";
|
|
1455
|
-
//
|
|
1456
|
-
|
|
1915
|
+
// Universal target (web + node) with no reported accessor: `globalThis`
|
|
1916
|
+
// is the only one defined everywhere (`null` = mixed support → `self`).
|
|
1917
|
+
if (tp.web === null && tp.node === null && tp.globalThis === undefined) {
|
|
1918
|
+
return "globalThis";
|
|
1919
|
+
}
|
|
1457
1920
|
}
|
|
1458
1921
|
return "self";
|
|
1459
1922
|
});
|
|
@@ -1520,6 +1983,13 @@ const applyOutputDefaults = (
|
|
|
1520
1983
|
}
|
|
1521
1984
|
return false;
|
|
1522
1985
|
});
|
|
1986
|
+
F(
|
|
1987
|
+
output,
|
|
1988
|
+
"workerChunkFilename",
|
|
1989
|
+
() =>
|
|
1990
|
+
/** @type {NonNullable<Output["workerChunkFilename"]>} */
|
|
1991
|
+
(output.chunkFilename)
|
|
1992
|
+
);
|
|
1523
1993
|
F(output, "workerChunkLoading", () => {
|
|
1524
1994
|
if (tp) {
|
|
1525
1995
|
switch (output.chunkFormat) {
|
|
@@ -1576,7 +2046,9 @@ const applyOutputDefaults = (
|
|
|
1576
2046
|
D(
|
|
1577
2047
|
output,
|
|
1578
2048
|
"hotUpdateMainFilename",
|
|
1579
|
-
|
|
2049
|
+
// Only `chunkLoading: "import"` loads the manifest via `import()` (needs an
|
|
2050
|
+
// `export default` ES module); every other loader fetches it as raw JSON.
|
|
2051
|
+
`[runtime].[fullhash].hot-update.${output.chunkLoading === "import" ? "json.mjs" : "json"}`
|
|
1580
2052
|
);
|
|
1581
2053
|
D(output, "crossOriginLoading", false);
|
|
1582
2054
|
F(output, "scriptType", () => (output.module ? "module" : false));
|
|
@@ -1601,6 +2073,7 @@ const applyOutputDefaults = (
|
|
|
1601
2073
|
D(output, "hashDigestLength", futureDefaults ? 16 : 20);
|
|
1602
2074
|
D(output, "strictModuleErrorHandling", false);
|
|
1603
2075
|
D(output, "strictModuleExceptionHandling", false);
|
|
2076
|
+
F(output, "strictModuleResolution", () => development);
|
|
1604
2077
|
|
|
1605
2078
|
const { trustedTypes } = output;
|
|
1606
2079
|
if (trustedTypes) {
|
|
@@ -1615,6 +2088,7 @@ const applyOutputDefaults = (
|
|
|
1615
2088
|
}
|
|
1616
2089
|
|
|
1617
2090
|
/**
|
|
2091
|
+
* Processes the provided fn.
|
|
1618
2092
|
* @param {(entryDescription: EntryDescription) => void} fn iterator
|
|
1619
2093
|
* @returns {void}
|
|
1620
2094
|
*/
|
|
@@ -1673,6 +2147,7 @@ const applyOutputDefaults = (
|
|
|
1673
2147
|
};
|
|
1674
2148
|
|
|
1675
2149
|
/**
|
|
2150
|
+
* Apply externals presets defaults.
|
|
1676
2151
|
* @param {ExternalsPresets} externalsPresets options
|
|
1677
2152
|
* @param {object} options options
|
|
1678
2153
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -1685,6 +2160,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1685
2160
|
{ targetProperties, buildHttp, outputModule }
|
|
1686
2161
|
) => {
|
|
1687
2162
|
/**
|
|
2163
|
+
* Checks whether this object is universal.
|
|
1688
2164
|
* @param {keyof TargetProperties} key a key
|
|
1689
2165
|
* @returns {boolean} true when target is universal, otherwise false
|
|
1690
2166
|
*/
|
|
@@ -1705,7 +2181,25 @@ const applyExternalsPresetsDefaults = (
|
|
|
1705
2181
|
externalsPresets,
|
|
1706
2182
|
"node",
|
|
1707
2183
|
/** @type {boolean | undefined} */
|
|
1708
|
-
(
|
|
2184
|
+
(
|
|
2185
|
+
targetProperties &&
|
|
2186
|
+
((targetProperties.node &&
|
|
2187
|
+
!targetProperties.deno &&
|
|
2188
|
+
!targetProperties.bun) ||
|
|
2189
|
+
isUniversal("node"))
|
|
2190
|
+
)
|
|
2191
|
+
);
|
|
2192
|
+
D(
|
|
2193
|
+
externalsPresets,
|
|
2194
|
+
"deno",
|
|
2195
|
+
/** @type {boolean | undefined} */
|
|
2196
|
+
(Boolean(targetProperties && targetProperties.deno))
|
|
2197
|
+
);
|
|
2198
|
+
D(
|
|
2199
|
+
externalsPresets,
|
|
2200
|
+
"bun",
|
|
2201
|
+
/** @type {boolean | undefined} */
|
|
2202
|
+
(Boolean(targetProperties && targetProperties.bun))
|
|
1709
2203
|
);
|
|
1710
2204
|
D(
|
|
1711
2205
|
externalsPresets,
|
|
@@ -1752,6 +2246,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1752
2246
|
};
|
|
1753
2247
|
|
|
1754
2248
|
/**
|
|
2249
|
+
* Apply loader defaults.
|
|
1755
2250
|
* @param {Loader} loader options
|
|
1756
2251
|
* @param {object} options options
|
|
1757
2252
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -1768,6 +2263,8 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
|
|
|
1768
2263
|
return "electron";
|
|
1769
2264
|
}
|
|
1770
2265
|
if (targetProperties.nwjs) return "nwjs";
|
|
2266
|
+
if (targetProperties.deno) return "deno";
|
|
2267
|
+
if (targetProperties.bun) return "bun";
|
|
1771
2268
|
if (targetProperties.node) return "node";
|
|
1772
2269
|
if (targetProperties.web) return "web";
|
|
1773
2270
|
}
|
|
@@ -1776,6 +2273,7 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
|
|
|
1776
2273
|
};
|
|
1777
2274
|
|
|
1778
2275
|
/**
|
|
2276
|
+
* Apply node defaults.
|
|
1779
2277
|
* @param {WebpackNode} node options
|
|
1780
2278
|
* @param {object} options options
|
|
1781
2279
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -1821,6 +2319,7 @@ const applyNodeDefaults = (
|
|
|
1821
2319
|
};
|
|
1822
2320
|
|
|
1823
2321
|
/**
|
|
2322
|
+
* Apply performance defaults.
|
|
1824
2323
|
* @param {Performance} performance options
|
|
1825
2324
|
* @param {object} options options
|
|
1826
2325
|
* @param {boolean} options.production is production
|
|
@@ -1834,6 +2333,7 @@ const applyPerformanceDefaults = (performance, { production }) => {
|
|
|
1834
2333
|
};
|
|
1835
2334
|
|
|
1836
2335
|
/**
|
|
2336
|
+
* Apply optimization defaults.
|
|
1837
2337
|
* @param {Optimization} optimization options
|
|
1838
2338
|
* @param {object} options options
|
|
1839
2339
|
* @param {boolean} options.production is production
|
|
@@ -1864,6 +2364,7 @@ const applyOptimizationDefaults = (
|
|
|
1864
2364
|
D(optimization, "providedExports", true);
|
|
1865
2365
|
D(optimization, "usedExports", production);
|
|
1866
2366
|
D(optimization, "innerGraph", production);
|
|
2367
|
+
D(optimization, "inlineExports", production);
|
|
1867
2368
|
D(optimization, "mangleExports", production);
|
|
1868
2369
|
D(optimization, "concatenateModules", production);
|
|
1869
2370
|
D(optimization, "avoidEntryIife", production);
|
|
@@ -1877,8 +2378,8 @@ const applyOptimizationDefaults = (
|
|
|
1877
2378
|
A(optimization, "minimizer", () => [
|
|
1878
2379
|
{
|
|
1879
2380
|
apply: (compiler) => {
|
|
1880
|
-
// Lazy load the
|
|
1881
|
-
const TerserPlugin = require("
|
|
2381
|
+
// Lazy load the minimizer plugin
|
|
2382
|
+
const TerserPlugin = require("minimizer-webpack-plugin");
|
|
1882
2383
|
|
|
1883
2384
|
new TerserPlugin({
|
|
1884
2385
|
terserOptions: {
|
|
@@ -1931,12 +2432,16 @@ const applyOptimizationDefaults = (
|
|
|
1931
2432
|
};
|
|
1932
2433
|
|
|
1933
2434
|
/**
|
|
2435
|
+
* Gets resolve defaults.
|
|
1934
2436
|
* @param {object} options options
|
|
1935
2437
|
* @param {boolean} options.cache is cache enable
|
|
1936
2438
|
* @param {string} options.context build context
|
|
1937
2439
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
1938
2440
|
* @param {Mode} options.mode mode
|
|
1939
2441
|
* @param {boolean} options.css is css enabled
|
|
2442
|
+
* @param {boolean} options.html is html enabled
|
|
2443
|
+
* @param {boolean} options.htmlFirst whether `.html` should outrank `.js` when resolving (only when html was explicitly enabled)
|
|
2444
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
1940
2445
|
* @returns {ResolveOptions} resolve options
|
|
1941
2446
|
*/
|
|
1942
2447
|
const getResolveDefaults = ({
|
|
@@ -1944,7 +2449,10 @@ const getResolveDefaults = ({
|
|
|
1944
2449
|
context,
|
|
1945
2450
|
targetProperties,
|
|
1946
2451
|
mode,
|
|
1947
|
-
css
|
|
2452
|
+
css,
|
|
2453
|
+
html,
|
|
2454
|
+
htmlFirst,
|
|
2455
|
+
typescript
|
|
1948
2456
|
}) => {
|
|
1949
2457
|
/** @type {string[]} */
|
|
1950
2458
|
const conditions = ["webpack"];
|
|
@@ -1952,6 +2460,8 @@ const getResolveDefaults = ({
|
|
|
1952
2460
|
conditions.push(mode === "development" ? "development" : "production");
|
|
1953
2461
|
|
|
1954
2462
|
if (targetProperties) {
|
|
2463
|
+
if (targetProperties.deno) conditions.push("deno");
|
|
2464
|
+
if (targetProperties.bun) conditions.push("bun");
|
|
1955
2465
|
if (targetProperties.webworker) conditions.push("worker");
|
|
1956
2466
|
if (targetProperties.node) conditions.push("node");
|
|
1957
2467
|
if (targetProperties.web) conditions.push("browser");
|
|
@@ -1959,25 +2469,54 @@ const getResolveDefaults = ({
|
|
|
1959
2469
|
if (targetProperties.nwjs) conditions.push("nwjs");
|
|
1960
2470
|
}
|
|
1961
2471
|
|
|
1962
|
-
const jsExtensions =
|
|
2472
|
+
const jsExtensions = typescript
|
|
2473
|
+
? [".ts", ".js", ".json", ".wasm"]
|
|
2474
|
+
: [".js", ".json", ".wasm"];
|
|
2475
|
+
|
|
2476
|
+
// Explicitly enabling html keeps `.html` ahead of `.js` (html-as-entry feature).
|
|
2477
|
+
// Auto-enabled html/css are lower-priority fallbacks after `.js`, so enabling
|
|
2478
|
+
// them by default never makes `x.html`/`x.css` shadow `x.js`.
|
|
2479
|
+
const esmResolveExtensions = [
|
|
2480
|
+
...(html && htmlFirst ? [".html"] : []),
|
|
2481
|
+
...jsExtensions,
|
|
2482
|
+
...(html && !htmlFirst ? [".html"] : []),
|
|
2483
|
+
...(css ? [".css"] : [])
|
|
2484
|
+
];
|
|
1963
2485
|
|
|
1964
2486
|
const tp = targetProperties;
|
|
1965
2487
|
const browserField =
|
|
1966
2488
|
tp && tp.web && (!tp.node || (tp.electron && tp.electronRenderer));
|
|
1967
2489
|
|
|
2490
|
+
// When `experiments.typescript` is on, also honor the `typescript`
|
|
2491
|
+
// conditional-exports key so monorepo packages can ship .ts sources via
|
|
2492
|
+
// `package.json#exports` — same convention Node.js's amaro uses.
|
|
2493
|
+
const tsConditionPrefix = typescript ? ["typescript"] : [];
|
|
2494
|
+
|
|
1968
2495
|
/** @type {() => ResolveOptions} */
|
|
1969
2496
|
const cjsDeps = () => ({
|
|
1970
2497
|
aliasFields: browserField ? ["browser"] : [],
|
|
1971
2498
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
1972
|
-
conditionNames: [
|
|
2499
|
+
conditionNames: [
|
|
2500
|
+
...tsConditionPrefix,
|
|
2501
|
+
"require",
|
|
2502
|
+
"module-sync",
|
|
2503
|
+
"module",
|
|
2504
|
+
"..."
|
|
2505
|
+
],
|
|
1973
2506
|
extensions: [...jsExtensions]
|
|
1974
2507
|
});
|
|
1975
2508
|
/** @type {() => ResolveOptions} */
|
|
1976
2509
|
const esmDeps = () => ({
|
|
1977
2510
|
aliasFields: browserField ? ["browser"] : [],
|
|
1978
2511
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
1979
|
-
conditionNames: [
|
|
1980
|
-
|
|
2512
|
+
conditionNames: [
|
|
2513
|
+
...tsConditionPrefix,
|
|
2514
|
+
"import",
|
|
2515
|
+
"module-sync",
|
|
2516
|
+
"module",
|
|
2517
|
+
"..."
|
|
2518
|
+
],
|
|
2519
|
+
extensions: [...esmResolveExtensions]
|
|
1981
2520
|
});
|
|
1982
2521
|
|
|
1983
2522
|
/** @type {() => ResolveOptions} */
|
|
@@ -2057,10 +2596,20 @@ const getResolveDefaults = ({
|
|
|
2057
2596
|
cssResolveOptions;
|
|
2058
2597
|
}
|
|
2059
2598
|
|
|
2599
|
+
if (typescript) {
|
|
2600
|
+
resolveOptions.tsconfig = true;
|
|
2601
|
+
resolveOptions.extensionAlias = {
|
|
2602
|
+
".js": [".js", ".ts"],
|
|
2603
|
+
".cjs": [".cjs", ".cts"],
|
|
2604
|
+
".mjs": [".mjs", ".mts"]
|
|
2605
|
+
};
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2060
2608
|
return resolveOptions;
|
|
2061
2609
|
};
|
|
2062
2610
|
|
|
2063
2611
|
/**
|
|
2612
|
+
* Gets resolve loader defaults.
|
|
2064
2613
|
* @param {object} options options
|
|
2065
2614
|
* @param {boolean} options.cache is cache enable
|
|
2066
2615
|
* @returns {ResolveOptions} resolve options
|
|
@@ -2080,6 +2629,7 @@ const getResolveLoaderDefaults = ({ cache }) => {
|
|
|
2080
2629
|
};
|
|
2081
2630
|
|
|
2082
2631
|
/**
|
|
2632
|
+
* Apply infrastructure logging defaults.
|
|
2083
2633
|
* @param {InfrastructureLogging} infrastructureLogging options
|
|
2084
2634
|
* @returns {void}
|
|
2085
2635
|
*/
|