From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送
---
node_modules/webpack/lib/LoaderOptionsPlugin.js | 36 ++++++++++++++++++++----------------
1 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/node_modules/webpack/lib/LoaderOptionsPlugin.js b/node_modules/webpack/lib/LoaderOptionsPlugin.js
index c0a31a3..b3db6e8 100644
--- a/node_modules/webpack/lib/LoaderOptionsPlugin.js
+++ b/node_modules/webpack/lib/LoaderOptionsPlugin.js
@@ -7,49 +7,53 @@
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
const NormalModule = require("./NormalModule");
-const createSchemaValidation = require("./util/create-schema-validation");
/** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */
/** @typedef {import("./Compiler")} Compiler */
/** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
/**
+ * Defines the loader context type used by this module.
* @template T
* @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
*/
-
-const validate = createSchemaValidation(
- require("../schemas/plugins/LoaderOptionsPlugin.check"),
- () => require("../schemas/plugins/LoaderOptionsPlugin.json"),
- {
- name: "Loader Options Plugin",
- baseDataPath: "options"
- }
-);
const PLUGIN_NAME = "LoaderOptionsPlugin";
class LoaderOptionsPlugin {
/**
+ * Creates an instance of LoaderOptionsPlugin.
* @param {LoaderOptionsPluginOptions & MatchObject} options options object
*/
constructor(options = {}) {
- validate(options);
// If no options are set then generate empty options object
if (typeof options !== "object") options = {};
if (!options.test) {
options.test = () => true;
}
+ /** @type {LoaderOptionsPluginOptions & MatchObject} */
this.options = options;
}
/**
- * Apply the plugin
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler} compiler the compiler instance
* @returns {void}
*/
apply(compiler) {
- const options = this.options;
+ compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+ compiler.validate(
+ () => require("../schemas/plugins/LoaderOptionsPlugin.json"),
+ this.options,
+ {
+ name: "Loader Options Plugin",
+ baseDataPath: "options"
+ },
+ (options) =>
+ require("../schemas/plugins/LoaderOptionsPlugin.check")(options)
+ );
+ });
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
NormalModule.getCompilationHooks(compilation).loader.tap(
PLUGIN_NAME,
@@ -59,17 +63,17 @@
const i = resource.indexOf("?");
if (
ModuleFilenameHelpers.matchObject(
- options,
+ this.options,
i < 0 ? resource : resource.slice(0, i)
)
) {
- for (const key of Object.keys(options)) {
+ for (const key of Object.keys(this.options)) {
if (key === "include" || key === "exclude" || key === "test") {
continue;
}
/** @type {LoaderContext<EXPECTED_ANY> & Record<string, EXPECTED_ANY>} */
- (context)[key] = options[key];
+ (context)[key] = this.options[key];
}
}
}
--
Gitblit v1.9.3