webpack 5.102.1 → 5.104.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.
Files changed (220) hide show
  1. package/README.md +121 -134
  2. package/hot/dev-server.js +18 -3
  3. package/hot/emitter-event-target.js +7 -0
  4. package/hot/lazy-compilation-node.js +45 -29
  5. package/hot/lazy-compilation-universal.js +18 -0
  6. package/hot/lazy-compilation-web.js +15 -5
  7. package/hot/load-http.js +7 -0
  8. package/hot/only-dev-server.js +19 -4
  9. package/lib/APIPlugin.js +6 -0
  10. package/lib/Chunk.js +1 -1
  11. package/lib/ChunkGraph.js +9 -7
  12. package/lib/ChunkGroup.js +8 -5
  13. package/lib/CleanPlugin.js +6 -3
  14. package/lib/CodeGenerationResults.js +2 -1
  15. package/lib/CompatibilityPlugin.js +28 -2
  16. package/lib/Compilation.js +58 -21
  17. package/lib/Compiler.js +3 -3
  18. package/lib/ConcatenationScope.js +0 -15
  19. package/lib/ContextModule.js +6 -3
  20. package/lib/ContextModuleFactory.js +6 -4
  21. package/lib/CssModule.js +6 -1
  22. package/lib/DefinePlugin.js +45 -14
  23. package/lib/DelegatedModule.js +7 -4
  24. package/lib/Dependency.js +8 -1
  25. package/lib/DependencyTemplate.js +1 -0
  26. package/lib/DllModule.js +6 -3
  27. package/lib/DotenvPlugin.js +462 -0
  28. package/lib/EnvironmentPlugin.js +19 -16
  29. package/lib/EvalSourceMapDevToolPlugin.js +16 -0
  30. package/lib/ExportsInfo.js +6 -2
  31. package/lib/ExternalModule.js +28 -35
  32. package/lib/ExternalModuleFactoryPlugin.js +11 -9
  33. package/lib/ExternalsPlugin.js +2 -1
  34. package/lib/FileSystemInfo.js +1 -1
  35. package/lib/Generator.js +10 -7
  36. package/lib/HookWebpackError.js +33 -4
  37. package/lib/HotModuleReplacementPlugin.js +22 -0
  38. package/lib/ManifestPlugin.js +235 -0
  39. package/lib/Module.js +27 -15
  40. package/lib/ModuleBuildError.js +1 -1
  41. package/lib/ModuleError.js +1 -1
  42. package/lib/ModuleFilenameHelpers.js +1 -1
  43. package/lib/ModuleGraph.js +29 -13
  44. package/lib/ModuleGraphConnection.js +2 -2
  45. package/lib/ModuleSourceTypeConstants.js +189 -0
  46. package/lib/ModuleTypeConstants.js +1 -4
  47. package/lib/ModuleWarning.js +1 -1
  48. package/lib/MultiCompiler.js +1 -1
  49. package/lib/NodeStuffPlugin.js +424 -116
  50. package/lib/NormalModule.js +23 -20
  51. package/lib/NormalModuleFactory.js +7 -10
  52. package/lib/Parser.js +1 -1
  53. package/lib/RawModule.js +7 -4
  54. package/lib/RuntimeGlobals.js +22 -4
  55. package/lib/RuntimeModule.js +1 -1
  56. package/lib/RuntimePlugin.js +27 -6
  57. package/lib/RuntimeTemplate.js +120 -57
  58. package/lib/SourceMapDevToolPlugin.js +26 -1
  59. package/lib/Template.js +17 -6
  60. package/lib/TemplatedPathPlugin.js +5 -6
  61. package/lib/WebpackError.js +0 -1
  62. package/lib/WebpackOptionsApply.js +67 -15
  63. package/lib/asset/AssetBytesGenerator.js +16 -12
  64. package/lib/asset/AssetGenerator.js +31 -26
  65. package/lib/asset/AssetSourceGenerator.js +16 -12
  66. package/lib/asset/RawDataUrlModule.js +6 -3
  67. package/lib/buildChunkGraph.js +4 -2
  68. package/lib/cache/PackFileCacheStrategy.js +6 -5
  69. package/lib/cli.js +2 -43
  70. package/lib/config/browserslistTargetHandler.js +24 -0
  71. package/lib/config/defaults.js +226 -61
  72. package/lib/config/normalization.js +4 -3
  73. package/lib/config/target.js +11 -0
  74. package/lib/container/ContainerEntryModule.js +6 -3
  75. package/lib/container/FallbackModule.js +6 -3
  76. package/lib/container/RemoteModule.js +1 -3
  77. package/lib/css/CssGenerator.js +304 -76
  78. package/lib/css/CssLoadingRuntimeModule.js +14 -4
  79. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  80. package/lib/css/CssModulesPlugin.js +72 -67
  81. package/lib/css/CssParser.js +1726 -732
  82. package/lib/css/walkCssTokens.js +128 -11
  83. package/lib/dependencies/CachedConstDependency.js +24 -10
  84. package/lib/dependencies/CommonJsImportsParserPlugin.js +0 -9
  85. package/lib/dependencies/CommonJsPlugin.js +12 -0
  86. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  87. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  88. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +3 -1
  89. package/lib/dependencies/CssIcssExportDependency.js +389 -12
  90. package/lib/dependencies/CssIcssImportDependency.js +114 -51
  91. package/lib/dependencies/CssIcssSymbolDependency.js +31 -33
  92. package/lib/dependencies/CssImportDependency.js +17 -6
  93. package/lib/dependencies/CssUrlDependency.js +3 -2
  94. package/lib/dependencies/DynamicExports.js +7 -7
  95. package/lib/dependencies/ExternalModuleDependency.js +7 -4
  96. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  97. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  98. package/lib/dependencies/HarmonyAcceptDependency.js +6 -1
  99. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -1
  100. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -1
  101. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +35 -23
  102. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +13 -9
  103. package/lib/dependencies/HarmonyExports.js +4 -4
  104. package/lib/dependencies/HarmonyImportDependency.js +28 -27
  105. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +28 -69
  106. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -3
  107. package/lib/dependencies/HarmonyImportSpecifierDependency.js +10 -8
  108. package/lib/dependencies/ImportDependency.js +8 -2
  109. package/lib/dependencies/ImportEagerDependency.js +6 -3
  110. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
  111. package/lib/dependencies/ImportMetaPlugin.js +154 -9
  112. package/lib/dependencies/ImportParserPlugin.js +21 -23
  113. package/lib/dependencies/ImportPhase.js +121 -0
  114. package/lib/dependencies/ImportWeakDependency.js +6 -3
  115. package/lib/dependencies/LocalModulesHelpers.js +3 -3
  116. package/lib/dependencies/ModuleDependency.js +5 -1
  117. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  118. package/lib/dependencies/WorkerPlugin.js +2 -2
  119. package/lib/dependencies/getFunctionExpression.js +1 -1
  120. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -8
  121. package/lib/esm/ModuleChunkFormatPlugin.js +5 -4
  122. package/lib/hmr/HotModuleReplacement.runtime.js +2 -1
  123. package/lib/hmr/LazyCompilationPlugin.js +5 -3
  124. package/lib/ids/IdHelpers.js +20 -8
  125. package/lib/index.js +6 -0
  126. package/lib/javascript/ChunkHelpers.js +16 -5
  127. package/lib/javascript/JavascriptGenerator.js +105 -104
  128. package/lib/javascript/JavascriptModulesPlugin.js +80 -37
  129. package/lib/javascript/JavascriptParser.js +161 -44
  130. package/lib/json/JsonGenerator.js +5 -4
  131. package/lib/json/JsonParser.js +9 -2
  132. package/lib/library/AbstractLibraryPlugin.js +1 -1
  133. package/lib/library/AmdLibraryPlugin.js +4 -1
  134. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  135. package/lib/library/ModuleLibraryPlugin.js +41 -23
  136. package/lib/library/SystemLibraryPlugin.js +8 -1
  137. package/lib/library/UmdLibraryPlugin.js +2 -2
  138. package/lib/logging/Logger.js +5 -4
  139. package/lib/logging/createConsoleLogger.js +2 -2
  140. package/lib/node/NodeTargetPlugin.js +9 -1
  141. package/lib/node/ReadFileCompileWasmPlugin.js +0 -2
  142. package/lib/optimize/ConcatenatedModule.js +208 -167
  143. package/lib/optimize/ModuleConcatenationPlugin.js +5 -4
  144. package/lib/optimize/SideEffectsFlagPlugin.js +3 -2
  145. package/lib/optimize/SplitChunksPlugin.js +60 -46
  146. package/lib/rules/RuleSetCompiler.js +1 -1
  147. package/lib/runtime/AsyncModuleRuntimeModule.js +28 -18
  148. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  149. package/lib/runtime/GetChunkFilenameRuntimeModule.js +3 -2
  150. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +89 -55
  151. package/lib/schemes/HttpUriPlugin.js +78 -7
  152. package/lib/serialization/AggregateErrorSerializer.js +1 -2
  153. package/lib/serialization/ObjectMiddleware.js +0 -2
  154. package/lib/serialization/SingleItemMiddleware.js +1 -1
  155. package/lib/sharing/ConsumeSharedModule.js +1 -1
  156. package/lib/sharing/ConsumeSharedPlugin.js +5 -3
  157. package/lib/sharing/ProvideSharedModule.js +1 -1
  158. package/lib/sharing/resolveMatchedConfigs.js +15 -9
  159. package/lib/sharing/utils.js +1 -1
  160. package/lib/stats/DefaultStatsFactoryPlugin.js +8 -5
  161. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  162. package/lib/stats/DefaultStatsPrinterPlugin.js +1 -1
  163. package/lib/util/StringXor.js +1 -1
  164. package/lib/util/URLAbsoluteSpecifier.js +2 -2
  165. package/lib/util/binarySearchBounds.js +2 -2
  166. package/lib/util/comparators.js +54 -76
  167. package/lib/util/compileBooleanMatcher.js +78 -6
  168. package/lib/util/createHash.js +20 -199
  169. package/lib/util/deprecation.js +1 -1
  170. package/lib/util/deterministicGrouping.js +6 -3
  171. package/lib/util/fs.js +75 -75
  172. package/lib/util/hash/BatchedHash.js +10 -9
  173. package/lib/util/hash/BulkUpdateHash.js +138 -0
  174. package/lib/util/hash/DebugHash.js +75 -0
  175. package/lib/util/hash/hash-digest.js +216 -0
  176. package/lib/util/identifier.js +82 -17
  177. package/lib/util/internalSerializables.js +2 -6
  178. package/lib/util/runtime.js +3 -3
  179. package/lib/util/source.js +2 -2
  180. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -4
  181. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +3 -2
  182. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +11 -7
  183. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -6
  184. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +11 -6
  185. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +6 -2
  186. package/lib/web/FetchCompileWasmPlugin.js +0 -2
  187. package/lib/webpack.js +85 -82
  188. package/module.d.ts +5 -0
  189. package/package.json +34 -28
  190. package/schemas/WebpackOptions.check.js +1 -1
  191. package/schemas/WebpackOptions.json +160 -101
  192. package/schemas/plugins/{css/CssAutoParserOptions.check.d.ts → ManifestPlugin.check.d.ts} +1 -1
  193. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  194. package/schemas/plugins/ManifestPlugin.json +98 -0
  195. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  196. package/schemas/plugins/SourceMapDevToolPlugin.json +16 -3
  197. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  198. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  199. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  200. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  201. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  202. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -1
  203. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  204. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  205. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -1
  206. package/types.d.ts +771 -436
  207. package/lib/ModuleSourceTypesConstants.js +0 -123
  208. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  209. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -112
  210. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  211. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  212. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  213. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  214. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  215. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +0 -7
  216. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  217. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  218. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +0 -7
  219. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  220. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -17,6 +17,7 @@ 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,
