| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const OptionsApply = require("./OptionsApply");
 
- const LoaderTargetPlugin = require("./LoaderTargetPlugin");
 
- const FunctionModulePlugin = require("./FunctionModulePlugin");
 
- const EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
 
- const SourceMapDevToolPlugin = require("./SourceMapDevToolPlugin");
 
- const EvalSourceMapDevToolPlugin = require("./EvalSourceMapDevToolPlugin");
 
- const EntryOptionPlugin = require("./EntryOptionPlugin");
 
- const RecordIdsPlugin = require("./RecordIdsPlugin");
 
- const APIPlugin = require("./APIPlugin");
 
- const ConstPlugin = require("./ConstPlugin");
 
- const RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
 
- const NodeStuffPlugin = require("./NodeStuffPlugin");
 
- const CompatibilityPlugin = require("./CompatibilityPlugin");
 
- const TemplatedPathPlugin = require("./TemplatedPathPlugin");
 
- const WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
 
- const UseStrictPlugin = require("./UseStrictPlugin");
 
- const LoaderPlugin = require("./dependencies/LoaderPlugin");
 
- const CommonJsPlugin = require("./dependencies/CommonJsPlugin");
 
- const HarmonyModulesPlugin = require("./dependencies/HarmonyModulesPlugin");
 
- const SystemPlugin = require("./dependencies/SystemPlugin");
 
- const ImportPlugin = require("./dependencies/ImportPlugin");
 
- const AMDPlugin = require("./dependencies/AMDPlugin");
 
- const RequireContextPlugin = require("./dependencies/RequireContextPlugin");
 
- const RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
 
- const RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
 
- const EnsureChunkConditionsPlugin = require("./optimize/EnsureChunkConditionsPlugin");
 
- const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
 
- const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
 
- const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
 
- const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
 
- const OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin");
 
- const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin");
 
- const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
 
- const SizeLimitsPlugin = require("./performance/SizeLimitsPlugin");
 
- const ResolverFactory = require("enhanced-resolve").ResolverFactory;
 
