| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const Compiler = require("./Compiler");
 
- const MultiCompiler = require("./MultiCompiler");
 
- const NodeEnvironmentPlugin = require("./node/NodeEnvironmentPlugin");
 
- const WebpackOptionsApply = require("./WebpackOptionsApply");
 
- const WebpackOptionsDefaulter = require("./WebpackOptionsDefaulter");
 
- const validateSchema = require("./validateSchema");
 
- const WebpackOptionsValidationError = require("./WebpackOptionsValidationError");
 
- const webpackOptionsSchema = require("../schemas/WebpackOptions.json");
 
- const RemovedPluginError = require("./RemovedPluginError");
 
- const version = require("../package.json").version;
 
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
 
- /**
 
-  * @param {WebpackOptions} options options object
 
-  * @param {function(Error=, Stats=): void=} callback callback
 
-  * @returns {Compiler | MultiCompiler} the compiler object
 
-  */
 
- const webpack = (options, callback) => {
 
- 	const webpackOptionsValidationErrors = validateSchema(
 
- 		webpackOptionsSchema,
 
- 		options
 
- 	);
 
- 	if (webpackOptionsValidationErrors.length) {
 
- 		throw new WebpackOptionsValidationError(webpackOptionsValidationErrors);
 
- 	}
 
- 	let compiler;
 
- 	if (Array.isArray(options)) {
 
- 		compiler = new MultiCompiler(
 
- 			Array.from(options).map(options => webpack(options))
 
- 		);
 
- 	} else if (typeof options === "object") {
 
- 		options = new WebpackOptionsDefaulter().process(options);
 
- 		compiler = new Compiler(options.context);
 
- 		compiler.options = options;
 
- 		new NodeEnvironmentPlugin({
 
- 			infrastructureLogging: options.infrastructureLogging
 
- 		}).apply(compiler);
 
- 		if (options.plugins && Array.isArray(options.plugins)) {
 
- 			for (const plugin of options.plugins) {
 
- 				if (typeof plugin === "function") {
 
- 					plugin.call(compiler, compiler);
 
- 				} else {
 
- 					plugin.apply(compiler);
 
- 				}
 
- 			}
 
- 		}
 
- 		compiler.hooks.environment.call();
 
- 		compiler.hooks.afterEnvironment.call();
 
- 		compiler.options = new WebpackOptionsApply().process(options, compiler);
 
- 	} else {
 
- 		throw new Error("Invalid argument: options");
 
- 	}
 
- 	if (callback) {
 
- 		if (typeof callback !== "function") {
 
- 			throw new Error("Invalid argument: callback");
 
- 		}
 
- 		if (
 
- 			options.watch === true ||
 
- 			(Array.isArray(options) && options.some(o => o.watch))
 
- 		) {
 
- 			const watchOptions = Array.isArray(options)
 
- 				? options.map(o => o.watchOptions || {})
 
- 				: options.watchOptions || {};
 
- 			return compiler.watch(watchOptions, callback);
 
- 		}
 
- 		compiler.run(callback);
 
- 	}
 
- 	return compiler;
 
- };
 
- exports = module.exports = webpack;
 
- exports.version = version;
 
- webpack.WebpackOptionsDefaulter = WebpackOptionsDefaulter;
 
- webpack.WebpackOptionsApply = WebpackOptionsApply;
 
- webpack.Compiler = Compiler;
 
- webpack.MultiCompiler = MultiCompiler;
 
- webpack.NodeEnvironmentPlugin = NodeEnvironmentPlugin;
 
- // @ts-ignore Global @this directive is not supported
 
- webpack.validate = validateSchema.bind(this, webpackOptionsSchema);
 
- webpack.validateSchema = validateSchema;
 
- webpack.WebpackOptionsValidationError = WebpackOptionsValidationError;
 
- const exportPlugins = (obj, mappings) => {
 
- 	for (const name of Object.keys(mappings)) {
 
- 		Object.defineProperty(obj, name, {
 
- 			configurable: false,
 
- 			enumerable: true,
 
- 			get: mappings[name]
 
- 		});
 
- 	}
 
- };
 