22
23
  CSS_MODULE_TYPE_AUTO,
@@ -25,15 +26,12 @@ const {
25
26
  } = require("../ModuleTypeConstants");
26
27
  const NormalModule = require("../NormalModule");
27
28
  const RuntimeGlobals = require("../RuntimeGlobals");
28
- const SelfModuleFactory = require("../SelfModuleFactory");
29
29
  const Template = require("../Template");
30
30
  const WebpackError = require("../WebpackError");
31
31
  const CssIcssExportDependency = require("../dependencies/CssIcssExportDependency");
32
32
  const CssIcssImportDependency = require("../dependencies/CssIcssImportDependency");
33
33
  const CssIcssSymbolDependency = require("../dependencies/CssIcssSymbolDependency");
34
34
  const CssImportDependency = require("../dependencies/CssImportDependency");
35
- const CssLocalIdentifierDependency = require("../dependencies/CssLocalIdentifierDependency");
36
- const CssSelfLocalIdentifierDependency = require("../dependencies/CssSelfLocalIdentifierDependency");
37
35
  const CssUrlDependency = require("../dependencies/CssUrlDependency");
38
36
  const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
39
37
  const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
@@ -45,6 +43,7 @@ const memoize = require("../util/memoize");
45
43
  const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
46
44
  const removeBOM = require("../util/removeBOM");
