summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/NormalModuleReplacementPlugin.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
commitd1d9f00b1bd660842addf5e6b1d1b64c852a9eea (patch)
tree60fb37ae73a1109d95301de5ec9b61b5726a4b61 /node_modules/webpack/lib/NormalModuleReplacementPlugin.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/webpack/lib/NormalModuleReplacementPlugin.js')
-rw-r--r--node_modules/webpack/lib/NormalModuleReplacementPlugin.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/NormalModuleReplacementPlugin.js b/node_modules/webpack/lib/NormalModuleReplacementPlugin.js
new file mode 100644
index 00000000..53b6c12a
--- /dev/null
+++ b/node_modules/webpack/lib/NormalModuleReplacementPlugin.js
@@ -0,0 +1,73 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { join, dirname } = require("./util/fs");
+
+/** @typedef {import("./Compiler")} Compiler */
+/** @typedef {function(import("./NormalModuleFactory").ResolveData): void} ModuleReplacer */
+
+class NormalModuleReplacementPlugin {
+ /**
+ * Create an instance of the plugin
+ * @param {RegExp} resourceRegExp the resource matcher
+ * @param {string|ModuleReplacer} newResource the resource replacement
+ */
+ constructor(resourceRegExp, newResource) {
+ this.resourceRegExp = resourceRegExp;
+ this.newResource = newResource;
+ }
+
+ /**
+ * Apply the plugin
+ * @param {Compiler} compiler the compiler instance
+ * @returns {void}
+ */
+ apply(compiler) {
+ const resourceRegExp = this.resourceRegExp;
+ const newResource = this.newResource;
+ compiler.hooks.normalModuleFactory.tap(
+ "NormalModuleReplacementPlugin",
+ nmf => {
+ nmf.hooks.beforeResolve.tap("NormalModuleReplacementPlugin", result => {
+ if (resourceRegExp.test(result.request)) {
+ if (typeof newResource === "function") {
+ newResource(result);
+ } else {
+ result.request = newResource;
+ }
+ }
+ });
+ nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
+ const createData = result.createData;
+ if (
+ resourceRegExp.test(/** @type {string} */ (createData.resource))
+ ) {
+ if (typeof newResource === "function") {
+ newResource(result);
+ } else {
+ const fs = compiler.inputFileSystem;
+ if (
+ newResource.startsWith("/") ||
+ (newResource.length > 1 && newResource[1] === ":")
+ ) {
+ createData.resource = newResource;
+ } else {
+ createData.resource = join(
+ fs,
+ dirname(fs, /** @type {string} */ (createData.resource)),
+ newResource
+ );
+ }
+ }
+ }
+ });
+ }
+ );
+ }
+}
+
+module.exports = NormalModuleReplacementPlugin;