- class WebpackOptionsApply extends OptionsApply {
 
- 	constructor() {
 
- 		super();
 
- 	}
 
- 	process(options, compiler) {
 
- 		let ExternalsPlugin;
 
- 		compiler.outputPath = options.output.path;
 
- 		compiler.recordsInputPath = options.recordsInputPath || options.recordsPath;
 
- 		compiler.recordsOutputPath = options.recordsOutputPath || options.recordsPath;
 
- 		compiler.name = options.name;
 
- 		compiler.dependencies = options.dependencies;
 
- 		if(typeof options.target === "string") {
 
- 			let JsonpTemplatePlugin;
 
- 			let NodeSourcePlugin;
 
- 			let NodeTargetPlugin;
 
- 			let NodeTemplatePlugin;
 
- 			switch(options.target) {
 
- 				case "web":
 
- 					JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
 
- 					NodeSourcePlugin = require("./node/NodeSourcePlugin");
 
- 					compiler.apply(
 
- 						new JsonpTemplatePlugin(options.output),
 
- 						new FunctionModulePlugin(options.output),
 
- 						new NodeSourcePlugin(options.node),
 
- 						new LoaderTargetPlugin(options.target)
 
- 					);
 
- 					break;
 
- 				case "webworker":
 
- 					{
 
- 						let WebWorkerTemplatePlugin = require("./webworker/WebWorkerTemplatePlugin");
 
- 						NodeSourcePlugin = require("./node/NodeSourcePlugin");
 
- 						compiler.apply(
 
- 							new WebWorkerTemplatePlugin(),
 
- 							new FunctionModulePlugin(options.output),
 
- 							new NodeSourcePlugin(options.node),
 
- 							new LoaderTargetPlugin(options.target)
 
- 						);
 
- 						break;
 
- 					}
 
- 				case "node":
 
- 				case "async-node":
 
- 					NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
 
- 					NodeTargetPlugin = require("./node/NodeTargetPlugin");
 
- 					compiler.apply(
 
- 						new NodeTemplatePlugin({
 
- 							asyncChunkLoading: options.target === "async-node"
 
- 						}),
 
- 						new FunctionModulePlugin(options.output),
 
- 						new NodeTargetPlugin(),
 
- 						new LoaderTargetPlugin("node")
 
- 					);
 
- 					break;
 
- 				case "node-webkit":
 
- 					JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
 
- 					NodeTargetPlugin = require("./node/NodeTargetPlugin");
 
- 					ExternalsPlugin = require("./ExternalsPlugin");
 
- 					compiler.apply(
 
- 						new JsonpTemplatePlugin(options.output),
 
- 						new FunctionModulePlugin(options.output),
 
- 						new NodeTargetPlugin(),
 
- 						new ExternalsPlugin("commonjs", "nw.gui"),
 
- 						new LoaderTargetPlugin(options.target)
 
- 					);
 
- 					break;
 
- 				case "atom":
 
- 				case "electron":
 
- 				case "electron-main":
 
- 					NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
 
- 					NodeTargetPlugin = require("./node/NodeTargetPlugin");
 
- 					ExternalsPlugin = require("./ExternalsPlugin");
 
- 					compiler.apply(
 
- 						new NodeTemplatePlugin({
 
- 							asyncChunkLoading: true
 
- 						}),
 
- 						new FunctionModulePlugin(options.output),
 
- 						new NodeTargetPlugin(),
 
- 						new ExternalsPlugin("commonjs", [
 
- 							"app",
 
- 							"auto-updater",
 
- 							"browser-window",
 
- 							"content-tracing",
 
- 							"dialog",
 
- 							"electron",
 
- 							"global-shortcut",
 
- 							"ipc",
 
- 							"ipc-main",
 
- 							"menu",
 
- 							"menu-item",
 
- 							"power-monitor",
 
- 							"power-save-blocker",
 
- 							"protocol",
 
- 							"session",
 
- 							"web-contents",
 
- 							"tray",
 
- 							"clipboard",
 
- 							"crash-reporter",
 
- 							"native-image",
 
- 							"screen",
 
- 							"shell"
 
- 						]),
 
- 						new LoaderTargetPlugin(options.target)
 
- 					);
 
- 					break;
 
- 				case "electron-renderer":
 
- 					JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
 
- 					NodeTargetPlugin = require("./node/NodeTargetPlugin");
 
- 					ExternalsPlugin = require("./ExternalsPlugin");
 
- 					compiler.apply(
 
- 						new JsonpTemplatePlugin(options.output),
 
- 						new FunctionModulePlugin(options.output),
 
- 						new NodeTargetPlugin(),
 
- 						new ExternalsPlugin("commonjs", [
 
- 							"desktop-capturer",
 
- 							"electron",
 
- 							"ipc",
 
- 							"ipc-renderer",
 
- 							"remote",
 
- 							"web-frame",
 
- 							"clipboard",
 
- 							"crash-reporter",
 
- 							"native-image",
 
- 							"screen",
 
- 							"shell"
 
- 						]),
 
- 						new LoaderTargetPlugin(options.target)
 
- 					);
 
- 					break;
 
- 				default:
 
- 					throw new Error("Unsupported target '" + options.target + "'.");
 
- 			}
 
- 		} else if(options.target !== false) {
 
- 			options.target(compiler);
 
- 		} else {
 
- 			throw new Error("Unsupported target '" + options.target + "'.");
 
- 		}
 
- 		if(options.output.library || options.output.libraryTarget !== "var") {
 
- 			let LibraryTemplatePlugin = require("./LibraryTemplatePlugin");
 
- 			compiler.apply(new LibraryTemplatePlugin(options.output.library, options.output.libraryTarget, options.output.umdNamedDefine, options.output.auxiliaryComment || "", options.output.libraryExport));
 
- 		}
 
- 		if(options.externals) {
 
- 			ExternalsPlugin = require("./ExternalsPlugin");
 
- 			compiler.apply(new ExternalsPlugin(options.output.libraryTarget, options.externals));
 
- 		}
 
- 		let noSources;
 
- 		let legacy;
 
- 		let modern;
 
- 		let comment;
 
- 		if(options.devtool && (options.devtool.indexOf("sourcemap") >= 0 || options.devtool.indexOf("source-map") >= 0)) {
 
- 			const hidden = options.devtool.indexOf("hidden") >= 0;
 
- 			const inline = options.devtool.indexOf("inline") >= 0;
 
- 			const evalWrapped = options.devtool.indexOf("eval") >= 0;
 
- 			const cheap = options.devtool.indexOf("cheap") >= 0;
 
- 			const moduleMaps = options.devtool.indexOf("module") >= 0;
 
- 			noSources = options.devtool.indexOf("nosources") >= 0;
 
- 			legacy = options.devtool.indexOf("@") >= 0;
 
- 			modern = options.devtool.indexOf("#") >= 0;
 
- 			comment = legacy && modern ? "\n/*\n//@ source" + "MappingURL=[url]\n//# source" + "MappingURL=[url]\n*/" :
 
- 				legacy ? "\n/*\n//@ source" + "MappingURL=[url]\n*/" :
 
- 				modern ? "\n//# source" + "MappingURL=[url]" :
 
- 				null;
 
- 			let Plugin = evalWrapped ? EvalSourceMapDevToolPlugin : SourceMapDevToolPlugin;
 
- 			compiler.apply(new Plugin({
 
- 				filename: inline ? null : options.output.sourceMapFilename,
 
- 				moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
 
- 				fallbackModuleFilenameTemplate: options.output.devtoolFallbackModuleFilenameTemplate,
 
- 				append: hidden ? false : comment,
 
- 				module: moduleMaps ? true : cheap ? false : true,
 
- 				columns: cheap ? false : true,
 
- 				lineToLine: options.output.devtoolLineToLine,
 
- 				noSources: noSources,
 
- 			}));
 
- 		} else if(options.devtool && options.devtool.indexOf("eval") >= 0) {
 
- 			legacy = options.devtool.indexOf("@") >= 0;
 
- 			modern = options.devtool.indexOf("#") >= 0;
 
- 			comment = legacy && modern ? "\n//@ sourceURL=[url]\n//# sourceURL=[url]" :
 
- 				legacy ? "\n//@ sourceURL=[url]" :
 
- 				modern ? "\n//# sourceURL=[url]" :
 
- 				null;
 
- 			compiler.apply(new EvalDevToolModulePlugin(comment, options.output.devtoolModuleFilenameTemplate));
 
- 		}
 
- 		compiler.apply(new EntryOptionPlugin());
 
- 		compiler.applyPluginsBailResult("entry-option", options.context, options.entry);
 
- 		compiler.apply(
 
- 			new CompatibilityPlugin(),
 
- 			new HarmonyModulesPlugin(options.module),
 
- 			new AMDPlugin(options.module, options.amd || {}),
 
- 			new CommonJsPlugin(options.module),
 
- 			new LoaderPlugin(),
 
- 			new NodeStuffPlugin(options.node),
 
- 			new RequireJsStuffPlugin(),
 
- 			new APIPlugin(),
 
- 			new ConstPlugin(),
 
- 			new UseStrictPlugin(),
 
- 			new RequireIncludePlugin(),
 
- 			new RequireEnsurePlugin(),
 
- 			new RequireContextPlugin(options.resolve.modules, options.resolve.extensions, options.resolve.mainFiles),
 
- 			new ImportPlugin(options.module),
 
- 			new SystemPlugin(options.module)
 
- 		);
 
- 		compiler.apply(
 
- 			new EnsureChunkConditionsPlugin(),
 
- 			new RemoveParentModulesPlugin(),
 
- 			new RemoveEmptyChunksPlugin(),
 
- 			new MergeDuplicateChunksPlugin(),
 
- 			new FlagIncludedChunksPlugin(),
 
- 			new OccurrenceOrderPlugin(true),
 
- 			new FlagDependencyExportsPlugin(),
 
- 			new FlagDependencyUsagePlugin()
 
- 		);
 
- 		if(options.performance) {
 
- 			compiler.apply(new SizeLimitsPlugin(options.performance));
 
- 		}
 
- 		compiler.apply(new TemplatedPathPlugin());
 
- 		compiler.apply(new RecordIdsPlugin());
 
- 		compiler.apply(new WarnCaseSensitiveModulesPlugin());
 
- 		if(options.cache) {
 
- 			let CachePlugin = require("./CachePlugin");
 
- 			compiler.apply(new CachePlugin(typeof options.cache === "object" ? options.cache : null));
 
- 		}
 
- 		compiler.applyPlugins("after-plugins", compiler);
 
- 		if(!compiler.inputFileSystem) throw new Error("No input filesystem provided");
 
- 		compiler.resolvers.normal = ResolverFactory.createResolver(Object.assign({
 
- 			fileSystem: compiler.inputFileSystem
 
- 		}, options.resolve));
 
- 		compiler.resolvers.context = ResolverFactory.createResolver(Object.assign({
 
- 			fileSystem: compiler.inputFileSystem,
 
- 			resolveToContext: true
 
- 		}, options.resolve));
 
- 		compiler.resolvers.loader = ResolverFactory.createResolver(Object.assign({
 
- 			fileSystem: compiler.inputFileSystem
 
- 		}, options.resolveLoader));
 
- 		compiler.applyPlugins("after-resolvers", compiler);
 
- 		return options;
 
- 	}
 
- }
 
- module.exports = WebpackOptionsApply;
 
 
  |