MCPcopy
hub / github.com/webpack/webpack / apply

Method apply

lib/javascript/JavascriptModulesPlugin.js:434–750  ·  lib/javascript/JavascriptModulesPlugin.js::JavascriptModulesPlugin.apply

* Applies the plugin by registering its hooks on the compiler. * @param {Compiler} compiler the compiler instance * @returns {void}

(compiler)

Source from the content-addressed store, hash-verified

432 * @returns {void}
433 */
434 apply(compiler) {
435 compiler.hooks.compilation.tap(
436 PLUGIN_NAME,
437 (compilation, { normalModuleFactory }) => {
438 const hooks = JavascriptModulesPlugin.getCompilationHooks(compilation);
439
440 for (const type of [
441 JAVASCRIPT_MODULE_TYPE_AUTO,
442 JAVASCRIPT_MODULE_TYPE_DYNAMIC,
443 JAVASCRIPT_MODULE_TYPE_ESM
444 ]) {
445 normalModuleFactory.hooks.createModuleClass
446 .for(type)
447 .tap(
448 PLUGIN_NAME,
449 (createData, _resolveData) => new JavascriptModule(createData)
450 );
451 normalModuleFactory.hooks.createParser
452 .for(type)
453 .tap(PLUGIN_NAME, (options) => {
454 switch (type) {
455 case JAVASCRIPT_MODULE_TYPE_AUTO: {
456 return new JavascriptParser(class="st">"auto", {
457 parse: options.parse,
458 typescript: options.typescript
459 });
460 }
461 case JAVASCRIPT_MODULE_TYPE_DYNAMIC: {
462 return new JavascriptParser(class="st">"script", {
463 parse: options.parse,
464 typescript: options.typescript
465 });
466 }
467 case JAVASCRIPT_MODULE_TYPE_ESM: {
468 return new JavascriptParser(class="st">"module", {
469 parse: options.parse,
470 typescript: options.typescript
471 });
472 }
473 }
474 });
475 normalModuleFactory.hooks.createGenerator
476 .for(type)
477 .tap(PLUGIN_NAME, () => new JavascriptGenerator());
478
479 NormalModule.getCompilationHooks(compilation).processResult.tap(
480 PLUGIN_NAME,
481 (result, module) => {
482 if (module.type === type) {
483 const [source, ...rest] = result;
484
485 return [removeBOM(source), ...rest];
486 }
487
488 return result;
489 }
490 );
491 }

Callers

nothing calls this directly

Calls 15

renderChunkMethod · 0.95
renderMainMethod · 0.95
addMethod · 0.95
updateHashMethod · 0.95
chunkHasRuntimeOrJsFunction · 0.85
createHashFunction · 0.85
tapMethod · 0.80
isModuleMethod · 0.80
hasRuntimeMethod · 0.80

Tested by

no test coverage detected