47
45
  const CssGenerator = require("./CssGenerator");
46
+ const CssMergeStyleSheetsRuntimeModule = require("./CssMergeStyleSheetsRuntimeModule");
48
47
  const CssParser = require("./CssParser");
49
48
 
50
49
  /** @typedef {import("webpack-sources").Source} Source */
@@ -62,6 +61,7 @@ const CssParser = require("./CssParser");
62
61
  /** @typedef {import("../Template").RuntimeTemplate} RuntimeTemplate */
63
62
  /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
64
63
  /** @typedef {import("../util/Hash")} Hash */
64
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
65
65
 
66
66
  /**
67
67
  * @typedef {object} RenderContext
@@ -76,11 +76,13 @@ const CssParser = require("./CssParser");
76
76
 
77
77
  /**
78
78
  * @typedef {object} ChunkRenderContext
79
- * @property {Chunk} chunk the chunk
80
- * @property {ChunkGraph} chunkGraph the chunk graph
81
- * @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
82
82
  * @property {RuntimeTemplate} runtimeTemplate the runtime template
83
83
  * @property {string} undoPath undo path to css file
84
+ * @property {WeakMap<Source, ModuleFactoryCacheEntry>} moduleFactoryCache moduleFactoryCache
85
+ * @property {Source} moduleSourceContent content
84
86
  */
