webpack 5.97.1 → 5.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -5,60 +5,63 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const {
|
|
8
|
+
const { SyncHook, SyncWaterfallHook } = require("tapable");
|
|
9
9
|
const {
|
|
10
|
+
CachedSource,
|
|
10
11
|
ConcatSource,
|
|
11
12
|
PrefixSource,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
RawSource
|
|
13
|
+
RawSource,
|
|
14
|
+
ReplaceSource
|
|
15
15
|
} = require("webpack-sources");
|
|
16
16
|
const Compilation = require("../Compilation");
|
|
17
17
|
const CssModule = require("../CssModule");
|
|
18
18
|
const { tryRunOrWebpackError } = require("../HookWebpackError");
|
|
19
19
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
|
20
|
+
const { CSS_IMPORT_TYPE, CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
20
21
|
const {
|
|
21
22
|
CSS_MODULE_TYPE,
|
|
23
|
+
CSS_MODULE_TYPE_AUTO,
|
|
22
24
|
CSS_MODULE_TYPE_GLOBAL,
|
|
23
|
-
CSS_MODULE_TYPE_MODULE
|
|
24
|
-
CSS_MODULE_TYPE_AUTO
|
|
25
|
+
CSS_MODULE_TYPE_MODULE
|
|
25
26
|
} = require("../ModuleTypeConstants");
|
|
27
|
+
const NormalModule = require("../NormalModule");
|
|
26
28
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
27
|
-
const SelfModuleFactory = require("../SelfModuleFactory");
|
|
28
29
|
const Template = require("../Template");
|
|
29
30
|
const WebpackError = require("../WebpackError");
|
|
30
31
|
const CssIcssExportDependency = require("../dependencies/CssIcssExportDependency");
|
|
31
32
|
const CssIcssImportDependency = require("../dependencies/CssIcssImportDependency");
|
|
32
33
|
const CssIcssSymbolDependency = require("../dependencies/CssIcssSymbolDependency");
|
|
33
34
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
34
|
-
const CssLocalIdentifierDependency = require("../dependencies/CssLocalIdentifierDependency");
|
|
35
|
-
const CssSelfLocalIdentifierDependency = require("../dependencies/CssSelfLocalIdentifierDependency");
|
|
36
35
|
const CssUrlDependency = require("../dependencies/CssUrlDependency");
|
|
37
36
|
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
|
38
37
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
39
|
-
const {
|
|
38
|
+
const { compareModulesByIdOrIdentifier } = require("../util/comparators");
|
|
40
39
|
const createSchemaValidation = require("../util/create-schema-validation");
|
|
41
40
|
const createHash = require("../util/createHash");
|
|
42
41
|
const { getUndoPath } = require("../util/identifier");
|
|
43
42
|
const memoize = require("../util/memoize");
|
|
44
43
|
const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
|
|
44
|
+
const removeBOM = require("../util/removeBOM");
|
|
45
45
|
const CssGenerator = require("./CssGenerator");
|
|
46
|
+
const CssMergeStyleSheetsRuntimeModule = require("./CssMergeStyleSheetsRuntimeModule");
|
|
46
47
|
const CssParser = require("./CssParser");
|
|
47
48
|
|
|
48
49
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
49
|
-
/** @typedef {import("
|
|
50
|
+
/** @typedef {import("../config/defaults").OutputNormalizedWithDefaults} OutputOptions */
|
|
50
51
|
/** @typedef {import("../Chunk")} Chunk */
|
|
51
52
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
52
53
|
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
|
53
54
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
54
55
|
/** @typedef {import("../Compiler")} Compiler */
|
|
55
56
|
/** @typedef {import("../CssModule").Inheritance} Inheritance */
|
|
57
|
+
/** @typedef {import("../CssModule").CSSModuleCreateData} CSSModuleCreateData */
|
|
56
58
|
/** @typedef {import("../Module")} Module */
|
|
59
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
60
|
+
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
57
61
|
/** @typedef {import("../Template").RuntimeTemplate} RuntimeTemplate */
|
|
58
62
|
/** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
|
|
59
63
|
/** @typedef {import("../util/Hash")} Hash */
|
|
60
|
-
/** @typedef {import("../
|
|
61
|
-
/** @typedef {import("../util/memoize")} Memoize */
|
|
64
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
62
65
|
|
|
63
66
|
/**
|
|
64
67
|
* @typedef {object} RenderContext
|
|
@@ -73,11 +76,13 @@ const CssParser = require("./CssParser");
|
|
|
73
76
|
|
|
74
77
|
/**
|
|
75
78
|
* @typedef {object} ChunkRenderContext
|
|
76
|
-
* @property {Chunk} chunk the chunk
|
|
77
|
-
* @property {ChunkGraph} chunkGraph the chunk graph
|
|
78
|
-
* @property {CodeGenerationResults} codeGenerationResults results of code generation
|
|
79
|
+
* @property {Chunk=} chunk the chunk
|
|
80
|
+
* @property {ChunkGraph=} chunkGraph the chunk graph
|
|
81
|
+
* @property {CodeGenerationResults=} codeGenerationResults results of code generation
|
|
79
82
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
80
83
|
* @property {string} undoPath undo path to css file
|
|
84
|
+
* @property {WeakMap<Source, ModuleFactoryCacheEntry>} moduleFactoryCache moduleFactoryCache
|
|
85
|
+
* @property {Source} moduleSourceContent content
|
|
81
86
|
*/
|
|
82
87
|
|
|
83
88
|
/**
|
|
@@ -86,16 +91,24 @@ const CssParser = require("./CssParser");
|
|
|
86
91
|
* @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
|
|
87
92
|
*/
|
|
88
93
|
|
|
94
|
+
/**
|
|
95
|
+
* @typedef {object} ModuleFactoryCacheEntry
|
|
96
|
+
* @property {string} undoPath - The undo path to the CSS file
|
|
97
|
+
* @property {Inheritance} inheritance - The inheritance chain
|
|
98
|
+
* @property {CachedSource} source - The cached source
|
|
99
|
+
*/
|
|
100
|
+
|
|
89
101
|
const getCssLoadingRuntimeModule = memoize(() =>
|
|
90
102
|
require("./CssLoadingRuntimeModule")
|
|
91
103
|
);
|
|
92
104
|
|
|
93
105
|
/**
|
|
94
106
|
* @param {string} name name
|
|
95
|
-
* @returns {{oneOf: [{$ref: string}], definitions:
|
|
107
|
+
* @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema
|
|
96
108
|
*/
|
|
97
|
-
const getSchema = name => {
|
|
109
|
+
const getSchema = (name) => {
|
|
98
110
|
const { definitions } = require("../../schemas/WebpackOptions.json");
|
|
111
|
+
|
|
99
112
|
return {
|
|
100
113
|
definitions,
|
|
101
114
|
oneOf: [{ $ref: `#/definitions/${name}` }]
|
|
@@ -108,23 +121,23 @@ const generatorValidationOptions = {
|
|
|
108
121
|
};
|
|
109
122
|
const validateGeneratorOptions = {
|
|
110
123
|
css: createSchemaValidation(
|
|
111
|
-
require("../../schemas/plugins/css/CssGeneratorOptions.check
|
|
124
|
+
require("../../schemas/plugins/css/CssGeneratorOptions.check"),
|
|
112
125
|
() => getSchema("CssGeneratorOptions"),
|
|
113
126
|
generatorValidationOptions
|
|
114
127
|
),
|
|
115
128
|
"css/auto": createSchemaValidation(
|
|
116
|
-
require("../../schemas/plugins/css/
|
|
117
|
-
() => getSchema("
|
|
129
|
+
require("../../schemas/plugins/css/CssModuleGeneratorOptions.check"),
|
|
130
|
+
() => getSchema("CssModuleGeneratorOptions"),
|
|
118
131
|
generatorValidationOptions
|
|
119
132
|
),
|
|
120
133
|
"css/module": createSchemaValidation(
|
|
121
|
-
require("../../schemas/plugins/css/CssModuleGeneratorOptions.check
|
|
134
|
+
require("../../schemas/plugins/css/CssModuleGeneratorOptions.check"),
|
|
122
135
|
() => getSchema("CssModuleGeneratorOptions"),
|
|
123
136
|
generatorValidationOptions
|
|
124
137
|
),
|
|
125
138
|
"css/global": createSchemaValidation(
|
|
126
|
-
require("../../schemas/plugins/css/
|
|
127
|
-
() => getSchema("
|
|
139
|
+
require("../../schemas/plugins/css/CssModuleGeneratorOptions.check"),
|
|
140
|
+
() => getSchema("CssModuleGeneratorOptions"),
|
|
128
141
|
generatorValidationOptions
|
|
129
142
|
)
|
|
130
143
|
};
|
|
@@ -135,23 +148,23 @@ const parserValidationOptions = {
|
|
|
135
148
|
};
|
|
136
149
|
const validateParserOptions = {
|
|
137
150
|
css: createSchemaValidation(
|
|
138
|
-
require("../../schemas/plugins/css/CssParserOptions.check
|
|
151
|
+
require("../../schemas/plugins/css/CssParserOptions.check"),
|
|
139
152
|
() => getSchema("CssParserOptions"),
|
|
140
153
|
parserValidationOptions
|
|
141
154
|
),
|
|
142
155
|
"css/auto": createSchemaValidation(
|
|
143
|
-
require("../../schemas/plugins/css/
|
|
144
|
-
() => getSchema("
|
|
156
|
+
require("../../schemas/plugins/css/CssModuleParserOptions.check"),
|
|
157
|
+
() => getSchema("CssModuleParserOptions"),
|
|
145
158
|
parserValidationOptions
|
|
146
159
|
),
|
|
147
160
|
"css/module": createSchemaValidation(
|
|
148
|
-
require("../../schemas/plugins/css/CssModuleParserOptions.check
|
|
161
|
+
require("../../schemas/plugins/css/CssModuleParserOptions.check"),
|
|
149
162
|
() => getSchema("CssModuleParserOptions"),
|
|
150
163
|
parserValidationOptions
|
|
151
164
|
),
|
|
152
165
|
"css/global": createSchemaValidation(
|
|
153
|
-
require("../../schemas/plugins/css/
|
|
154
|
-
() => getSchema("
|
|
166
|
+
require("../../schemas/plugins/css/CssModuleParserOptions.check"),
|
|
167
|
+
() => getSchema("CssModuleParserOptions"),
|
|
155
168
|
parserValidationOptions
|
|
156
169
|
)
|
|
157
170
|
};
|
|
@@ -188,7 +201,7 @@ class CssModulesPlugin {
|
|
|
188
201
|
}
|
|
189
202
|
|
|
190
203
|
constructor() {
|
|
191
|
-
/** @type {WeakMap<Source,
|
|
204
|
+
/** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
|
|
192
205
|
this._moduleFactoryCache = new WeakMap();
|
|
193
206
|
}
|
|
194
207
|
|
|
@@ -202,7 +215,6 @@ class CssModulesPlugin {
|
|
|
202
215
|
PLUGIN_NAME,
|
|
203
216
|
(compilation, { normalModuleFactory }) => {
|
|
204
217
|
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
205
|
-
const selfFactory = new SelfModuleFactory(compilation.moduleGraph);
|
|
206
218
|
compilation.dependencyFactories.set(
|
|
207
219
|
CssImportDependency,
|
|
208
220
|
normalModuleFactory
|
|
@@ -219,18 +231,6 @@ class CssModulesPlugin {
|
|
|
219
231
|
CssUrlDependency,
|
|
220
232
|
new CssUrlDependency.Template()
|
|
221
233
|
);
|
|
222
|
-
compilation.dependencyTemplates.set(
|
|
223
|
-
CssLocalIdentifierDependency,
|
|
224
|
-
new CssLocalIdentifierDependency.Template()
|
|
225
|
-
);
|
|
226
|
-
compilation.dependencyFactories.set(
|
|
227
|
-
CssSelfLocalIdentifierDependency,
|
|
228
|
-
selfFactory
|
|
229
|
-
);
|
|
230
|
-
compilation.dependencyTemplates.set(
|
|
231
|
-
CssSelfLocalIdentifierDependency,
|
|
232
|
-
new CssSelfLocalIdentifierDependency.Template()
|
|
233
|
-
);
|
|
234
234
|
compilation.dependencyFactories.set(
|
|
235
235
|
CssIcssImportDependency,
|
|
236
236
|
normalModuleFactory
|
|
@@ -259,46 +259,44 @@ class CssModulesPlugin {
|
|
|
259
259
|
]) {
|
|
260
260
|
normalModuleFactory.hooks.createParser
|
|
261
261
|
.for(type)
|
|
262
|
-
.tap(PLUGIN_NAME, parserOptions => {
|
|
263
|
-
validateParserOptions[type](parserOptions);
|
|
264
|
-
const { url, import: importOption, namedExports } = parserOptions;
|
|
265
|
-
|
|
262
|
+
.tap(PLUGIN_NAME, (parserOptions) => {
|
|
266
263
|
switch (type) {
|
|
267
264
|
case CSS_MODULE_TYPE:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
namedExports
|
|
272
|
-
});
|
|
265
|
+
validateParserOptions[type](parserOptions);
|
|
266
|
+
|
|
267
|
+
return new CssParser(parserOptions);
|
|
273
268
|
case CSS_MODULE_TYPE_GLOBAL:
|
|
269
|
+
validateParserOptions[type](parserOptions);
|
|
270
|
+
|
|
274
271
|
return new CssParser({
|
|
275
272
|
defaultMode: "global",
|
|
276
|
-
|
|
277
|
-
url,
|
|
278
|
-
namedExports
|
|
273
|
+
...parserOptions
|
|
279
274
|
});
|
|
280
275
|
case CSS_MODULE_TYPE_MODULE:
|
|
276
|
+
validateParserOptions[type](parserOptions);
|
|
277
|
+
|
|
281
278
|
return new CssParser({
|
|
282
279
|
defaultMode: "local",
|
|
283
|
-
|
|
284
|
-
url,
|
|
285
|
-
namedExports
|
|
280
|
+
...parserOptions
|
|
286
281
|
});
|
|
287
282
|
case CSS_MODULE_TYPE_AUTO:
|
|
283
|
+
validateParserOptions[type](parserOptions);
|
|
284
|
+
|
|
288
285
|
return new CssParser({
|
|
289
286
|
defaultMode: "auto",
|
|
290
|
-
|
|
291
|
-
url,
|
|
292
|
-
namedExports
|
|
287
|
+
...parserOptions
|
|
293
288
|
});
|
|
294
289
|
}
|
|
295
290
|
});
|
|
296
291
|
normalModuleFactory.hooks.createGenerator
|
|
297
292
|
.for(type)
|
|
298
|
-
.tap(PLUGIN_NAME, generatorOptions => {
|
|
293
|
+
.tap(PLUGIN_NAME, (generatorOptions) => {
|
|
299
294
|
validateGeneratorOptions[type](generatorOptions);
|
|
300
295
|
|
|
301
|
-
return new CssGenerator(
|
|
296
|
+
return new CssGenerator(
|
|
297
|
+
generatorOptions,
|
|
298
|
+
compilation.moduleGraph
|
|
299
|
+
);
|
|
302
300
|
});
|
|
303
301
|
normalModuleFactory.hooks.createModuleClass
|
|
304
302
|
.for(type)
|
|
@@ -340,39 +338,65 @@ class CssModulesPlugin {
|
|
|
340
338
|
inheritance.push(...parent.inheritance);
|
|
341
339
|
}
|
|
342
340
|
|
|
343
|
-
return new CssModule(
|
|
341
|
+
return new CssModule(
|
|
342
|
+
/** @type {CSSModuleCreateData} */
|
|
343
|
+
({
|
|
344
|
+
...createData,
|
|
345
|
+
cssLayer: dependency.layer,
|
|
346
|
+
supports: dependency.supports,
|
|
347
|
+
media: dependency.media,
|
|
348
|
+
inheritance
|
|
349
|
+
})
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
return new CssModule(
|
|
354
|
+
/** @type {CSSModuleCreateData} */
|
|
355
|
+
({
|
|
344
356
|
...createData,
|
|
345
357
|
cssLayer: dependency.layer,
|
|
346
358
|
supports: dependency.supports,
|
|
347
|
-
media: dependency.media
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
return new CssModule({
|
|
353
|
-
...createData,
|
|
354
|
-
cssLayer: dependency.layer,
|
|
355
|
-
supports: dependency.supports,
|
|
356
|
-
media: dependency.media
|
|
357
|
-
});
|
|
359
|
+
media: dependency.media
|
|
360
|
+
})
|
|
361
|
+
);
|
|
358
362
|
}
|
|
359
363
|
}
|
|
360
364
|
|
|
361
|
-
return new CssModule(
|
|
365
|
+
return new CssModule(
|
|
366
|
+
/** @type {CSSModuleCreateData} */
|
|
367
|
+
(createData)
|
|
368
|
+
);
|
|
362
369
|
});
|
|
370
|
+
|
|
371
|
+
NormalModule.getCompilationHooks(compilation).processResult.tap(
|
|
372
|
+
PLUGIN_NAME,
|
|
373
|
+
(result, module) => {
|
|
374
|
+
if (module.type === type) {
|
|
375
|
+
const [source, ...rest] = result;
|
|
376
|
+
|
|
377
|
+
return [removeBOM(source), ...rest];
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
return result;
|
|
381
|
+
}
|
|
382
|
+
);
|
|
363
383
|
}
|
|
364
384
|
|
|
365
385
|
JavascriptModulesPlugin.getCompilationHooks(
|
|
366
386
|
compilation
|
|
367
387
|
).renderModuleContent.tap(PLUGIN_NAME, (source, module) => {
|
|
368
388
|
if (module instanceof CssModule && module.hot) {
|
|
369
|
-
const
|
|
389
|
+
const cssData = /** @type {BuildInfo} */ (module.buildInfo).cssData;
|
|
390
|
+
if (!cssData) {
|
|
391
|
+
return source;
|
|
392
|
+
}
|
|
393
|
+
const exports = cssData.exports;
|
|
370
394
|
const stringifiedExports = JSON.stringify(
|
|
371
395
|
JSON.stringify(
|
|
372
|
-
|
|
396
|
+
[...exports].reduce((obj, [key, value]) => {
|
|
373
397
|
obj[key] = value;
|
|
374
398
|
return obj;
|
|
375
|
-
}, {})
|
|
399
|
+
}, /** @type {Record<string, string>} */ ({}))
|
|
376
400
|
)
|
|
377
401
|
);
|
|
378
402
|
|
|
@@ -390,6 +414,8 @@ class CssModulesPlugin {
|
|
|
390
414
|
|
|
391
415
|
return new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
392
416
|
}
|
|
417
|
+
|
|
418
|
+
return source;
|
|
393
419
|
});
|
|
394
420
|
const orderedCssModulesPerChunk = new WeakMap();
|
|
395
421
|
compilation.hooks.afterCodeGeneration.tap(PLUGIN_NAME, () => {
|
|
@@ -406,10 +432,9 @@ class CssModulesPlugin {
|
|
|
406
432
|
compilation.hooks.chunkHash.tap(PLUGIN_NAME, (chunk, hash, context) => {
|
|
407
433
|
hooks.chunkHash.call(chunk, hash, context);
|
|
408
434
|
});
|
|
409
|
-
compilation.hooks.contentHash.tap(PLUGIN_NAME, chunk => {
|
|
435
|
+
compilation.hooks.contentHash.tap(PLUGIN_NAME, (chunk) => {
|
|
410
436
|
const {
|
|
411
437
|
chunkGraph,
|
|
412
|
-
codeGenerationResults,
|
|
413
438
|
moduleGraph,
|
|
414
439
|
runtimeTemplate,
|
|
415
440
|
outputOptions: {
|
|
@@ -419,8 +444,11 @@ class CssModulesPlugin {
|
|
|
419
444
|
hashFunction
|
|
420
445
|
}
|
|
421
446
|
} = compilation;
|
|
422
|
-
const hash = createHash(
|
|
447
|
+
const hash = createHash(hashFunction);
|
|
423
448
|
if (hashSalt) hash.update(hashSalt);
|
|
449
|
+
const codeGenerationResults =
|
|
450
|
+
/** @type {CodeGenerationResults} */
|
|
451
|
+
(compilation.codeGenerationResults);
|
|
424
452
|
hooks.chunkHash.call(chunk, hash, {
|
|
425
453
|
chunkGraph,
|
|
426
454
|
codeGenerationResults,
|
|
@@ -433,12 +461,8 @@ class CssModulesPlugin {
|
|
|
433
461
|
hash.update(chunkGraph.getModuleHash(module, chunk.runtime));
|
|
434
462
|
}
|
|
435
463
|
}
|
|
436
|
-
const digest =
|
|
437
|
-
chunk.contentHash.css = nonNumericOnlyHash(
|
|
438
|
-
digest,
|
|
439
|
-
/** @type {number} */
|
|
440
|
-
(hashDigestLength)
|
|
441
|
-
);
|
|
464
|
+
const digest = hash.digest(hashDigest);
|
|
465
|
+
chunk.contentHash.css = nonNumericOnlyHash(digest, hashDigestLength);
|
|
442
466
|
});
|
|
443
467
|
compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
|
|
444
468
|
const { chunkGraph } = compilation;
|
|
@@ -464,8 +488,7 @@ class CssModulesPlugin {
|
|
|
464
488
|
);
|
|
465
489
|
const undoPath = getUndoPath(
|
|
466
490
|
filename,
|
|
467
|
-
|
|
468
|
-
(compilation.outputOptions.path),
|
|
491
|
+
compilation.outputOptions.path,
|
|
469
492
|
false
|
|
470
493
|
);
|
|
471
494
|
result.push({
|
|
@@ -495,7 +518,7 @@ class CssModulesPlugin {
|
|
|
495
518
|
* @param {Chunk} chunk the chunk
|
|
496
519
|
* @returns {boolean} true, when enabled
|
|
497
520
|
*/
|
|
498
|
-
const isEnabledForChunk = chunk => {
|
|
521
|
+
const isEnabledForChunk = (chunk) => {
|
|
499
522
|
const options = chunk.getEntryOptions();
|
|
500
523
|
const chunkLoading =
|
|
501
524
|
options && options.chunkLoading !== undefined
|
|
@@ -506,15 +529,13 @@ class CssModulesPlugin {
|
|
|
506
529
|
const onceForChunkSet = new WeakSet();
|
|
507
530
|
/**
|
|
508
531
|
* @param {Chunk} chunk chunk to check
|
|
509
|
-
* @param {
|
|
532
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
510
533
|
*/
|
|
511
534
|
const handler = (chunk, set) => {
|
|
512
535
|
if (onceForChunkSet.has(chunk)) return;
|
|
513
536
|
onceForChunkSet.add(chunk);
|
|
514
537
|
if (!isEnabledForChunk(chunk)) return;
|
|
515
538
|
|
|
516
|
-
set.add(RuntimeGlobals.makeNamespaceObject);
|
|
517
|
-
|
|
518
539
|
const CssLoadingRuntimeModule = getCssLoadingRuntimeModule();
|
|
519
540
|
compilation.addRuntimeModule(chunk, new CssLoadingRuntimeModule(set));
|
|
520
541
|
};
|
|
@@ -528,7 +549,7 @@ class CssModulesPlugin {
|
|
|
528
549
|
if (
|
|
529
550
|
!chunkGraph.hasModuleInGraph(
|
|
530
551
|
chunk,
|
|
531
|
-
m =>
|
|
552
|
+
(m) =>
|
|
532
553
|
m.type === CSS_MODULE_TYPE ||
|
|
533
554
|
m.type === CSS_MODULE_TYPE_GLOBAL ||
|
|
534
555
|
m.type === CSS_MODULE_TYPE_MODULE ||
|
|
@@ -549,7 +570,7 @@ class CssModulesPlugin {
|
|
|
549
570
|
if (
|
|
550
571
|
!chunkGraph.hasModuleInGraph(
|
|
551
572
|
chunk,
|
|
552
|
-
m =>
|
|
573
|
+
(m) =>
|
|
553
574
|
m.type === CSS_MODULE_TYPE ||
|
|
554
575
|
m.type === CSS_MODULE_TYPE_GLOBAL ||
|
|
555
576
|
m.type === CSS_MODULE_TYPE_MODULE ||
|
|
@@ -561,6 +582,15 @@ class CssModulesPlugin {
|
|
|
561
582
|
set.add(RuntimeGlobals.publicPath);
|
|
562
583
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
|
563
584
|
});
|
|
585
|
+
|
|
586
|
+
compilation.hooks.runtimeRequirementInTree
|
|
587
|
+
.for(RuntimeGlobals.cssMergeStyleSheets)
|
|
588
|
+
.tap(PLUGIN_NAME, (chunk) => {
|
|
589
|
+
compilation.addRuntimeModule(
|
|
590
|
+
chunk,
|
|
591
|
+
new CssMergeStyleSheetsRuntimeModule()
|
|
592
|
+
);
|
|
593
|
+
});
|
|
564
594
|
}
|
|
565
595
|
);
|
|
566
596
|
}
|
|
@@ -579,24 +609,32 @@ class CssModulesPlugin {
|
|
|
579
609
|
|
|
580
610
|
// Get ordered list of modules per chunk group
|
|
581
611
|
// Lists are in reverse order to allow to use Array.pop()
|
|
582
|
-
const modulesByChunkGroup = Array.from(
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
(
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
612
|
+
const modulesByChunkGroup = Array.from(
|
|
613
|
+
chunk.groupsIterable,
|
|
614
|
+
(chunkGroup) => {
|
|
615
|
+
const sortedModules = modulesList
|
|
616
|
+
.map((module) => ({
|
|
617
|
+
module,
|
|
618
|
+
index: chunkGroup.getModulePostOrderIndex(module)
|
|
619
|
+
}))
|
|
620
|
+
.filter((item) => item.index !== undefined)
|
|
621
|
+
.sort(
|
|
622
|
+
(a, b) =>
|
|
623
|
+
/** @type {number} */ (b.index) - /** @type {number} */ (a.index)
|
|
624
|
+
)
|
|
625
|
+
.map((item) => item.module);
|
|
626
|
+
|
|
627
|
+
return { list: sortedModules, set: new Set(sortedModules) };
|
|
628
|
+
}
|
|
629
|
+
);
|
|
630
|
+
|
|
631
|
+
if (modulesByChunkGroup.length === 1) {
|
|
599
632
|
return modulesByChunkGroup[0].list.reverse();
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
const boundCompareModulesByIdOrIdentifier = compareModulesByIdOrIdentifier(
|
|
636
|
+
compilation.chunkGraph
|
|
637
|
+
);
|
|
600
638
|
|
|
601
639
|
/**
|
|
602
640
|
* @param {{ list: Module[] }} a a
|
|
@@ -608,7 +646,10 @@ class CssModulesPlugin {
|
|
|
608
646
|
return b.length === 0 ? 0 : 1;
|
|
609
647
|
}
|
|
610
648
|
if (b.length === 0) return -1;
|
|
611
|
-
return
|
|
649
|
+
return boundCompareModulesByIdOrIdentifier(
|
|
650
|
+
a[a.length - 1],
|
|
651
|
+
b[b.length - 1]
|
|
652
|
+
);
|
|
612
653
|
};
|
|
613
654
|
|
|
614
655
|
modulesByChunkGroup.sort(compareModuleLists);
|
|
@@ -664,8 +705,9 @@ class CssModulesPlugin {
|
|
|
664
705
|
// Remove the selected module from all lists
|
|
665
706
|
for (const { list, set } of modulesByChunkGroup) {
|
|
666
707
|
const lastModule = list[list.length - 1];
|
|
667
|
-
if (lastModule === selectedModule)
|
|
668
|
-
|
|
708
|
+
if (lastModule === selectedModule) {
|
|
709
|
+
list.pop();
|
|
710
|
+
} else if (hasFailed && set.has(selectedModule)) {
|
|
669
711
|
const idx = list.indexOf(selectedModule);
|
|
670
712
|
if (idx >= 0) list.splice(idx, 1);
|
|
671
713
|
}
|
|
@@ -689,8 +731,8 @@ class CssModulesPlugin {
|
|
|
689
731
|
(
|
|
690
732
|
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
691
733
|
chunk,
|
|
692
|
-
|
|
693
|
-
|
|
734
|
+
CSS_IMPORT_TYPE,
|
|
735
|
+
compareModulesByIdOrIdentifier(chunkGraph)
|
|
694
736
|
)
|
|
695
737
|
),
|
|
696
738
|
compilation
|
|
@@ -701,8 +743,8 @@ class CssModulesPlugin {
|
|
|
701
743
|
(
|
|
702
744
|
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
703
745
|
chunk,
|
|
704
|
-
|
|
705
|
-
|
|
746
|
+
CSS_TYPE,
|
|
747
|
+
compareModulesByIdOrIdentifier(chunkGraph)
|
|
706
748
|
)
|
|
707
749
|
),
|
|
708
750
|
compilation
|
|
@@ -711,21 +753,14 @@ class CssModulesPlugin {
|
|
|
711
753
|
}
|
|
712
754
|
|
|
713
755
|
/**
|
|
714
|
-
* @param {CssModule}
|
|
756
|
+
* @param {CssModule} module css module
|
|
715
757
|
* @param {ChunkRenderContext} renderContext options object
|
|
716
758
|
* @param {CompilationHooks} hooks hooks
|
|
717
|
-
* @returns {Source} css module source
|
|
759
|
+
* @returns {Source | null} css module source
|
|
718
760
|
*/
|
|
719
|
-
renderModule(module, renderContext, hooks) {
|
|
720
|
-
const {
|
|
721
|
-
const
|
|
722
|
-
const moduleSourceContent =
|
|
723
|
-
/** @type {Source} */
|
|
724
|
-
(
|
|
725
|
-
codeGenResult.sources.get("css") ||
|
|
726
|
-
codeGenResult.sources.get("css-import")
|
|
727
|
-
);
|
|
728
|
-
const cacheEntry = this._moduleFactoryCache.get(moduleSourceContent);
|
|
761
|
+
static renderModule(module, renderContext, hooks) {
|
|
762
|
+
const { undoPath, moduleFactoryCache, moduleSourceContent } = renderContext;
|
|
763
|
+
const cacheEntry = moduleFactoryCache.get(moduleSourceContent);
|
|
729
764
|
|
|
730
765
|
/** @type {Inheritance} */
|
|
731
766
|
const inheritance = [[module.cssLayer, module.supports, module.media]];
|
|
@@ -747,6 +782,7 @@ class CssModulesPlugin {
|
|
|
747
782
|
) {
|
|
748
783
|
source = cacheEntry.source;
|
|
749
784
|
} else {
|
|
785
|
+
if (!moduleSourceContent) return null;
|
|
750
786
|
const moduleSourceCode =
|
|
751
787
|
/** @type {string} */
|
|
752
788
|
(moduleSourceContent.source());
|
|
@@ -801,7 +837,7 @@ class CssModulesPlugin {
|
|
|
801
837
|
}
|
|
802
838
|
|
|
803
839
|
source = new CachedSource(moduleSource);
|
|
804
|
-
|
|
840
|
+
moduleFactoryCache.set(moduleSourceContent, {
|
|
805
841
|
inheritance,
|
|
806
842
|
undoPath,
|
|
807
843
|
source
|
|
@@ -823,28 +859,39 @@ class CssModulesPlugin {
|
|
|
823
859
|
{
|
|
824
860
|
undoPath,
|
|
825
861
|
chunk,
|
|
826
|
-
chunkGraph,
|
|
827
862
|
codeGenerationResults,
|
|
828
863
|
modules,
|
|
829
|
-
runtimeTemplate
|
|
864
|
+
runtimeTemplate,
|
|
865
|
+
chunkGraph
|
|
830
866
|
},
|
|
831
867
|
hooks
|
|
832
868
|
) {
|
|
833
869
|
const source = new ConcatSource();
|
|
834
870
|
for (const module of modules) {
|
|
835
871
|
try {
|
|
836
|
-
const
|
|
872
|
+
const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
|
|
873
|
+
const moduleSourceContent =
|
|
874
|
+
/** @type {Source} */
|
|
875
|
+
(
|
|
876
|
+
codeGenResult.sources.get(CSS_TYPE) ||
|
|
877
|
+
codeGenResult.sources.get(CSS_IMPORT_TYPE)
|
|
878
|
+
);
|
|
879
|
+
const moduleSource = CssModulesPlugin.renderModule(
|
|
837
880
|
module,
|
|
838
881
|
{
|
|
839
882
|
undoPath,
|
|
840
883
|
chunk,
|
|
841
884
|
chunkGraph,
|
|
842
885
|
codeGenerationResults,
|
|
886
|
+
moduleSourceContent,
|
|
887
|
+
moduleFactoryCache: this._moduleFactoryCache,
|
|
843
888
|
runtimeTemplate
|
|
844
889
|
},
|
|
845
890
|
hooks
|
|
846
891
|
);
|
|
847
|
-
|
|
892
|
+
if (moduleSource) {
|
|
893
|
+
source.add(moduleSource);
|
|
894
|
+
}
|
|
848
895
|
} catch (err) {
|
|
849
896
|
/** @type {Error} */
|
|
850
897
|
(err).message += `\nduring rendering of css ${module.identifier()}`;
|
|
@@ -864,9 +911,9 @@ class CssModulesPlugin {
|
|
|
864
911
|
if (chunk.cssFilenameTemplate) {
|
|
865
912
|
return chunk.cssFilenameTemplate;
|
|
866
913
|
} else if (chunk.canBeInitial()) {
|
|
867
|
-
return
|
|
914
|
+
return outputOptions.cssFilename;
|
|
868
915
|
}
|
|
869
|
-
return
|
|
916
|
+
return outputOptions.cssChunkFilename;
|
|
870
917
|
}
|
|
871
918
|
|
|
872
919
|
/**
|
|
@@ -876,9 +923,11 @@ class CssModulesPlugin {
|
|
|
876
923
|
*/
|
|
877
924
|
static chunkHasCss(chunk, chunkGraph) {
|
|
878
925
|
return (
|
|
879
|
-
Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, "css")) ||
|
|
880
926
|
Boolean(
|
|
881
|
-
chunkGraph.getChunkModulesIterableBySourceType(chunk,
|
|
927
|
+
chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_TYPE)
|
|
928
|
+
) ||
|
|
929
|
+
Boolean(
|
|
930
|
+
chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_IMPORT_TYPE)
|
|
882
931
|
)
|
|
883
932
|
);
|
|
884
933
|
}
|