index.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const util = require("util");
  7. const memoize = require("./util/memoize");
  8. /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
  9. /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
  10. /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
  11. /** @typedef {import("../declarations/WebpackOptions").ExternalItem} ExternalItem */
  12. /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunction} ExternalItemFunction */
  13. /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
  14. /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
  15. /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
  16. /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
  17. /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
  18. /** @typedef {import("../declarations/WebpackOptions").GeneratorOptionsByModuleTypeKnown} GeneratorOptionsByModuleTypeKnown */
  19. /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
  20. /** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
  21. /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
  22. /** @typedef {import("../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
  23. /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
  24. /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
  25. /** @typedef {import("../declarations/WebpackOptions").RuleSetConditionAbsolute} RuleSetConditionAbsolute */
  26. /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
  27. /** @typedef {import("../declarations/WebpackOptions").RuleSetUse} RuleSetUse */
  28. /** @typedef {import("../declarations/WebpackOptions").RuleSetUseFunction} RuleSetUseFunction */
  29. /** @typedef {import("../declarations/WebpackOptions").RuleSetUseItem} RuleSetUseItem */
  30. /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
  31. /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} Configuration */
  32. /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
  33. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
  34. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
  35. /** @typedef {import("./asset/AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
  36. /** @typedef {import("./ChunkGroup")} ChunkGroup */
  37. /** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
  38. /** @typedef {import("./ContextModule").ContextModuleBuildInfo} ContextModuleBuildInfo */
  39. /** @typedef {import("./css/CssModule").CssModuleBuildInfo} CssModuleBuildInfo */
  40. /** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
  41. /** @typedef {import("./ExternalModule").ExternalModuleBuildInfo} ExternalModuleBuildInfo */
  42. /** @typedef {import("./html/HtmlModule").HtmlModuleBuildInfo} HtmlModuleBuildInfo */
  43. /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
  44. /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
  45. /** @typedef {import("./json/JsonModule").JsonModuleBuildInfo} JsonModuleBuildInfo */
  46. /** @typedef {import("./Module").BuildInfo} BuildInfo */
  47. /** @typedef {import("./Module").BuildMeta} BuildMeta */
  48. /** @typedef {import("./NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
  49. /** @typedef {import("./optimize/ConcatenatedModule").ConcatenatedModuleBuildInfo} ConcatenatedModuleBuildInfo */
  50. /** @typedef {import("./wasm-sync/SyncWasmModule").SyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
  51. /** @typedef {import("./Compilation").Asset} Asset */
  52. /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
  53. /** @typedef {import("./Compilation").EntryOptions} EntryOptions */
  54. /** @typedef {import("./Compilation").PathData} PathData */
  55. /** @typedef {import("./Compilation").PathDataChunk} PathDataChunk */
  56. /** @typedef {import("./Compilation").PathDataModule} PathDataModule */
  57. /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
  58. /** @typedef {import("./Entrypoint")} Entrypoint */
  59. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionCallback} ExternalItemFunctionCallback */
  60. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionData} ExternalItemFunctionData */
  61. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionDataGetResolve} ExternalItemFunctionDataGetResolve */
  62. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionDataGetResolveCallbackResult} ExternalItemFunctionDataGetResolveCallbackResult */
  63. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionDataGetResolveResult} ExternalItemFunctionDataGetResolveResult */
  64. /** @typedef {import("./ExternalModuleFactoryPlugin").ExternalItemFunctionPromise} ExternalItemFunctionPromise */
  65. /** @typedef {import("./MultiCompiler").MultiCompilerOptions} MultiCompilerOptions */
  66. /** @typedef {import("./MultiCompiler").MultiWebpackOptions} MultiConfiguration */
  67. /** @typedef {import("./MultiStats")} MultiStats */
  68. /** @typedef {import("./MultiStats").MultiStatsOptions} MultiStatsOptions */
  69. /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
  70. /** @typedef {import("./Parser").ParserState} ParserState */
  71. /** @typedef {import("./ResolverFactory").ResolvePluginInstance} ResolvePluginInstance */
  72. /** @typedef {import("./ResolverFactory").Resolver} Resolver */
  73. /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry */
  74. /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions */
  75. /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
  76. /** @typedef {import("./Watching")} Watching */
  77. /** @typedef {import("./cli").Argument} Argument */
  78. /** @typedef {import("./cli").Problem} Problem */
  79. /** @typedef {import("./cli").Colors} Colors */
  80. /** @typedef {import("./cli").ColorsOptions} ColorsOptions */
  81. /** @typedef {import("./config/defineConfig").ConfigurationFactory} ConfigurationFactory */
  82. /** @typedef {import("./config/defineConfig").DefineConfigInput} DefineConfigInput */
  83. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsAsset} StatsAsset */
  84. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunk} StatsChunk */
  85. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkGroup} StatsChunkGroup */
  86. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkOrigin} StatsChunkOrigin */
  87. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
  88. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsError} StatsError */
  89. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLogging} StatsLogging */
  90. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLoggingEntry} StatsLoggingEntry */
  91. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModule} StatsModule */
  92. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleIssuer} StatsModuleIssuer */
  93. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleReason} StatsModuleReason */
  94. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceDependency} StatsModuleTraceDependency */
  95. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceItem} StatsModuleTraceItem */
  96. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
  97. /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
  98. /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
  99. /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
  100. /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
  101. /**
  102. * Returns function.
  103. * @template {EXPECTED_FUNCTION} T
  104. * @param {() => T} factory factory function
  105. * @returns {T} function
  106. */
  107. const lazyFunction = (factory) => {
  108. const fac = memoize(factory);
  109. const f = /** @type {unknown} */ (
  110. /**
  111. * Handles the callback logic for this hook.
  112. * @param {...EXPECTED_ANY} args args
  113. * @returns {T} result
  114. */
  115. (...args) => fac()(...args)
  116. );
  117. return /** @type {T} */ (f);
  118. };
  119. /**
  120. * Merges the provided values into a single result.
  121. * @template A
  122. * @template B
  123. * @param {A} obj input a
  124. * @param {B} exports input b
  125. * @returns {A & B} merged
  126. */
  127. const mergeExports = (obj, exports) => {
  128. const descriptors = Object.getOwnPropertyDescriptors(exports);
  129. for (const name of Object.keys(descriptors)) {
  130. const descriptor = descriptors[name];
  131. if (descriptor.get) {
  132. const fn = descriptor.get;
  133. Object.defineProperty(obj, name, {
  134. configurable: false,
  135. enumerable: true,
  136. get: memoize(fn)
  137. });
  138. } else if (typeof descriptor.value === "object") {
  139. Object.defineProperty(obj, name, {
  140. configurable: false,
  141. enumerable: true,
  142. writable: false,
  143. value: mergeExports({}, descriptor.value)
  144. });
  145. } else {
  146. throw new Error(
  147. "Exposed values must be either a getter or an nested object"
  148. );
  149. }
  150. }
  151. return /** @type {A & B} */ (Object.freeze(obj));
  152. };
  153. const fn = lazyFunction(() => require("./webpack"));
  154. module.exports = mergeExports(fn, {
  155. get webpack() {
  156. return require("./webpack");
  157. },
  158. get defineConfig() {
  159. return require("./config/defineConfig");
  160. },
  161. /**
  162. * Returns validate fn.
  163. * @returns {(configuration: Configuration | MultiConfiguration) => void} validate fn
  164. */
  165. get validate() {
  166. const webpackOptionsSchemaCheck =
  167. /** @type {(configuration: Configuration | MultiConfiguration) => boolean} */
  168. (require("../schemas/WebpackOptions.check"));
  169. const getRealValidate = memoize(
  170. /**
  171. * Handles the callback logic for this hook.
  172. * @returns {(configuration: Configuration | MultiConfiguration) => void} validate fn
  173. */
  174. () => {
  175. const validateSchema = require("./validateSchema");
  176. const webpackOptionsSchema =
  177. /** @type {EXPECTED_ANY} */
  178. (require("../schemas/WebpackOptions.json"));
  179. return (options) => validateSchema(webpackOptionsSchema, options);
  180. }
  181. );
  182. return (options) => {
  183. if (!webpackOptionsSchemaCheck(options)) {
  184. getRealValidate()(options);
  185. }
  186. };
  187. },
  188. get validateSchema() {
  189. const validateSchema = require("./validateSchema");
  190. return validateSchema;
  191. },
  192. get version() {
  193. return /** @type {string} */ (require("../package.json").version);
  194. },
  195. get cli() {
  196. return require("./cli");
  197. },
  198. get AutomaticPrefetchPlugin() {
  199. return require("./AutomaticPrefetchPlugin");
  200. },
  201. get AsyncDependenciesBlock() {
  202. return require("./AsyncDependenciesBlock");
  203. },
  204. get BannerPlugin() {
  205. return require("./BannerPlugin");
  206. },
  207. get Cache() {
  208. return require("./Cache");
  209. },
  210. get Chunk() {
  211. return require("./Chunk");
  212. },
  213. get ChunkGraph() {
  214. return require("./ChunkGraph");
  215. },
  216. get CleanPlugin() {
  217. return require("./CleanPlugin");
  218. },
  219. get Compilation() {
  220. return require("./Compilation");
  221. },
  222. get Compiler() {
  223. return require("./Compiler");
  224. },
  225. get ConcatenationScope() {
  226. return require("./ConcatenationScope");
  227. },
  228. get ContextExclusionPlugin() {
  229. return require("./ContextExclusionPlugin");
  230. },
  231. get ContextReplacementPlugin() {
  232. return require("./ContextReplacementPlugin");
  233. },
  234. get DefinePlugin() {
  235. return require("./DefinePlugin");
  236. },
  237. get Dependency() {
  238. return require("./Dependency");
  239. },
  240. get DynamicEntryPlugin() {
  241. return require("./DynamicEntryPlugin");
  242. },
  243. get DotenvPlugin() {
  244. return require("./DotenvPlugin");
  245. },
  246. get EntryOptionPlugin() {
  247. return require("./EntryOptionPlugin");
  248. },
  249. get EntryPlugin() {
  250. return require("./EntryPlugin");
  251. },
  252. get EnvironmentPlugin() {
  253. return require("./EnvironmentPlugin");
  254. },
  255. get EvalDevToolModulePlugin() {
  256. return require("./EvalDevToolModulePlugin");
  257. },
  258. get EvalSourceMapDevToolPlugin() {
  259. return require("./EvalSourceMapDevToolPlugin");
  260. },
  261. get ExternalModule() {
  262. return require("./ExternalModule");
  263. },
  264. get ExternalsPlugin() {
  265. return require("./ExternalsPlugin");
  266. },
  267. get Generator() {
  268. return require("./Generator");
  269. },
  270. get HotUpdateChunk() {
  271. return require("./HotUpdateChunk");
  272. },
  273. get HotModuleReplacementPlugin() {
  274. return require("./HotModuleReplacementPlugin");
  275. },
  276. get InitFragment() {
  277. return require("./InitFragment");
  278. },
  279. get IgnorePlugin() {
  280. return require("./IgnorePlugin");
  281. },
  282. get JavascriptModulesPlugin() {
  283. return util.deprecate(
  284. () => require("./javascript/JavascriptModulesPlugin"),
  285. "webpack.JavascriptModulesPlugin has moved to webpack.javascript.JavascriptModulesPlugin",
  286. "DEP_WEBPACK_JAVASCRIPT_MODULES_PLUGIN"
  287. )();
  288. },
  289. get LibraryTemplatePlugin() {
  290. return util.deprecate(
  291. () => require("./LibraryTemplatePlugin"),
  292. "webpack.LibraryTemplatePlugin is deprecated and has been replaced by compilation.outputOptions.library or compilation.addEntry + passing a library option",
  293. "DEP_WEBPACK_LIBRARY_TEMPLATE_PLUGIN"
  294. )();
  295. },
  296. get LoaderOptionsPlugin() {
  297. return require("./LoaderOptionsPlugin");
  298. },
  299. get LoaderTargetPlugin() {
  300. return require("./LoaderTargetPlugin");
  301. },
  302. get Module() {
  303. return require("./Module");
  304. },
  305. get ModuleFactory() {
  306. return require("./ModuleFactory");
  307. },
  308. get ModuleFilenameHelpers() {
  309. return require("./ModuleFilenameHelpers");
  310. },
  311. get ModuleGraph() {
  312. return require("./ModuleGraph");
  313. },
  314. get ModuleGraphConnection() {
  315. return require("./ModuleGraphConnection");
  316. },
  317. get NoEmitOnErrorsPlugin() {
  318. return require("./NoEmitOnErrorsPlugin");
  319. },
  320. get NormalModule() {
  321. return require("./NormalModule");
  322. },
  323. get NormalModuleReplacementPlugin() {
  324. return require("./NormalModuleReplacementPlugin");
  325. },
  326. get MultiCompiler() {
  327. return require("./MultiCompiler");
  328. },
  329. get OptimizationStages() {
  330. return require("./OptimizationStages");
  331. },
  332. get Parser() {
  333. return require("./Parser");
  334. },
  335. get PlatformPlugin() {
  336. return require("./PlatformPlugin");
  337. },
  338. get PrefetchPlugin() {
  339. return require("./PrefetchPlugin");
  340. },
  341. get ProgressPlugin() {
  342. return require("./ProgressPlugin");
  343. },
  344. get ProvidePlugin() {
  345. return require("./ProvidePlugin");
  346. },
  347. get RuntimeGlobals() {
  348. return require("./RuntimeGlobals");
  349. },
  350. get RuntimeModule() {
  351. return require("./RuntimeModule");
  352. },
  353. get SingleEntryPlugin() {
  354. return util.deprecate(
  355. () => require("./EntryPlugin"),
  356. "SingleEntryPlugin was renamed to EntryPlugin",
  357. "DEP_WEBPACK_SINGLE_ENTRY_PLUGIN"
  358. )();
  359. },
  360. get SourceMapDevToolPlugin() {
  361. return require("./SourceMapDevToolPlugin");
  362. },
  363. get Stats() {
  364. return require("./Stats");
  365. },
  366. get ManifestPlugin() {
  367. return require("./ManifestPlugin");
  368. },
  369. get Template() {
  370. return require("./Template");
  371. },
  372. get UsageState() {
  373. return require("./ExportsInfo").UsageState;
  374. },
  375. get WatchIgnorePlugin() {
  376. return require("./WatchIgnorePlugin");
  377. },
  378. get WebpackError() {
  379. return require("./errors/WebpackError");
  380. },
  381. get WebpackOptionsApply() {
  382. return require("./WebpackOptionsApply");
  383. },
  384. get WebpackOptionsDefaulter() {
  385. return util.deprecate(
  386. () => require("./WebpackOptionsDefaulter"),
  387. "webpack.WebpackOptionsDefaulter is deprecated and has been replaced by webpack.config.getNormalizedWebpackOptions and webpack.config.applyWebpackOptionsDefaults",
  388. "DEP_WEBPACK_OPTIONS_DEFAULTER"
  389. )();
  390. },
  391. // TODO webpack 6 remove
  392. get WebpackOptionsValidationError() {
  393. return require("schema-utils").ValidationError;
  394. },
  395. get ValidationError() {
  396. return require("schema-utils").ValidationError;
  397. },
  398. cache: {
  399. get MemoryCachePlugin() {
  400. return require("./cache/MemoryCachePlugin");
  401. }
  402. },
  403. config: {
  404. get getNormalizedWebpackOptions() {
  405. return require("./config/normalization").getNormalizedWebpackOptions;
  406. },
  407. get applyWebpackOptionsDefaults() {
  408. return require("./config/defaults").applyWebpackOptionsDefaults;
  409. }
  410. },
  411. dependencies: {
  412. get ModuleDependency() {
  413. return require("./dependencies/ModuleDependency");
  414. },
  415. get HarmonyImportDependency() {
  416. return require("./dependencies/HarmonyImportDependency");
  417. },
  418. get ConstDependency() {
  419. return require("./dependencies/ConstDependency");
  420. },
  421. get NullDependency() {
  422. return require("./dependencies/NullDependency");
  423. }
  424. },
  425. ids: {
  426. get ChunkModuleIdRangePlugin() {
  427. return require("./ids/ChunkModuleIdRangePlugin");
  428. },
  429. get NaturalModuleIdsPlugin() {
  430. return require("./ids/NaturalModuleIdsPlugin");
  431. },
  432. get OccurrenceModuleIdsPlugin() {
  433. return require("./ids/OccurrenceModuleIdsPlugin");
  434. },
  435. get NamedModuleIdsPlugin() {
  436. return require("./ids/NamedModuleIdsPlugin");
  437. },
  438. get DeterministicChunkIdsPlugin() {
  439. return require("./ids/DeterministicChunkIdsPlugin");
  440. },
  441. get DeterministicModuleIdsPlugin() {
  442. return require("./ids/DeterministicModuleIdsPlugin");
  443. },
  444. get NamedChunkIdsPlugin() {
  445. return require("./ids/NamedChunkIdsPlugin");
  446. },
  447. get OccurrenceChunkIdsPlugin() {
  448. return require("./ids/OccurrenceChunkIdsPlugin");
  449. },
  450. get HashedModuleIdsPlugin() {
  451. return require("./ids/HashedModuleIdsPlugin");
  452. }
  453. },
  454. javascript: {
  455. get EnableChunkLoadingPlugin() {
  456. return require("./javascript/EnableChunkLoadingPlugin");
  457. },
  458. get JavascriptModulesPlugin() {
  459. return require("./javascript/JavascriptModulesPlugin");
  460. },
  461. get JavascriptParser() {
  462. return require("./javascript/JavascriptParser");
  463. }
  464. },
  465. optimize: {
  466. get AggressiveMergingPlugin() {
  467. return require("./optimize/AggressiveMergingPlugin");
  468. },
  469. get AggressiveSplittingPlugin() {
  470. return util.deprecate(
  471. () => require("./optimize/AggressiveSplittingPlugin"),
  472. "AggressiveSplittingPlugin is deprecated in favor of SplitChunksPlugin",
  473. "DEP_WEBPACK_AGGRESSIVE_SPLITTING_PLUGIN"
  474. )();
  475. },
  476. get InnerGraph() {
  477. return require("./optimize/InnerGraph");
  478. },
  479. get LimitChunkCountPlugin() {
  480. return require("./optimize/LimitChunkCountPlugin");
  481. },
  482. get MergeDuplicateChunksPlugin() {
  483. return require("./optimize/MergeDuplicateChunksPlugin");
  484. },
  485. get MinChunkSizePlugin() {
  486. return require("./optimize/MinChunkSizePlugin");
  487. },
  488. get ModuleConcatenationPlugin() {
  489. return require("./optimize/ModuleConcatenationPlugin");
  490. },
  491. get RealContentHashPlugin() {
  492. return require("./optimize/RealContentHashPlugin");
  493. },
  494. get RuntimeChunkPlugin() {
  495. return require("./optimize/RuntimeChunkPlugin");
  496. },
  497. get SideEffectsFlagPlugin() {
  498. return require("./optimize/SideEffectsFlagPlugin");
  499. },
  500. get SplitChunksPlugin() {
  501. return require("./optimize/SplitChunksPlugin");
  502. }
  503. },
  504. runtime: {
  505. get GetChunkFilenameRuntimeModule() {
  506. return require("./runtime/GetChunkFilenameRuntimeModule");
  507. },
  508. get LoadScriptRuntimeModule() {
  509. return require("./runtime/LoadScriptRuntimeModule");
  510. }
  511. },
  512. prefetch: {
  513. get ChunkPrefetchPreloadPlugin() {
  514. return require("./prefetch/ChunkPrefetchPreloadPlugin");
  515. }
  516. },
  517. web: {
  518. get FetchCompileWasmPlugin() {
  519. return require("./web/FetchCompileWasmPlugin");
  520. },
  521. get FetchCompileAsyncWasmPlugin() {
  522. return require("./web/FetchCompileAsyncWasmPlugin");
  523. },
  524. get JsonpChunkLoadingRuntimeModule() {
  525. return require("./web/JsonpChunkLoadingRuntimeModule");
  526. },
  527. get JsonpTemplatePlugin() {
  528. return require("./web/JsonpTemplatePlugin");
  529. },
  530. get CssLoadingRuntimeModule() {
  531. return require("./css/CssLoadingRuntimeModule");
  532. }
  533. },
  534. esm: {
  535. get ModuleChunkLoadingRuntimeModule() {
  536. return require("./esm/ModuleChunkLoadingRuntimeModule");
  537. }
  538. },
  539. webworker: {
  540. get WebWorkerTemplatePlugin() {
  541. return require("./webworker/WebWorkerTemplatePlugin");
  542. }
  543. },
  544. node: {
  545. get NodeEnvironmentPlugin() {
  546. return require("./node/NodeEnvironmentPlugin");
  547. },
  548. get NodeSourcePlugin() {
  549. return require("./node/NodeSourcePlugin");
  550. },
  551. get NodeTargetPlugin() {
  552. return require("./node/NodeTargetPlugin");
  553. },
  554. get NodeTemplatePlugin() {
  555. return require("./node/NodeTemplatePlugin");
  556. },
  557. get ReadFileCompileWasmPlugin() {
  558. return require("./node/ReadFileCompileWasmPlugin");
  559. },
  560. get ReadFileCompileAsyncWasmPlugin() {
  561. return require("./node/ReadFileCompileAsyncWasmPlugin");
  562. }
  563. },
  564. electron: {
  565. get ElectronTargetPlugin() {
  566. return require("./electron/ElectronTargetPlugin");
  567. }
  568. },
  569. wasm: {
  570. get AsyncWebAssemblyModulesPlugin() {
  571. return require("./wasm-async/AsyncWebAssemblyModulesPlugin");
  572. },
  573. get EnableWasmLoadingPlugin() {
  574. return require("./wasm/EnableWasmLoadingPlugin");
  575. }
  576. },
  577. css: {
  578. get CssModulesPlugin() {
  579. return require("./css/CssModulesPlugin");
  580. },
  581. // Experimental native CSS parser + safe minifying serializer (its
  582. // `SourceProcessor` / `printer` exports carry the `@experimental` tag).
  583. get syntax() {
  584. return require("./css/syntax");
  585. }
  586. },
  587. html: {
  588. get HtmlModulesPlugin() {
  589. return require("./html/HtmlModulesPlugin");
  590. },
  591. // Experimental native HTML parser + safe minifying serializer (its
  592. // `SourceProcessor` / `printer` exports carry the `@experimental` tag).
  593. get syntax() {
  594. return require("./html/syntax");
  595. }
  596. },
  597. library: {
  598. get AbstractLibraryPlugin() {
  599. return require("./library/AbstractLibraryPlugin");
  600. },
  601. get EnableLibraryPlugin() {
  602. return require("./library/EnableLibraryPlugin");
  603. }
  604. },
  605. // TODO remove in webpack 6 in favor of `dll` scope
  606. get DelegatedPlugin() {
  607. return require("./dll/DelegatedPlugin");
  608. },
  609. get DllPlugin() {
  610. return require("./dll/DllPlugin");
  611. },
  612. get DllReferencePlugin() {
  613. return require("./dll/DllReferencePlugin");
  614. },
  615. get LibManifestPlugin() {
  616. return require("./dll/LibManifestPlugin");
  617. },
  618. dll: {
  619. get DelegatedPlugin() {
  620. return require("./dll/DelegatedPlugin");
  621. },
  622. get DllPlugin() {
  623. return require("./dll/DllPlugin");
  624. },
  625. get DllReferencePlugin() {
  626. return require("./dll/DllReferencePlugin");
  627. },
  628. get LibManifestPlugin() {
  629. return require("./dll/LibManifestPlugin");
  630. }
  631. },
  632. container: {
  633. get ContainerPlugin() {
  634. return require("./container/ContainerPlugin");
  635. },
  636. get ContainerReferencePlugin() {
  637. return require("./container/ContainerReferencePlugin");
  638. },
  639. get ModuleFederationPlugin() {
  640. return require("./container/ModuleFederationPlugin");
  641. },
  642. get scope() {
  643. return require("./container/options").scope;
  644. }
  645. },
  646. sharing: {
  647. get ConsumeSharedPlugin() {
  648. return require("./sharing/ConsumeSharedPlugin");
  649. },
  650. get ProvideSharedPlugin() {
  651. return require("./sharing/ProvideSharedPlugin");
  652. },
  653. get SharePlugin() {
  654. return require("./sharing/SharePlugin");
  655. },
  656. get scope() {
  657. return require("./container/options").scope;
  658. }
  659. },
  660. debug: {
  661. get ProfilingPlugin() {
  662. return require("./debug/ProfilingPlugin");
  663. }
  664. },
  665. util: {
  666. get createHash() {
  667. return require("./util/createHash");
  668. },
  669. get comparators() {
  670. return require("./util/comparators");
  671. },
  672. get runtime() {
  673. return require("./util/runtime");
  674. },
  675. get serialization() {
  676. return require("./util/serialization");
  677. },
  678. get cleverMerge() {
  679. return require("./util/cleverMerge").cachedCleverMerge;
  680. },
  681. get LazySet() {
  682. return require("./util/LazySet");
  683. },
  684. get compileBooleanMatcher() {
  685. return require("./util/compileBooleanMatcher");
  686. }
  687. },
  688. get sources() {
  689. return require("webpack-sources");
  690. },
  691. experiments: {
  692. schemes: {
  693. get HttpUriPlugin() {
  694. return require("./schemes/HttpUriPlugin");
  695. },
  696. get VirtualUrlPlugin() {
  697. return require("./schemes/VirtualUrlPlugin");
  698. }
  699. },
  700. ids: {
  701. get SyncModuleIdsPlugin() {
  702. return require("./ids/SyncModuleIdsPlugin");
  703. }
  704. }
  705. }
  706. });