85
87
 
86
88
  /**
@@ -89,6 +91,13 @@ const CssParser = require("./CssParser");
89
91
  * @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
90
92
  */
91
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
+
92
101
  const getCssLoadingRuntimeModule = memoize(() =>
93
102
  require("./CssLoadingRuntimeModule")
94
103
  );
@@ -117,8 +126,8 @@ const validateGeneratorOptions = {
117
126
  generatorValidationOptions
118
127
  ),
119
128
  "css/auto": createSchemaValidation(
120
- require("../../schemas/plugins/css/CssAutoGeneratorOptions.check"),
121
- () => getSchema("CssAutoGeneratorOptions"),
129
+ require("../../schemas/plugins/css/CssModuleGeneratorOptions.check"),
130
+ () => getSchema("CssModuleGeneratorOptions"),
122
131
  generatorValidationOptions
123
132
  ),
124
133
  "css/module": createSchemaValidation(
@@ -127,8 +136,8 @@ const validateGeneratorOptions = {
127
136
  generatorValidationOptions
128
137
  ),
129
138
  "css/global": createSchemaValidation(
130
- require("../../schemas/plugins/css/CssGlobalGeneratorOptions.check"),
131
- () => getSchema("CssGlobalGeneratorOptions"),
139
+ require("../../schemas/plugins/css/CssModuleGeneratorOptions.check"),
140
+ () => getSchema("CssModuleGeneratorOptions"),
132
141
  generatorValidationOptions
133
142
  )
134
143
  };
@@ -144,8 +153,8 @@ const validateParserOptions = {
144
153
  parserValidationOptions
145
154
  ),
146
155
  "css/auto": createSchemaValidation(
147
- require("../../schemas/plugins/css/CssAutoParserOptions.check"),
148
- () => getSchema("CssAutoParserOptions"),
156
+ require("../../schemas/plugins/css/CssModuleParserOptions.check"),
157
+ () => getSchema("CssModuleParserOptions"),
149
158
  parserValidationOptions
150
159
  ),
