UNPKG

1.28 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const path = require("path");
8
9class NormalModuleReplacementPlugin {
10 constructor(resourceRegExp, newResource) {
11 this.resourceRegExp = resourceRegExp;
12 this.newResource = newResource;
13 }
14
15 apply(compiler) {
16 const resourceRegExp = this.resourceRegExp;
17 const newResource = this.newResource;
18 compiler.hooks.normalModuleFactory.tap(
19 "NormalModuleReplacementPlugin",
20 nmf => {
21 nmf.hooks.beforeResolve.tap("NormalModuleReplacementPlugin", result => {
22 if (!result) return;
23 if (resourceRegExp.test(result.request)) {
24 if (typeof newResource === "function") {
25 newResource(result);
26 } else {
27 result.request = newResource;
28 }
29 }
30 return result;
31 });
32 nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
33 if (!result) return;
34 if (resourceRegExp.test(result.resource)) {
35 if (typeof newResource === "function") {
36 newResource(result);
37 } else {
38 result.resource = path.resolve(
39 path.dirname(result.resource),
40 newResource
41 );
42 }
43 }
44 return result;
45 });
46 }
47 );
48 }
49}
50
51module.exports = NormalModuleReplacementPlugin;