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

Method apply

lib/ContextReplacementPlugin.js:100–207  ·  view source on GitHub ↗

* 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

98 * @returns {void}
99 */
100 apply(compiler) {
101 const resourceRegExp = this.resourceRegExp;
102 const newContentCallback = this.newContentCallback;
103 const newContentResource = this.newContentResource;
104 const newContentRecursive = this.newContentRecursive;
105 const newContentRegExp = this.newContentRegExp;
106 const newContentCreateContextMap = this.newContentCreateContextMap;
107
108 compiler.hooks.contextModuleFactory.tap(PLUGIN_NAME, (cmf) => {
109 cmf.hooks.beforeResolve.tap(PLUGIN_NAME, (result) => {
110 if (!result) return;
111 if (resourceRegExp.test(result.request)) {
112 if (newContentResource !== undefined) {
113 result.request = newContentResource;
114 }
115 if (newContentRecursive !== undefined) {
116 result.recursive = newContentRecursive;
117 }
118 if (newContentRegExp !== undefined) {
119 result.regExp = newContentRegExp;
120 }
121 if (typeof newContentCallback === "function") {
122 newContentCallback(result);
123 } else {
124 for (const d of result.dependencies) {
125 if (d.critical) d.critical = false;
126 }
127 }
128 }
129 return result;
130 });
131 cmf.hooks.afterResolve.tap(PLUGIN_NAME, (result) => {
132 if (!result) return;
133 const isMatchResourceRegExp = () => {
134 if (Array.isArray(result.resource)) {
135 return result.resource.some((item) => resourceRegExp.test(item));
136 }
137
138 return resourceRegExp.test(result.resource);
139 };
140 if (isMatchResourceRegExp()) {
141 if (newContentResource !== undefined) {
142 if (
143 newContentResource.startsWith("/") ||
144 (newContentResource.length > 1 && newContentResource[1] === ":")
145 ) {
146 result.resource = newContentResource;
147 } else {
148 const rootPath =
149 typeof result.resource === "string"
150 ? result.resource
151 : /** @type {string} */
152 (result.resource.find((item) => resourceRegExp.test(item)));
153 result.resource = join(
154 /** @type {InputFileSystem} */
155 (compiler.inputFileSystem),
156 rootPath,
157 newContentResource

Callers

nothing calls this directly

Calls 5

joinFunction · 0.85
tapMethod · 0.80
isArrayMethod · 0.80
testMethod · 0.45

Tested by

no test coverage detected