提交学习笔记专用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

675 lines
21 KiB

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