151
160
  "css/module": createSchemaValidation(
@@ -154,8 +163,8 @@ const validateParserOptions = {
154
163
  parserValidationOptions
155
164
  ),
156
165
  "css/global": createSchemaValidation(
157
- require("../../schemas/plugins/css/CssGlobalParserOptions.check"),
158
- () => getSchema("CssGlobalParserOptions"),
166
+ require("../../schemas/plugins/css/CssModuleParserOptions.check"),
167
+ () => getSchema("CssModuleParserOptions"),
159
168
  parserValidationOptions
160
169
  )
161
170
  };
@@ -192,7 +201,7 @@ class CssModulesPlugin {
192
201
  }
193
202
 
194
203
  constructor() {
195
- /** @type {WeakMap<Source, { undoPath: string, inheritance: Inheritance, source: CachedSource }>} */
204
+ /** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
196
205
  this._moduleFactoryCache = new WeakMap();
197
206
  }
198
207
 
@@ -206,7 +215,6 @@ class CssModulesPlugin {
206
215
  PLUGIN_NAME,
207
216
  (compilation, { normalModuleFactory }) => {
208
217
  const hooks = CssModulesPlugin.getCompilationHooks(compilation);
209
- const selfFactory = new SelfModuleFactory(compilation.moduleGraph);
210
218
  compilation.dependencyFactories.set(
211
219
  CssImportDependency,
212
220
  normalModuleFactory
@@ -223,18 +231,6 @@ class CssModulesPlugin {
223
231
  CssUrlDependency,
224
232
  new CssUrlDependency.Template()
225
233
  );
226
- compilation.dependencyTemplates.set(
227
- CssLocalIdentifierDependency,
228
- new CssLocalIdentifierDependency.Template()
229
- );
230
- compilation.dependencyFactories.set(
231
- CssSelfLocalIdentifierDependency,
232
- selfFactory
233
- );
234
- compilation.dependencyTemplates.set(
235
- CssSelfLocalIdentifierDependency,
236
- new CssSelfLocalIdentifierDependency.Template()
237
- );
238
234
  compilation.dependencyFactories.set(
239
235
  CssIcssImportDependency,
240
236
  normalModuleFactory
@@ -264,36 +260,31 @@ class CssModulesPlugin {
264
260
  normalModuleFactory.hooks.createParser
265
261
  .for(type)
266
262
  .tap(PLUGIN_NAME, (parserOptions) => {
267
- validateParserOptions[type](parserOptions);
268
- const { url, import: importOption, namedExports } = parserOptions;
269
-
270
263
  switch (type) {
271
264
  case CSS_MODULE_TYPE:
272
- return new CssParser({
273
- importOption,
274
- url,
275
- namedExports
276
- });
265
+ validateParserOptions[type](parserOptions);
266
+
267
+ return new CssParser(parserOptions);
277
268
  case CSS_MODULE_TYPE_GLOBAL:
269
+ validateParserOptions[type](parserOptions);
270
+
278
271
  return new CssParser({
279
272
  defaultMode: "global",
280
- importOption,
281
- url,
282
- namedExports
273
+ ...parserOptions
283
274
  });
284
275
  case CSS_MODULE_TYPE_MODULE:
276
+ validateParserOptions[type](parserOptions);
277
+
285
278
  return new CssParser({
286
279
  defaultMode: "local",
287
- importOption,
288
- url,
289
- namedExports
280
+ ...parserOptions
290
281
  });
291
282
  case CSS_MODULE_TYPE_AUTO:
283
+ validateParserOptions[type](parserOptions);
284
+
292
285
  return new CssParser({
293
286
  defaultMode: "auto",
294
- importOption,
295
- url,
296
- namedExports
287
+ ...parserOptions
297
288
  });
298
289
  }
299
290
  });
@@ -545,8 +536,6 @@ class CssModulesPlugin {
545
536
  onceForChunkSet.add(chunk);
546
537
  if (!isEnabledForChunk(chunk)) return;
547
538
 
548
- set.add(RuntimeGlobals.makeNamespaceObject);
549
-
550
539
  const CssLoadingRuntimeModule = getCssLoadingRuntimeModule();
551
540
  compilation.addRuntimeModule(chunk, new CssLoadingRuntimeModule(set));
552
541
  };
@@ -593,6 +582,15 @@ class CssModulesPlugin {
593
582
  set.add(RuntimeGlobals.publicPath);
594
583
  set.add(RuntimeGlobals.getChunkCssFilename);
595
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
+ });
596
594
  }
597
595
  );
598
596
  }
@@ -733,7 +731,7 @@ class CssModulesPlugin {
733
731
  (
734
732
  chunkGraph.getOrderedChunkModulesIterableBySourceType(
735
733
  chunk,
736
- "css-import",
734
+ CSS_IMPORT_TYPE,
737
735
  compareModulesByIdOrIdentifier(chunkGraph)
738
736
  )
739
737
  ),
@@ -745,7 +743,7 @@ class CssModulesPlugin {
745
743
  (
746
744
  chunkGraph.getOrderedChunkModulesIterableBySourceType(
747
745
  chunk,
748
- "css",
746
+ CSS_TYPE,
749
747
  compareModulesByIdOrIdentifier(chunkGraph)
750
748
  )
751
749
  ),
@@ -758,18 +756,11 @@ class CssModulesPlugin {
758
756
  * @param {CssModule} module css module
759
757
  * @param {ChunkRenderContext} renderContext options object
760
758
  * @param {CompilationHooks} hooks hooks
761
- * @returns {Source} css module source
759
+ * @returns {Source | null} css module source
762
760
  */
763
- renderModule(module, renderContext, hooks) {
764
- const { codeGenerationResults, chunk, undoPath } = renderContext;
765
- const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
766
- const moduleSourceContent =
767
- /** @type {Source} */
768
- (
769
- codeGenResult.sources.get("css") ||
770
- codeGenResult.sources.get("css-import")
771
- );
772
- const cacheEntry = this._moduleFactoryCache.get(moduleSourceContent);
761
+ static renderModule(module, renderContext, hooks) {
762
+ const { undoPath, moduleFactoryCache, moduleSourceContent } = renderContext;
763
+ const cacheEntry = moduleFactoryCache.get(moduleSourceContent);
773
764
 
774
765
  /** @type {Inheritance} */
775
766
  const inheritance = [[module.cssLayer, module.supports, module.media]];
@@ -791,6 +782,7 @@ class CssModulesPlugin {
791
782
  ) {
792
783
  source = cacheEntry.source;
793
784
  } else {
785
+ if (!moduleSourceContent) return null;
794
786
  const moduleSourceCode =
795
787
  /** @type {string} */
796
788
  (moduleSourceContent.source());
@@ -845,7 +837,7 @@ class CssModulesPlugin {
845
837
  }
846
838
 
847
839
  source = new CachedSource(moduleSource);
848
- this._moduleFactoryCache.set(moduleSourceContent, {
840
+ moduleFactoryCache.set(moduleSourceContent, {
849
841
  inheritance,
850
842
  undoPath,
851
843
  source
@@ -867,28 +859,39 @@ class CssModulesPlugin {
867
859
  {
868
860
  undoPath,
869
861
  chunk,
870
- chunkGraph,
871
862
  codeGenerationResults,
872
863
  modules,
873
- runtimeTemplate
864
+ runtimeTemplate,
865
+ chunkGraph
874
866
  },
875
867
  hooks
876
868
  ) {
877
869
  const source = new ConcatSource();
878
870
  for (const module of modules) {
879
871
  try {
880
- const moduleSource = this.renderModule(
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(
881
880
  module,
882
881
  {
883
882
  undoPath,
884
883
  chunk,
885
884
  chunkGraph,
886
885
  codeGenerationResults,
886
+ moduleSourceContent,
887
+ moduleFactoryCache: this._moduleFactoryCache,
887
888
  runtimeTemplate
888
889
  },
889
890
  hooks
890
891
  );
891
- source.add(moduleSource);
892
+ if (moduleSource) {
893
+ source.add(moduleSource);
894
+ }
892
895
  } catch (err) {
893
896
  /** @type {Error} */
894
897
  (err).message += `\nduring rendering of css ${module.identifier()}`;
@@ -920,9 +923,11 @@ class CssModulesPlugin {
920
923
  */
921
924
  static chunkHasCss(chunk, chunkGraph) {
922
925
  return (
923
- Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, "css")) ||
924
926
  Boolean(
925
- chunkGraph.getChunkModulesIterableBySourceType(chunk, "css-import")
927
+ chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_TYPE)
928
+ ) ||
929
+ Boolean(
930
+ chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_IMPORT_TYPE)
926
931
  )
927
932
  );
928
933
  }