From 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 四月 2026 11:46:41 +0800
Subject: [PATCH] 推送

---
 node_modules/webpack/lib/webpack.js |   70 ++++++++++++++++++++++++++++++----
 1 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/node_modules/webpack/lib/webpack.js b/node_modules/webpack/lib/webpack.js
index b959761..321e926 100644
--- a/node_modules/webpack/lib/webpack.js
+++ b/node_modules/webpack/lib/webpack.js
@@ -15,22 +15,29 @@
 	applyWebpackOptionsBaseDefaults,
 	applyWebpackOptionsDefaults
 } = require("./config/defaults");
-const { getNormalizedWebpackOptions } = require("./config/normalization");
+const {
+	applyWebpackOptionsInterception,
+	getNormalizedWebpackOptions
+} = require("./config/normalization");
 const NodeEnvironmentPlugin = require("./node/NodeEnvironmentPlugin");
 const memoize = require("./util/memoize");
 
 /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
-/** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
 /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptionsNormalizedWithDefaults */
+/** @typedef {import("./config/normalization").WebpackOptionsInterception} WebpackOptionsInterception */
 /** @typedef {import("./Compiler").WatchOptions} WatchOptions */
 /** @typedef {import("./MultiCompiler").MultiCompilerOptions} MultiCompilerOptions */
 /** @typedef {import("./MultiCompiler").MultiWebpackOptions} MultiWebpackOptions */
 /** @typedef {import("./MultiStats")} MultiStats */
 /** @typedef {import("./Stats")} Stats */
 
+/** @typedef {(this: Compiler, compiler: Compiler) => void} WebpackPluginFunction */
+/** @typedef {(compiler: Compiler) => void} WebpackPluginInstanceApplyFunction */
+
 const getValidateSchema = memoize(() => require("./validateSchema"));
 
 /**
+ * Defines the callback callback.
  * @template T
  * @template [R=void]
  * @callback Callback
@@ -42,6 +49,7 @@
 /** @typedef {Callback<void>} ErrorCallback */
 
 /**
+ * Creates a multi compiler.
  * @param {ReadonlyArray<WebpackOptions>} childOptions options array
  * @param {MultiCompilerOptions} options options
  * @returns {MultiCompiler} a multi-compiler
@@ -63,13 +71,19 @@
 };
 
 /**
+ * Creates a compiler.
  * @param {WebpackOptions} rawOptions options object
  * @param {number=} compilerIndex index of compiler
  * @returns {Compiler} a compiler
  */
 const createCompiler = (rawOptions, compilerIndex) => {
-	const options = getNormalizedWebpackOptions(rawOptions);
+	let options = getNormalizedWebpackOptions(rawOptions);
 	applyWebpackOptionsBaseDefaults(options);
+
+	/** @type {WebpackOptionsInterception=} */
+	let interception;
+	({ options, interception } = applyWebpackOptionsInterception(options));
+
 	const compiler = new Compiler(
 		/** @type {string} */ (options.context),
 		options
@@ -94,18 +108,23 @@
 	if (resolvedDefaultOptions.platform) {
 		compiler.platform = resolvedDefaultOptions.platform;
 	}
+	if (options.validate) {
+		compiler.hooks.validate.call();
+	}
 	compiler.hooks.environment.call();
 	compiler.hooks.afterEnvironment.call();
 	new WebpackOptionsApply().process(
 		/** @type {WebpackOptionsNormalizedWithDefaults} */
 		(options),
-		compiler
+		compiler,
+		interception
 	);
 	compiler.hooks.initialize.call();
 	return compiler;
 };
 
 /**
+ * Returns array of options.
  * @template T
  * @param {T[] | T} options options
  * @returns {T[]} array of options
@@ -114,53 +133,86 @@
 	Array.isArray(options) ? [...options] : [options];
 
 /**
+ * Checks whether it needs validate.
+ * @param {WebpackOptions | null | undefined} options options
+ * @returns {boolean} true when need to validate, otherwise false
+ */
+const needValidate = (options) => {
+	if (
+		options &&
+		(options.validate === false ||
+			(options.experiments &&
+				options.experiments.futureDefaults === true &&
+				(options.mode === "production" || !options.mode)))
+	) {
+		return false;
+	}
+
+	return true;
+};
+
+/**
+ * Returns the compiler object.
  * @overload
  * @param {WebpackOptions} options options object
  * @param {Callback<Stats>} callback callback
  * @returns {Compiler | null} the compiler object
  */
 /**
+ * Returns the compiler object.
  * @overload
  * @param {WebpackOptions} options options object
  * @returns {Compiler} the compiler object
  */
 /**
+ * Returns the multi compiler object.
  * @overload
  * @param {MultiWebpackOptions} options options objects
  * @param {Callback<MultiStats>} callback callback
  * @returns {MultiCompiler | null} the multi compiler object
  */
 /**
+ * Returns the multi compiler object.
  * @overload
  * @param {MultiWebpackOptions} options options objects
  * @returns {MultiCompiler} the multi compiler object
  */
 /**
+ * Returns compiler or MultiCompiler.
  * @param {WebpackOptions | MultiWebpackOptions} options options
  * @param {Callback<Stats> & Callback<MultiStats>=} callback callback
  * @returns {Compiler | MultiCompiler | null} Compiler or MultiCompiler
  */
 const webpack = (options, callback) => {
 	const create = () => {
+		const isMultiCompiler = Array.isArray(options);
+
 		if (
-			!asArray(/** @type {WebpackOptions} */ (options)).every(
-				webpackOptionsSchemaCheck
+			!asArray(/** @type {WebpackOptions} */ (options)).every((options) =>
+				needValidate(options) ? webpackOptionsSchemaCheck(options) : true
 			)
 		) {
-			getValidateSchema()(webpackOptionsSchema, options);
+			getValidateSchema()(
+				webpackOptionsSchema,
+				isMultiCompiler
+					? options.map((options) => (needValidate(options) ? options : {}))
+					: needValidate(options)
+						? options
+						: {}
+			);
 			util.deprecate(
 				() => {},
 				"webpack bug: Pre-compiled schema reports error while real schema is happy. This has performance drawbacks.",
 				"DEP_WEBPACK_PRE_COMPILED_SCHEMA_INVALID"
 			)();
 		}
-		/** @type {MultiCompiler|Compiler} */
+		/** @type {MultiCompiler | Compiler} */
 		let compiler;
 		/** @type {boolean | undefined} */
 		let watch = false;
 		/** @type {WatchOptions | WatchOptions[]} */
 		let watchOptions;
-		if (Array.isArray(options)) {
+		if (isMultiCompiler) {
 			/** @type {MultiCompiler} */
 			compiler = createMultiCompiler(
 				options,

--
Gitblit v1.9.3