webpack 5.106.1 → 5.107.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 +2 -2
- package/lib/APIPlugin.js +4 -2
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +26 -0
- package/lib/Chunk.js +46 -0
- package/lib/ChunkGraph.js +111 -0
- package/lib/ChunkGroup.js +57 -13
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CleanPlugin.js +14 -1
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +23 -8
- package/lib/Compilation.js +161 -27
- package/lib/Compiler.js +41 -17
- package/lib/ConcatenationScope.js +24 -1
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +4 -1
- package/lib/ContextExclusionPlugin.js +2 -1
- package/lib/ContextModule.js +14 -2
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/DefinePlugin.js +22 -9
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +48 -4
- 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 +3 -0
- package/lib/EntryPlugin.js +2 -1
- package/lib/Entrypoint.js +4 -0
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -10
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +114 -15
- package/lib/ExternalModuleFactoryPlugin.js +15 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +291 -71
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
- package/lib/FlagDependencyExportsPlugin.js +4 -1
- package/lib/FlagDependencyUsagePlugin.js +5 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
- package/lib/Generator.js +16 -3
- package/lib/HotModuleReplacementPlugin.js +35 -9
- package/lib/IgnorePlugin.js +4 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +2 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +101 -19
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +3 -0
- package/lib/ModuleGraph.js +66 -0
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleSourceTypeConstants.js +32 -1
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleTypeConstants.js +12 -3
- package/lib/MultiCompiler.js +30 -2
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +11 -2
- package/lib/NormalModule.js +43 -33
- package/lib/NormalModuleFactory.js +35 -2
- package/lib/NormalModuleReplacementPlugin.js +1 -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 +2 -1
- package/lib/ProgressPlugin.js +158 -68
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +12 -0
- package/lib/RecordIdsPlugin.js +8 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +6 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +13 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +3 -1
- package/lib/Stats.js +5 -0
- package/lib/Template.js +20 -0
- package/lib/TemplatedPathPlugin.js +10 -3
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
- package/lib/WarnDeprecatedOptionPlugin.js +2 -2
- package/lib/WarnNoModeSetPlugin.js +17 -2
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +16 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +3 -1
- package/lib/WebpackOptionsApply.js +14 -1
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +12 -2
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +42 -10
- package/lib/asset/AssetModulesPlugin.js +7 -2
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +12 -2
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +11 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +19 -6
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
- package/lib/cache/AddManagedPathsPlugin.js +2 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
- package/lib/cache/PackFileCacheStrategy.js +33 -4
- package/lib/cache/ResolverCachePlugin.js +10 -1
- package/lib/cache/getLazyHashedEtag.js +4 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +33 -1
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +232 -12
- package/lib/config/normalization.js +15 -1
- package/lib/config/target.js +11 -0
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +12 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +4 -0
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +2 -1
- package/lib/container/FallbackDependency.js +4 -0
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +12 -0
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +3 -1
- package/lib/container/RemoteModule.js +13 -0
- package/lib/container/RemoteRuntimeModule.js +1 -0
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +336 -100
- package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
- package/lib/css/CssLoadingRuntimeModule.js +23 -4
- package/lib/{CssModule.js → css/CssModule.js} +21 -15
- package/lib/css/CssModulesPlugin.js +235 -89
- package/lib/css/CssParser.js +616 -261
- package/lib/css/walkCssTokens.js +179 -2
- package/lib/debug/ProfilingPlugin.js +19 -1
- package/lib/dependencies/AMDDefineDependency.js +7 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
- package/lib/dependencies/AMDPlugin.js +4 -1
- package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
- package/lib/dependencies/AMDRequireContextDependency.js +3 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
- package/lib/dependencies/AMDRequireDependency.js +4 -0
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +6 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
- package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
- package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +70 -4
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +9 -2
- package/lib/dependencies/ContextDependencyHelpers.js +4 -1
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +4 -0
- package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +2 -1
- package/lib/dependencies/CssIcssExportDependency.js +339 -66
- package/lib/dependencies/CssIcssImportDependency.js +53 -8
- package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
- package/lib/dependencies/CssImportDependency.js +12 -0
- package/lib/dependencies/CssUrlDependency.js +32 -0
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +3 -0
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/ExternalModuleDependency.js +5 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
- package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
- package/lib/dependencies/HarmonyExports.js +2 -0
- package/lib/dependencies/HarmonyImportDependency.js +21 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
- package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
- package/lib/dependencies/HtmlSourceDependency.js +127 -0
- package/lib/dependencies/ImportContextDependency.js +4 -0
- package/lib/dependencies/ImportDependency.js +5 -0
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +9 -2
- package/lib/dependencies/ImportPhase.js +7 -3
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +2 -0
- package/lib/dependencies/JsonExportsDependency.js +6 -1
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +2 -0
- package/lib/dependencies/LoaderPlugin.js +4 -1
- package/lib/dependencies/LocalModule.js +4 -0
- package/lib/dependencies/LocalModuleDependency.js +4 -0
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +6 -1
- package/lib/dependencies/PureExpressionDependency.js +7 -1
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/RequireEnsureDependency.js +4 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +3 -0
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
- package/lib/dependencies/StaticExportsDependency.js +3 -0
- package/lib/dependencies/SystemPlugin.js +5 -2
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/URLContextDependency.js +3 -0
- package/lib/dependencies/URLDependency.js +6 -0
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +11 -3
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
- package/lib/{DllModule.js → dll/DllModule.js} +35 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- 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} +4 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
- package/lib/errors/JSONParseError.js +114 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
- package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
- package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
- package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
- package/lib/errors/NonErrorEmittedError.js +28 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -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 +5 -1
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +20 -1
- package/lib/hmr/lazyCompilationBackend.js +2 -0
- package/lib/html/HtmlGenerator.js +379 -0
- package/lib/html/HtmlModulesPlugin.js +433 -0
- package/lib/html/HtmlParser.js +1489 -0
- package/lib/html/walkHtmlTokens.js +2733 -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 +22 -1
- 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 +39 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
- package/lib/javascript/BasicEvaluatedExpression.js +4 -2
- 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 +5 -1
- package/lib/javascript/JavascriptGenerator.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +112 -9
- package/lib/javascript/JavascriptParser.js +360 -16
- package/lib/javascript/JavascriptParserHelpers.js +7 -1
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +14 -25
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +86 -1
- package/lib/library/SystemLibraryPlugin.js +8 -0
- package/lib/library/UmdLibraryPlugin.js +16 -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 +2 -1
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +2 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -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 +62 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +16 -1
- package/lib/optimize/InnerGraphPlugin.js +14 -2
- 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 +36 -8
- package/lib/optimize/RealContentHashPlugin.js +104 -26
- 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 +118 -4
- package/lib/optimize/SplitChunksPlugin.js +50 -2
- 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 +6 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -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 +18 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +7 -2
- package/lib/serialization/AggregateErrorSerializer.js +2 -0
- package/lib/serialization/ArraySerializer.js +2 -0
- package/lib/serialization/BinaryMiddleware.js +20 -1
- package/lib/serialization/DateObjectSerializer.js +2 -0
- package/lib/serialization/ErrorObjectSerializer.js +3 -0
- package/lib/serialization/FileMiddleware.js +21 -0
- package/lib/serialization/MapObjectSerializer.js +2 -0
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +7 -0
- package/lib/serialization/RegExpObjectSerializer.js +2 -0
- package/lib/serialization/Serializer.js +5 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +2 -0
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +15 -0
- package/lib/sharing/ConsumeSharedPlugin.js +8 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +12 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +5 -2
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +4 -1
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
- package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
- package/lib/stats/StatsFactory.js +13 -1
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +8 -2
- package/lib/util/AppendOnlyStackedSet.js +15 -0
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +22 -2
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -0
- package/lib/util/LocConverter.js +53 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +14 -1
- package/lib/util/SetHelpers.js +3 -0
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +45 -0
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +13 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +33 -0
- package/lib/util/binarySearchBounds.js +1 -0
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +34 -3
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +9 -3
- package/lib/util/conventions.js +46 -1
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +1 -0
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +20 -0
- package/lib/util/extractSourceMap.js +1 -0
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +5 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
- package/lib/util/fs.js +71 -8
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/hash-digest.js +8 -0
- 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 +67 -0
- package/lib/util/internalSerializables.js +35 -19
- package/lib/util/magicComment.js +10 -6
- package/lib/util/makeSerializable.js +6 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +1 -0
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +1 -0
- package/lib/util/registerExternalSerializer.js +20 -0
- 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 +1 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
- package/lib/wasm-sync/WebAssemblyParser.js +2 -0
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
- package/lib/web/FetchCompileWasmPlugin.js +13 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +13 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +31 -31
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +161 -57
- 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/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +22 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +5325 -353
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- /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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { SyncHook, SyncWaterfallHook } = require("tapable");
|
|
8
|
+
const { SyncBailHook, SyncHook, SyncWaterfallHook } = require("tapable");
|
|
9
9
|
const {
|
|
10
10
|
CachedSource,
|
|
11
11
|
ConcatSource,
|
|
@@ -14,8 +14,6 @@ const {
|
|
|
14
14
|
ReplaceSource
|
|
15
15
|
} = require("webpack-sources");
|
|
16
16
|
const Compilation = require("../Compilation");
|
|
17
|
-
const CssModule = require("../CssModule");
|
|
18
|
-
const { tryRunOrWebpackError } = require("../HookWebpackError");
|
|
19
17
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
|
20
18
|
const { CSS_IMPORT_TYPE, CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
21
19
|
const {
|
|
@@ -27,14 +25,16 @@ const {
|
|
|
27
25
|
const NormalModule = require("../NormalModule");
|
|
28
26
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
29
27
|
const Template = require("../Template");
|
|
30
|
-
const WebpackError = require("../WebpackError");
|
|
31
28
|
const CssIcssExportDependency = require("../dependencies/CssIcssExportDependency");
|
|
32
29
|
const CssIcssImportDependency = require("../dependencies/CssIcssImportDependency");
|
|
33
30
|
const CssIcssSymbolDependency = require("../dependencies/CssIcssSymbolDependency");
|
|
34
31
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
35
32
|
const CssUrlDependency = require("../dependencies/CssUrlDependency");
|
|
36
33
|
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
|
34
|
+
const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
|
|
35
|
+
const WebpackError = require("../errors/WebpackError");
|
|
37
36
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
37
|
+
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
38
38
|
const { compareModulesByFullName } = require("../util/comparators");
|
|
39
39
|
const createHash = require("../util/createHash");
|
|
40
40
|
const { getUndoPath } = require("../util/identifier");
|
|
@@ -42,10 +42,9 @@ const memoize = require("../util/memoize");
|
|
|
42
42
|
const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
|
|
43
43
|
const removeBOM = require("../util/removeBOM");
|
|
44
44
|
const CssGenerator = require("./CssGenerator");
|
|
45
|
+
const CssModule = require("./CssModule");
|
|
45
46
|
const CssParser = require("./CssParser");
|
|
46
47
|
|
|
47
|
-
const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
48
|
-
|
|
49
48
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
50
49
|
/** @typedef {import("../config/defaults").OutputNormalizedWithDefaults} OutputOptions */
|
|
51
50
|
/** @typedef {import("../Chunk")} Chunk */
|
|
@@ -53,8 +52,8 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
53
52
|
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
|
54
53
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
55
54
|
/** @typedef {import("../Compiler")} Compiler */
|
|
56
|
-
/** @typedef {import("
|
|
57
|
-
/** @typedef {import("
|
|
55
|
+
/** @typedef {import("./CssModule").Inheritance} Inheritance */
|
|
56
|
+
/** @typedef {import("./CssModule").CssModuleCreateData} CssModuleCreateData */
|
|
58
57
|
/** @typedef {import("../Module")} Module */
|
|
59
58
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
60
59
|
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
@@ -64,6 +63,7 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
64
63
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
65
64
|
|
|
66
65
|
/**
|
|
66
|
+
* Defines the render context type used by this module.
|
|
67
67
|
* @typedef {object} RenderContext
|
|
68
68
|
* @property {Chunk} chunk the chunk
|
|
69
69
|
* @property {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -71,29 +71,36 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
71
71
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
72
72
|
* @property {string} uniqueName the unique name
|
|
73
73
|
* @property {string} undoPath undo path to css file
|
|
74
|
+
* @property {string=} hash compilation hash
|
|
74
75
|
* @property {CssModule[]} modules modules
|
|
75
76
|
*/
|
|
76
77
|
|
|
77
78
|
/**
|
|
79
|
+
* Defines the chunk render context type used by this module.
|
|
78
80
|
* @typedef {object} ChunkRenderContext
|
|
79
81
|
* @property {Chunk=} chunk the chunk
|
|
80
82
|
* @property {ChunkGraph=} chunkGraph the chunk graph
|
|
81
83
|
* @property {CodeGenerationResults=} codeGenerationResults results of code generation
|
|
82
84
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
83
85
|
* @property {string} undoPath undo path to css file
|
|
86
|
+
* @property {string=} hash compilation hash
|
|
84
87
|
* @property {WeakMap<Source, ModuleFactoryCacheEntry>} moduleFactoryCache moduleFactoryCache
|
|
85
88
|
* @property {Source} moduleSourceContent content
|
|
86
89
|
*/
|
|
87
90
|
|
|
88
91
|
/**
|
|
92
|
+
* Defines the compilation hooks type used by this module.
|
|
89
93
|
* @typedef {object} CompilationHooks
|
|
90
94
|
* @property {SyncWaterfallHook<[Source, Module, ChunkRenderContext]>} renderModulePackage
|
|
91
95
|
* @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
|
|
96
|
+
* @property {SyncBailHook<[Chunk, Module[], Compilation], Module[] | undefined | void>} orderModules called for each CSS source type (CSS_IMPORT_TYPE, CSS_TYPE) with the chunk's modules pre-sorted by full module name; return an ordered `Module[]` to override the default import-order topological sort, or return `undefined` to keep the default
|
|
92
97
|
*/
|
|
93
98
|
|
|
94
99
|
/**
|
|
100
|
+
* Defines the module factory cache entry type used by this module.
|
|
95
101
|
* @typedef {object} ModuleFactoryCacheEntry
|
|
96
102
|
* @property {string} undoPath - The undo path to the CSS file
|
|
103
|
+
* @property {string | undefined} hash - The compilation hash
|
|
97
104
|
* @property {Inheritance} inheritance - The inheritance chain
|
|
98
105
|
* @property {CachedSource} source - The cached source
|
|
99
106
|
*/
|
|
@@ -101,14 +108,12 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
101
108
|
const getCssLoadingRuntimeModule = memoize(() =>
|
|
102
109
|
require("./CssLoadingRuntimeModule")
|
|
103
110
|
);
|
|
104
|
-
const getCssMergeStyleSheetsRuntimeModule = memoize(() =>
|
|
105
|
-
require("./CssMergeStyleSheetsRuntimeModule")
|
|
106
|
-
);
|
|
107
111
|
const getCssInjectStyleRuntimeModule = memoize(() =>
|
|
108
112
|
require("./CssInjectStyleRuntimeModule")
|
|
109
113
|
);
|
|
110
114
|
|
|
111
115
|
/**
|
|
116
|
+
* Returns ], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema.
|
|
112
117
|
* @param {string} name name
|
|
113
118
|
* @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema
|
|
114
119
|
*/
|
|
@@ -138,6 +143,7 @@ const PLUGIN_NAME = "CssModulesPlugin";
|
|
|
138
143
|
|
|
139
144
|
class CssModulesPlugin {
|
|
140
145
|
/**
|
|
146
|
+
* Returns the attached hooks.
|
|
141
147
|
* @param {Compilation} compilation the compilation
|
|
142
148
|
* @returns {CompilationHooks} the attached hooks
|
|
143
149
|
*/
|
|
@@ -155,7 +161,8 @@ class CssModulesPlugin {
|
|
|
155
161
|
"module",
|
|
156
162
|
"renderContext"
|
|
157
163
|
]),
|
|
158
|
-
chunkHash: new SyncHook(["chunk", "hash", "context"])
|
|
164
|
+
chunkHash: new SyncHook(["chunk", "hash", "context"]),
|
|
165
|
+
orderModules: new SyncBailHook(["chunk", "modules", "compilation"])
|
|
159
166
|
};
|
|
160
167
|
compilationHooksMap.set(compilation, hooks);
|
|
161
168
|
}
|
|
@@ -168,7 +175,7 @@ class CssModulesPlugin {
|
|
|
168
175
|
}
|
|
169
176
|
|
|
170
177
|
/**
|
|
171
|
-
*
|
|
178
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
172
179
|
* @param {Compiler} compiler the compiler instance
|
|
173
180
|
* @returns {void}
|
|
174
181
|
*/
|
|
@@ -255,11 +262,11 @@ class CssModulesPlugin {
|
|
|
255
262
|
case CSS_MODULE_TYPE_MODULE: {
|
|
256
263
|
defaultMode = "local";
|
|
257
264
|
compiler.validate(
|
|
258
|
-
() => getSchema("
|
|
265
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
259
266
|
parserOptions,
|
|
260
267
|
parserValidationOptions,
|
|
261
268
|
(options) =>
|
|
262
|
-
require("../../schemas/plugins/css/
|
|
269
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
263
270
|
options
|
|
264
271
|
)
|
|
265
272
|
);
|
|
@@ -268,11 +275,11 @@ class CssModulesPlugin {
|
|
|
268
275
|
case CSS_MODULE_TYPE_AUTO: {
|
|
269
276
|
defaultMode = "auto";
|
|
270
277
|
compiler.validate(
|
|
271
|
-
() => getSchema("
|
|
278
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
272
279
|
parserOptions,
|
|
273
280
|
parserValidationOptions,
|
|
274
281
|
(options) =>
|
|
275
|
-
require("../../schemas/plugins/css/
|
|
282
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
276
283
|
options
|
|
277
284
|
)
|
|
278
285
|
);
|
|
@@ -392,20 +399,20 @@ class CssModulesPlugin {
|
|
|
392
399
|
}
|
|
393
400
|
|
|
394
401
|
return new CssModule(
|
|
395
|
-
/** @type {
|
|
402
|
+
/** @type {CssModuleCreateData} */
|
|
396
403
|
({
|
|
397
404
|
...createData,
|
|
398
405
|
cssLayer: dependency.layer,
|
|
399
406
|
supports: dependency.supports,
|
|
400
407
|
media: dependency.media,
|
|
401
408
|
inheritance,
|
|
402
|
-
exportType: exportType ||
|
|
409
|
+
exportType: parent.exportType || exportType
|
|
403
410
|
})
|
|
404
411
|
);
|
|
405
412
|
}
|
|
406
413
|
|
|
407
414
|
return new CssModule(
|
|
408
|
-
/** @type {
|
|
415
|
+
/** @type {CssModuleCreateData} */
|
|
409
416
|
({
|
|
410
417
|
...createData,
|
|
411
418
|
cssLayer: dependency.layer,
|
|
@@ -418,7 +425,7 @@ class CssModulesPlugin {
|
|
|
418
425
|
}
|
|
419
426
|
|
|
420
427
|
return new CssModule(
|
|
421
|
-
/** @type {
|
|
428
|
+
/** @type {CssModuleCreateData} */
|
|
422
429
|
(
|
|
423
430
|
/** @type {unknown} */ ({
|
|
424
431
|
...createData,
|
|
@@ -445,44 +452,76 @@ class CssModulesPlugin {
|
|
|
445
452
|
JavascriptModulesPlugin.getCompilationHooks(
|
|
446
453
|
compilation
|
|
447
454
|
).renderModuleContent.tap(PLUGIN_NAME, (source, module) => {
|
|
448
|
-
|
|
449
|
-
|
|
455
|
+
const injectCssStylesVar =
|
|
456
|
+
module instanceof ConcatenatedModule &&
|
|
457
|
+
module.modules.find(
|
|
458
|
+
(m) =>
|
|
459
|
+
m instanceof CssModule &&
|
|
460
|
+
m.exportType === "style" &&
|
|
461
|
+
!(/** @type {CssGenerator} */ (m.generator)._exportsOnly)
|
|
462
|
+
);
|
|
463
|
+
const injectHMRCode =
|
|
464
|
+
(module instanceof CssModule && module.hot) ||
|
|
465
|
+
(module instanceof ConcatenatedModule &&
|
|
466
|
+
module.rootModule instanceof CssModule &&
|
|
467
|
+
module.rootModule.hot);
|
|
468
|
+
|
|
469
|
+
if (injectCssStylesVar) {
|
|
470
|
+
source = new ConcatSource(
|
|
471
|
+
"var __webpack_css_styles__ = [];",
|
|
472
|
+
"\n",
|
|
473
|
+
source
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
if (injectHMRCode) {
|
|
477
|
+
const currentModule = /** @type {CssModule} */ (
|
|
478
|
+
module instanceof ConcatenatedModule ? module.rootModule : module
|
|
479
|
+
);
|
|
480
|
+
const exportType = currentModule.exportType || "link";
|
|
450
481
|
// When exportType !== "link", modules behave like JavaScript modules
|
|
451
|
-
if (
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
482
|
+
if (["link", "style"].includes(exportType)) {
|
|
483
|
+
// For exportType === "link", we can optimize with self-acceptance
|
|
484
|
+
const cssData = /** @type {BuildInfo} */ (module.buildInfo)
|
|
485
|
+
.cssData;
|
|
486
|
+
if (!cssData) {
|
|
487
|
+
return source;
|
|
488
|
+
}
|
|
489
|
+
const exports = cssData.exports;
|
|
490
|
+
/** @type {Record<string, string>} */
|
|
491
|
+
const exportsObj = {};
|
|
492
|
+
for (const [key, value] of exports) {
|
|
493
|
+
exportsObj[key] = value;
|
|
494
|
+
}
|
|
495
|
+
const stringifiedExports = JSON.stringify(
|
|
496
|
+
JSON.stringify(exportsObj)
|
|
497
|
+
);
|
|
498
|
+
|
|
499
|
+
const hmrCode = Template.asString([
|
|
500
|
+
"",
|
|
501
|
+
`var __webpack_css_exports__ = ${stringifiedExports};`,
|
|
502
|
+
"// only invalidate when locals change",
|
|
503
|
+
"if (module.hot.data && module.hot.data.__webpack_css_exports__ && module.hot.data.__webpack_css_exports__ != __webpack_css_exports__) {",
|
|
504
|
+
Template.indent("module.hot.invalidate();"),
|
|
505
|
+
"} else {",
|
|
506
|
+
Template.indent("module.hot.accept();"),
|
|
507
|
+
"}",
|
|
508
|
+
"module.hot.dispose(function(data) {",
|
|
509
|
+
Template.indent([
|
|
510
|
+
"data.__webpack_css_exports__ = __webpack_css_exports__;"
|
|
511
|
+
]),
|
|
512
|
+
"});"
|
|
513
|
+
]);
|
|
514
|
+
|
|
515
|
+
source = new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
464
516
|
}
|
|
465
|
-
|
|
466
|
-
|
|
517
|
+
}
|
|
518
|
+
if (injectCssStylesVar) {
|
|
519
|
+
/** @type {ConcatSource} */
|
|
520
|
+
(source).add(
|
|
521
|
+
"for (let i = 0; i < __webpack_css_styles__.length; i++) {\n" +
|
|
522
|
+
`${RuntimeGlobals.cssInjectStyle}(__webpack_css_styles__[i][0], __webpack_css_styles__[i][1]);\n` +
|
|
523
|
+
"}"
|
|
467
524
|
);
|
|
468
|
-
|
|
469
|
-
const hmrCode = Template.asString([
|
|
470
|
-
"",
|
|
471
|
-
`var __webpack_css_exports__ = ${stringifiedExports};`,
|
|
472
|
-
"// only invalidate when locals change",
|
|
473
|
-
"if (module.hot.data && module.hot.data.__webpack_css_exports__ && module.hot.data.__webpack_css_exports__ != __webpack_css_exports__) {",
|
|
474
|
-
Template.indent("module.hot.invalidate();"),
|
|
475
|
-
"} else {",
|
|
476
|
-
Template.indent("module.hot.accept();"),
|
|
477
|
-
"}",
|
|
478
|
-
"module.hot.dispose(function(data) {",
|
|
479
|
-
Template.indent([
|
|
480
|
-
"data.__webpack_css_exports__ = __webpack_css_exports__;"
|
|
481
|
-
]),
|
|
482
|
-
"});"
|
|
483
|
-
]);
|
|
484
|
-
|
|
485
|
-
return new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
486
525
|
}
|
|
487
526
|
|
|
488
527
|
return source;
|
|
@@ -571,6 +610,7 @@ class CssModulesPlugin {
|
|
|
571
610
|
codeGenerationResults,
|
|
572
611
|
uniqueName: compilation.outputOptions.uniqueName,
|
|
573
612
|
undoPath,
|
|
613
|
+
hash,
|
|
574
614
|
modules,
|
|
575
615
|
runtimeTemplate
|
|
576
616
|
},
|
|
@@ -586,6 +626,7 @@ class CssModulesPlugin {
|
|
|
586
626
|
});
|
|
587
627
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
|
588
628
|
/**
|
|
629
|
+
* Checks whether this css modules plugin is enabled for chunk.
|
|
589
630
|
* @param {Chunk} chunk the chunk
|
|
590
631
|
* @returns {boolean} true, when enabled
|
|
591
632
|
*/
|
|
@@ -600,6 +641,7 @@ class CssModulesPlugin {
|
|
|
600
641
|
/** @type {WeakSet<Chunk>} */
|
|
601
642
|
const onceForChunkSet = new WeakSet();
|
|
602
643
|
/**
|
|
644
|
+
* Handles the hook callback for this code path.
|
|
603
645
|
* @param {Chunk} chunk chunk to check
|
|
604
646
|
* @param {RuntimeRequirements} set runtime requirements
|
|
605
647
|
*/
|
|
@@ -655,20 +697,11 @@ class CssModulesPlugin {
|
|
|
655
697
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
|
656
698
|
});
|
|
657
699
|
|
|
658
|
-
compilation.hooks.runtimeRequirementInTree
|
|
659
|
-
.for(RuntimeGlobals.cssMergeStyleSheets)
|
|
660
|
-
.tap(PLUGIN_NAME, (chunk) => {
|
|
661
|
-
const CssMergeStyleSheetsRuntimeModule =
|
|
662
|
-
getCssMergeStyleSheetsRuntimeModule();
|
|
663
|
-
compilation.addRuntimeModule(
|
|
664
|
-
chunk,
|
|
665
|
-
new CssMergeStyleSheetsRuntimeModule()
|
|
666
|
-
);
|
|
667
|
-
});
|
|
668
|
-
|
|
669
700
|
compilation.hooks.runtimeRequirementInTree
|
|
670
701
|
.for(RuntimeGlobals.cssInjectStyle)
|
|
671
702
|
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
703
|
+
// Same as above: namespace stub is enough.
|
|
704
|
+
set.add(RuntimeGlobals.requireScope);
|
|
672
705
|
const CssInjectStyleRuntimeModule =
|
|
673
706
|
getCssInjectStyleRuntimeModule();
|
|
674
707
|
compilation.addRuntimeModule(
|
|
@@ -681,6 +714,7 @@ class CssModulesPlugin {
|
|
|
681
714
|
}
|
|
682
715
|
|
|
683
716
|
/**
|
|
717
|
+
* Gets modules in order.
|
|
684
718
|
* @param {Chunk} chunk chunk
|
|
685
719
|
* @param {Iterable<Module> | undefined} modules unordered modules
|
|
686
720
|
* @param {Compilation} compilation compilation
|
|
@@ -722,6 +756,7 @@ class CssModulesPlugin {
|
|
|
722
756
|
);
|
|
723
757
|
|
|
724
758
|
/**
|
|
759
|
+
* Compares module lists.
|
|
725
760
|
* @param {{ list: Module[] }} a a
|
|
726
761
|
* @param {{ list: Module[] }} b b
|
|
727
762
|
* @returns {-1 | 0 | 1} result
|
|
@@ -826,42 +861,87 @@ class CssModulesPlugin {
|
|
|
826
861
|
}
|
|
827
862
|
|
|
828
863
|
/**
|
|
864
|
+
* Gets ordered chunk css modules.
|
|
829
865
|
* @param {Chunk} chunk chunk
|
|
830
866
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
831
867
|
* @param {Compilation} compilation compilation
|
|
832
868
|
* @returns {CssModule[]} ordered css modules
|
|
833
869
|
*/
|
|
834
870
|
getOrderedChunkCssModules(chunk, chunkGraph, compilation) {
|
|
871
|
+
/** @type {string | undefined} */
|
|
872
|
+
let charset;
|
|
873
|
+
|
|
874
|
+
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
875
|
+
|
|
876
|
+
/**
|
|
877
|
+
* @param {Iterable<Module> | undefined} iter modules pre-sorted by full module name
|
|
878
|
+
* @returns {Module[]} ordered modules
|
|
879
|
+
*/
|
|
880
|
+
const orderModules = (iter) => {
|
|
881
|
+
const modules = iter ? [...iter] : [];
|
|
882
|
+
const result = hooks.orderModules.call(chunk, modules, compilation);
|
|
883
|
+
if (result !== undefined) return result;
|
|
884
|
+
return this.getModulesInOrder(chunk, modules, compilation);
|
|
885
|
+
};
|
|
886
|
+
|
|
835
887
|
return /** @type {CssModule[]} */ ([
|
|
836
|
-
...
|
|
837
|
-
chunk,
|
|
888
|
+
...orderModules(
|
|
838
889
|
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
839
890
|
chunk,
|
|
840
891
|
CSS_IMPORT_TYPE,
|
|
841
892
|
compareModulesByFullName(compilation.compiler)
|
|
842
|
-
)
|
|
843
|
-
compilation
|
|
893
|
+
)
|
|
844
894
|
),
|
|
845
|
-
...
|
|
846
|
-
chunk,
|
|
895
|
+
...orderModules(
|
|
847
896
|
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
848
897
|
chunk,
|
|
849
898
|
CSS_TYPE,
|
|
850
899
|
compareModulesByFullName(compilation.compiler)
|
|
851
|
-
)
|
|
852
|
-
|
|
853
|
-
|
|
900
|
+
)
|
|
901
|
+
).map((module) => {
|
|
902
|
+
if (
|
|
903
|
+
typeof (/** @type {BuildInfo} */ (module.buildInfo).charset) !==
|
|
904
|
+
"undefined"
|
|
905
|
+
) {
|
|
906
|
+
if (
|
|
907
|
+
typeof charset !== "undefined" &&
|
|
908
|
+
charset !== /** @type {BuildInfo} */ (module.buildInfo).charset
|
|
909
|
+
) {
|
|
910
|
+
const err = new WebpackError(
|
|
911
|
+
`Conflicting @charset at-rules detected: the module ${module.readableIdentifier(
|
|
912
|
+
compilation.requestShortener
|
|
913
|
+
)} (in chunk ${chunk.name || chunk.id}) specifies "${
|
|
914
|
+
/** @type {BuildInfo} */ (module.buildInfo).charset
|
|
915
|
+
}", but "${charset}" was expected, all modules must use the same character set`
|
|
916
|
+
);
|
|
917
|
+
|
|
918
|
+
err.chunk = chunk;
|
|
919
|
+
err.module = module;
|
|
920
|
+
err.hideStack = true;
|
|
921
|
+
|
|
922
|
+
compilation.warnings.push(err);
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
if (typeof charset === "undefined") {
|
|
926
|
+
charset = /** @type {BuildInfo} */ (module.buildInfo).charset;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
return module;
|
|
931
|
+
})
|
|
854
932
|
]);
|
|
855
933
|
}
|
|
856
934
|
|
|
857
935
|
/**
|
|
936
|
+
* Renders css module source.
|
|
858
937
|
* @param {CssModule} module css module
|
|
859
938
|
* @param {ChunkRenderContext} renderContext options object
|
|
860
939
|
* @param {CompilationHooks} hooks hooks
|
|
861
940
|
* @returns {Source | null} css module source
|
|
862
941
|
*/
|
|
863
942
|
static renderModule(module, renderContext, hooks) {
|
|
864
|
-
const { undoPath, moduleFactoryCache, moduleSourceContent } =
|
|
943
|
+
const { undoPath, hash, moduleFactoryCache, moduleSourceContent } =
|
|
944
|
+
renderContext;
|
|
865
945
|
const cacheEntry = moduleFactoryCache.get(moduleSourceContent);
|
|
866
946
|
|
|
867
947
|
/** @type {Inheritance} */
|
|
@@ -875,6 +955,7 @@ class CssModulesPlugin {
|
|
|
875
955
|
if (
|
|
876
956
|
cacheEntry &&
|
|
877
957
|
cacheEntry.undoPath === undoPath &&
|
|
958
|
+
cacheEntry.hash === hash &&
|
|
878
959
|
cacheEntry.inheritance.length === inheritance.length &&
|
|
879
960
|
cacheEntry.inheritance.every(([layer, supports, media], i) => {
|
|
880
961
|
const item = inheritance[i];
|
|
@@ -890,19 +971,60 @@ class CssModulesPlugin {
|
|
|
890
971
|
const moduleSourceCode =
|
|
891
972
|
/** @type {string} */
|
|
892
973
|
(moduleSourceContent.source());
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
)
|
|
974
|
+
const replaceSource = new ReplaceSource(moduleSourceContent);
|
|
975
|
+
|
|
976
|
+
const autoPlaceholder = CssUrlDependency.PUBLIC_PATH_AUTO;
|
|
977
|
+
const autoPlaceholderLen = autoPlaceholder.length;
|
|
978
|
+
for (
|
|
979
|
+
let idx = moduleSourceCode.indexOf(autoPlaceholder);
|
|
980
|
+
idx !== -1;
|
|
981
|
+
idx = moduleSourceCode.indexOf(
|
|
982
|
+
autoPlaceholder,
|
|
983
|
+
idx + autoPlaceholderLen
|
|
984
|
+
)
|
|
985
|
+
) {
|
|
986
|
+
replaceSource.replace(idx, idx + autoPlaceholderLen - 1, undoPath);
|
|
904
987
|
}
|
|
905
988
|
|
|
989
|
+
if (hash) {
|
|
990
|
+
const hashPrefix = CssUrlDependency.PUBLIC_PATH_FULL_HASH;
|
|
991
|
+
const hashPrefixLen = hashPrefix.length;
|
|
992
|
+
const sourceLen = moduleSourceCode.length;
|
|
993
|
+
let idx = moduleSourceCode.indexOf(hashPrefix);
|
|
994
|
+
while (idx !== -1) {
|
|
995
|
+
let digitEnd = idx + hashPrefixLen;
|
|
996
|
+
while (digitEnd < sourceLen) {
|
|
997
|
+
const cc = moduleSourceCode.charCodeAt(digitEnd);
|
|
998
|
+
if (cc < 48 || cc > 57) break;
|
|
999
|
+
digitEnd++;
|
|
1000
|
+
}
|
|
1001
|
+
let nextSearch;
|
|
1002
|
+
if (
|
|
1003
|
+
digitEnd > idx + hashPrefixLen &&
|
|
1004
|
+
digitEnd + 1 < sourceLen &&
|
|
1005
|
+
moduleSourceCode.charCodeAt(digitEnd) === 95 &&
|
|
1006
|
+
moduleSourceCode.charCodeAt(digitEnd + 1) === 95
|
|
1007
|
+
) {
|
|
1008
|
+
const length = Number.parseInt(
|
|
1009
|
+
moduleSourceCode.slice(idx + hashPrefixLen, digitEnd),
|
|
1010
|
+
10
|
|
1011
|
+
);
|
|
1012
|
+
replaceSource.replace(
|
|
1013
|
+
idx,
|
|
1014
|
+
digitEnd + 1,
|
|
1015
|
+
length === 0 ? hash : hash.slice(0, length)
|
|
1016
|
+
);
|
|
1017
|
+
nextSearch = digitEnd + 2;
|
|
1018
|
+
} else {
|
|
1019
|
+
nextSearch = idx + hashPrefixLen;
|
|
1020
|
+
}
|
|
1021
|
+
idx = moduleSourceCode.indexOf(hashPrefix, nextSearch);
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
/** @type {Source} */
|
|
1026
|
+
let moduleSource = replaceSource;
|
|
1027
|
+
|
|
906
1028
|
for (let i = 0; i < inheritance.length; i++) {
|
|
907
1029
|
const layer = inheritance[i][0];
|
|
908
1030
|
const supports = inheritance[i][1];
|
|
@@ -942,6 +1064,7 @@ class CssModulesPlugin {
|
|
|
942
1064
|
moduleFactoryCache.set(moduleSourceContent, {
|
|
943
1065
|
inheritance,
|
|
944
1066
|
undoPath,
|
|
1067
|
+
hash,
|
|
945
1068
|
source
|
|
946
1069
|
});
|
|
947
1070
|
}
|
|
@@ -953,6 +1076,7 @@ class CssModulesPlugin {
|
|
|
953
1076
|
}
|
|
954
1077
|
|
|
955
1078
|
/**
|
|
1079
|
+
* Renders generated source.
|
|
956
1080
|
* @param {RenderContext} renderContext the render context
|
|
957
1081
|
* @param {CompilationHooks} hooks hooks
|
|
958
1082
|
* @returns {Source} generated source
|
|
@@ -964,12 +1088,25 @@ class CssModulesPlugin {
|
|
|
964
1088
|
codeGenerationResults,
|
|
965
1089
|
modules,
|
|
966
1090
|
runtimeTemplate,
|
|
967
|
-
chunkGraph
|
|
1091
|
+
chunkGraph,
|
|
1092
|
+
hash
|
|
968
1093
|
},
|
|
969
1094
|
hooks
|
|
970
1095
|
) {
|
|
971
1096
|
const source = new ConcatSource();
|
|
1097
|
+
|
|
1098
|
+
/** @type {string | undefined} */
|
|
1099
|
+
let charset;
|
|
1100
|
+
|
|
972
1101
|
for (const module of modules) {
|
|
1102
|
+
if (
|
|
1103
|
+
typeof (/** @type {BuildInfo} */ (module.buildInfo).charset) !==
|
|
1104
|
+
"undefined" &&
|
|
1105
|
+
typeof charset === "undefined"
|
|
1106
|
+
) {
|
|
1107
|
+
charset = /** @type {BuildInfo} */ (module.buildInfo).charset;
|
|
1108
|
+
}
|
|
1109
|
+
|
|
973
1110
|
try {
|
|
974
1111
|
const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
|
|
975
1112
|
const moduleSourceContent =
|
|
@@ -982,6 +1119,7 @@ class CssModulesPlugin {
|
|
|
982
1119
|
module,
|
|
983
1120
|
{
|
|
984
1121
|
undoPath,
|
|
1122
|
+
hash,
|
|
985
1123
|
chunk,
|
|
986
1124
|
chunkGraph,
|
|
987
1125
|
codeGenerationResults,
|
|
@@ -1000,11 +1138,18 @@ class CssModulesPlugin {
|
|
|
1000
1138
|
throw err;
|
|
1001
1139
|
}
|
|
1002
1140
|
}
|
|
1141
|
+
|
|
1003
1142
|
chunk.rendered = true;
|
|
1143
|
+
|
|
1144
|
+
if (charset) {
|
|
1145
|
+
return new ConcatSource(`@charset "${charset}";\n`, source);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1004
1148
|
return source;
|
|
1005
1149
|
}
|
|
1006
1150
|
|
|
1007
1151
|
/**
|
|
1152
|
+
* Gets chunk filename template.
|
|
1008
1153
|
* @param {Chunk} chunk chunk
|
|
1009
1154
|
* @param {OutputOptions} outputOptions output options
|
|
1010
1155
|
* @returns {TemplatePath} used filename template
|
|
@@ -1019,6 +1164,7 @@ class CssModulesPlugin {
|
|
|
1019
1164
|
}
|
|
1020
1165
|
|
|
1021
1166
|
/**
|
|
1167
|
+
* Returns true, when the chunk has css.
|
|
1022
1168
|
* @param {Chunk} chunk chunk
|
|
1023
1169
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
1024
1170
|
* @returns {boolean} true, when the chunk has css
|