- exportPlugins(exports, {
 
- 	AutomaticPrefetchPlugin: () => require("./AutomaticPrefetchPlugin"),
 
- 	BannerPlugin: () => require("./BannerPlugin"),
 
- 	CachePlugin: () => require("./CachePlugin"),
 
- 	ContextExclusionPlugin: () => require("./ContextExclusionPlugin"),
 
- 	ContextReplacementPlugin: () => require("./ContextReplacementPlugin"),
 
- 	DefinePlugin: () => require("./DefinePlugin"),
 
- 	Dependency: () => require("./Dependency"),
 
- 	DllPlugin: () => require("./DllPlugin"),
 
- 	DllReferencePlugin: () => require("./DllReferencePlugin"),
 
- 	EnvironmentPlugin: () => require("./EnvironmentPlugin"),
 
- 	EvalDevToolModulePlugin: () => require("./EvalDevToolModulePlugin"),
 
- 	EvalSourceMapDevToolPlugin: () => require("./EvalSourceMapDevToolPlugin"),
 
- 	ExtendedAPIPlugin: () => require("./ExtendedAPIPlugin"),
 
- 	ExternalsPlugin: () => require("./ExternalsPlugin"),
 
- 	HashedModuleIdsPlugin: () => require("./HashedModuleIdsPlugin"),
 
- 	HotModuleReplacementPlugin: () => require("./HotModuleReplacementPlugin"),
 
- 	IgnorePlugin: () => require("./IgnorePlugin"),
 
- 	LibraryTemplatePlugin: () => require("./LibraryTemplatePlugin"),
 
- 	LoaderOptionsPlugin: () => require("./LoaderOptionsPlugin"),
 
- 	LoaderTargetPlugin: () => require("./LoaderTargetPlugin"),
 
- 	MemoryOutputFileSystem: () => require("./MemoryOutputFileSystem"),
 
- 	Module: () => require("./Module"),
 
- 	ModuleFilenameHelpers: () => require("./ModuleFilenameHelpers"),
 
- 	NamedChunksPlugin: () => require("./NamedChunksPlugin"),
 
- 	NamedModulesPlugin: () => require("./NamedModulesPlugin"),
 
- 	NoEmitOnErrorsPlugin: () => require("./NoEmitOnErrorsPlugin"),
 
- 	NormalModuleReplacementPlugin: () =>
 
- 		require("./NormalModuleReplacementPlugin"),
 
- 	PrefetchPlugin: () => require("./PrefetchPlugin"),
 
- 	ProgressPlugin: () => require("./ProgressPlugin"),
 
- 	ProvidePlugin: () => require("./ProvidePlugin"),
 
- 	SetVarMainTemplatePlugin: () => require("./SetVarMainTemplatePlugin"),
 
- 	SingleEntryPlugin: () => require("./SingleEntryPlugin"),
 
- 	SourceMapDevToolPlugin: () => require("./SourceMapDevToolPlugin"),
 
- 	Stats: () => require("./Stats"),
 
- 	Template: () => require("./Template"),
 
- 	UmdMainTemplatePlugin: () => require("./UmdMainTemplatePlugin"),
 
- 	WatchIgnorePlugin: () => require("./WatchIgnorePlugin")
 
- });
 
- exportPlugins((exports.dependencies = {}), {
 
- 	DependencyReference: () => require("./dependencies/DependencyReference")
 
- });
 
- exportPlugins((exports.optimize = {}), {
 
- 	AggressiveMergingPlugin: () => require("./optimize/AggressiveMergingPlugin"),
 
- 	AggressiveSplittingPlugin: () =>
 
- 		require("./optimize/AggressiveSplittingPlugin"),
 
- 	ChunkModuleIdRangePlugin: () =>
 
- 		require("./optimize/ChunkModuleIdRangePlugin"),
 
- 	LimitChunkCountPlugin: () => require("./optimize/LimitChunkCountPlugin"),
 
- 	MinChunkSizePlugin: () => require("./optimize/MinChunkSizePlugin"),
 
- 	ModuleConcatenationPlugin: () =>
 
- 		require("./optimize/ModuleConcatenationPlugin"),
 
- 	OccurrenceOrderPlugin: () => require("./optimize/OccurrenceOrderPlugin"),
 
- 	OccurrenceModuleOrderPlugin: () =>
 
- 		require("./optimize/OccurrenceModuleOrderPlugin"),
 
- 	OccurrenceChunkOrderPlugin: () =>
 
- 		require("./optimize/OccurrenceChunkOrderPlugin"),
 
- 	RuntimeChunkPlugin: () => require("./optimize/RuntimeChunkPlugin"),
 
- 	SideEffectsFlagPlugin: () => require("./optimize/SideEffectsFlagPlugin"),
 
- 	SplitChunksPlugin: () => require("./optimize/SplitChunksPlugin")
 
- });
 
- exportPlugins((exports.web = {}), {
 
- 	FetchCompileWasmTemplatePlugin: () =>
 
- 		require("./web/FetchCompileWasmTemplatePlugin"),
 
- 	JsonpTemplatePlugin: () => require("./web/JsonpTemplatePlugin")
 
- });
 
- exportPlugins((exports.webworker = {}), {
 
- 	WebWorkerTemplatePlugin: () => require("./webworker/WebWorkerTemplatePlugin")
 
- });
 
- exportPlugins((exports.node = {}), {
 
- 	NodeTemplatePlugin: () => require("./node/NodeTemplatePlugin"),
 
- 	ReadFileCompileWasmTemplatePlugin: () =>
 
- 		require("./node/ReadFileCompileWasmTemplatePlugin")
 
- });
 
- exportPlugins((exports.debug = {}), {
 
- 	ProfilingPlugin: () => require("./debug/ProfilingPlugin")
 
- });
 
- exportPlugins((exports.util = {}), {
 
- 	createHash: () => require("./util/createHash")
 
- });
 
- const defineMissingPluginError = (namespace, pluginName, errorMessage) => {
 
- 	Object.defineProperty(namespace, pluginName, {
 
- 		configurable: false,
 
- 		enumerable: true,
 
- 		get() {
 
- 			throw new RemovedPluginError(errorMessage);
 
- 		}
 
- 	});
 
- };
 
- // TODO remove in webpack 5
 
- defineMissingPluginError(
 
- 	exports.optimize,
 
- 	"UglifyJsPlugin",
 
- 	"webpack.optimize.UglifyJsPlugin has been removed, please use config.optimization.minimize instead."
 
- );
 
- // TODO remove in webpack 5
 
- defineMissingPluginError(
 
- 	exports.optimize,
 
- 	"CommonsChunkPlugin",
 
- 	"webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead."
 
- );
 
 
  |