| 
									
										
										
										
											2012-03-12 04:50:55 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | var Compiler = require("./Compiler"); | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | var MultiCompiler = require("./MultiCompiler"); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | var NodeEnvironmentPlugin = require("./node/NodeEnvironmentPlugin"); | 
					
						
							|  |  |  | var WebpackOptionsApply = require("./WebpackOptionsApply"); | 
					
						
							|  |  |  | var WebpackOptionsDefaulter = require("./WebpackOptionsDefaulter"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function webpack(options, callback) { | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | 	var compiler; | 
					
						
							|  |  |  | 	if(Array.isArray(options)) { | 
					
						
							|  |  |  | 		compiler = new MultiCompiler(options.map(function(options) { | 
					
						
							|  |  |  | 			return webpack(options); | 
					
						
							|  |  |  | 		})); | 
					
						
							| 
									
										
										
										
											2015-01-21 19:38:57 +08:00
										 |  |  | 	} else if(typeof options === "object") { | 
					
						
							| 
									
										
										
										
											2016-05-05 15:00:55 +08:00
										 |  |  | 		if(!options.entry && !options.plugins) { | 
					
						
							| 
									
										
										
										
											2016-06-25 11:44:05 +08:00
										 |  |  | 			throw new Error("Passed 'options' object does not look like a valid webpack configuration"); | 
					
						
							| 
									
										
										
										
											2016-05-05 15:00:55 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | 		new WebpackOptionsDefaulter().process(options); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | 		compiler = new Compiler(); | 
					
						
							|  |  |  | 		compiler.options = options; | 
					
						
							|  |  |  | 		compiler.options = new WebpackOptionsApply().process(options, compiler); | 
					
						
							|  |  |  | 		new NodeEnvironmentPlugin().apply(compiler); | 
					
						
							| 
									
										
										
										
											2014-10-09 06:53:05 +08:00
										 |  |  | 		compiler.applyPlugins("environment"); | 
					
						
							|  |  |  | 		compiler.applyPlugins("after-environment"); | 
					
						
							| 
									
										
										
										
											2015-01-21 19:38:57 +08:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		throw new Error("Invalid argument: options"); | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 	if(callback) { | 
					
						
							| 
									
										
										
										
											2015-01-21 19:38:57 +08:00
										 |  |  | 		if(typeof callback !== "function") throw new Error("Invalid argument: callback"); | 
					
						
							| 
									
										
										
										
											2016-04-04 17:20:52 +08:00
										 |  |  | 		if(options.watch === true || (Array.isArray(options) && | 
					
						
							|  |  |  | 				options.some(function(o) { | 
					
						
							|  |  |  | 					return o.watch; | 
					
						
							|  |  |  | 				}))) { | 
					
						
							| 
									
										
										
										
											2015-05-13 01:58:12 +08:00
										 |  |  | 			var watchOptions = (!Array.isArray(options) ? options : options[0]).watchOptions || {}; | 
					
						
							| 
									
										
										
										
											2015-05-10 19:50:15 +08:00
										 |  |  | 			return compiler.watch(watchOptions, callback); | 
					
						
							| 
									
										
										
										
											2012-03-10 20:11:23 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-05-10 19:50:15 +08:00
										 |  |  | 		compiler.run(callback); | 
					
						
							| 
									
										
										
										
											2012-10-20 21:08:12 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 	return compiler; | 
					
						
							| 
									
										
										
										
											2012-05-07 15:01:28 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | exports = module.exports = webpack; | 
					
						
							| 
									
										
										
										
											2012-05-07 15:01:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | webpack.WebpackOptionsDefaulter = WebpackOptionsDefaulter; | 
					
						
							|  |  |  | webpack.WebpackOptionsApply = WebpackOptionsApply; | 
					
						
							|  |  |  | webpack.Compiler = Compiler; | 
					
						
							| 
									
										
										
										
											2014-06-12 04:26:50 +08:00
										 |  |  | webpack.MultiCompiler = MultiCompiler; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | webpack.NodeEnvironmentPlugin = NodeEnvironmentPlugin; | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | function exportPlugins(exports, path, plugins) { | 
					
						
							|  |  |  | 	plugins.forEach(function(name) { | 
					
						
							|  |  |  | 		Object.defineProperty(exports, name, { | 
					
						
							|  |  |  | 			configurable: false, | 
					
						
							|  |  |  | 			enumerable: true, | 
					
						
							|  |  |  | 			get: function() { | 
					
						
							|  |  |  | 				return require(path + "/" + name); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | exportPlugins(exports, ".", [ | 
					
						
							|  |  |  | 	"DefinePlugin", | 
					
						
							|  |  |  | 	"NormalModuleReplacementPlugin", | 
					
						
							|  |  |  | 	"ContextReplacementPlugin", | 
					
						
							|  |  |  | 	"IgnorePlugin", | 
					
						
							| 
									
										
										
										
											2015-03-05 15:18:11 +08:00
										 |  |  | 	"WatchIgnorePlugin", | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | 	"BannerPlugin", | 
					
						
							|  |  |  | 	"PrefetchPlugin", | 
					
						
							| 
									
										
										
										
											2015-02-05 06:21:55 +08:00
										 |  |  | 	"AutomaticPrefetchPlugin", | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | 	"ProvidePlugin", | 
					
						
							|  |  |  | 	"HotModuleReplacementPlugin", | 
					
						
							| 
									
										
										
										
											2014-06-24 06:41:10 +08:00
										 |  |  | 	"SourceMapDevToolPlugin", | 
					
						
							| 
									
										
										
										
											2015-03-02 12:49:43 +08:00
										 |  |  | 	"EvalSourceMapDevToolPlugin", | 
					
						
							| 
									
										
										
										
											2014-06-24 06:41:10 +08:00
										 |  |  | 	"EvalDevToolModulePlugin", | 
					
						
							|  |  |  | 	"CachePlugin", | 
					
						
							| 
									
										
										
										
											2014-08-25 15:50:26 +08:00
										 |  |  | 	"ExtendedAPIPlugin", | 
					
						
							| 
									
										
										
										
											2014-06-24 06:41:10 +08:00
										 |  |  | 	"ExternalsPlugin", | 
					
						
							|  |  |  | 	"JsonpTemplatePlugin", | 
					
						
							|  |  |  | 	"LibraryTemplatePlugin", | 
					
						
							|  |  |  | 	"LoaderTargetPlugin", | 
					
						
							|  |  |  | 	"MemoryOutputFileSystem", | 
					
						
							|  |  |  | 	"ProgressPlugin", | 
					
						
							|  |  |  | 	"SetVarMainTemplatePlugin", | 
					
						
							|  |  |  | 	"UmdMainTemplatePlugin", | 
					
						
							| 
									
										
										
										
											2014-09-03 20:16:17 +08:00
										 |  |  | 	"NoErrorsPlugin", | 
					
						
							| 
									
										
										
										
											2014-10-09 06:53:05 +08:00
										 |  |  | 	"NewWatchingPlugin", | 
					
						
							| 
									
										
										
										
											2015-05-18 05:29:40 +08:00
										 |  |  | 	"EnvironmentPlugin", | 
					
						
							|  |  |  | 	"DllPlugin", | 
					
						
							| 
									
										
										
										
											2015-06-28 04:47:51 +08:00
										 |  |  | 	"DllReferencePlugin", | 
					
						
							| 
									
										
										
										
											2015-11-17 06:11:15 +08:00
										 |  |  | 	"LoaderOptionsPlugin", | 
					
						
							| 
									
										
										
										
											2015-11-30 03:16:01 +08:00
										 |  |  | 	"NamedModulesPlugin", | 
					
						
							| 
									
										
										
										
											2016-08-17 18:52:02 +08:00
										 |  |  | 	"HashedModuleIdsPlugin", | 
					
						
							|  |  |  | 	"ModuleFilenameHelpers" | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | ]); | 
					
						
							|  |  |  | exportPlugins(exports.optimize = {}, "./optimize", [ | 
					
						
							| 
									
										
										
										
											2014-02-05 19:37:37 +08:00
										 |  |  | 	"AggressiveMergingPlugin", | 
					
						
							| 
									
										
										
										
											2016-07-13 17:03:14 +08:00
										 |  |  | 	"AggressiveSplittingPlugin", | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | 	"CommonsChunkPlugin", | 
					
						
							|  |  |  | 	"DedupePlugin", | 
					
						
							|  |  |  | 	"LimitChunkCountPlugin", | 
					
						
							|  |  |  | 	"MinChunkSizePlugin", | 
					
						
							| 
									
										
										
										
											2014-02-25 15:51:40 +08:00
										 |  |  | 	"OccurrenceOrderPlugin", | 
					
						
							| 
									
										
										
										
											2013-12-18 06:21:49 +08:00
										 |  |  | 	"UglifyJsPlugin" | 
					
						
							|  |  |  | ]); | 
					
						
							|  |  |  | exportPlugins(exports.dependencies = {}, "./dependencies", [ | 
					
						
							|  |  |  | ]); |