From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/webpack/lib/WebpackOptionsApply.js | 298 ++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 node_modules/webpack/lib/WebpackOptionsApply.js (limited to 'node_modules/webpack/lib/WebpackOptionsApply.js') diff --git a/node_modules/webpack/lib/WebpackOptionsApply.js b/node_modules/webpack/lib/WebpackOptionsApply.js new file mode 100644 index 000000000..ed37c7723 --- /dev/null +++ b/node_modules/webpack/lib/WebpackOptionsApply.js @@ -0,0 +1,298 @@ +/* + 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("web") + ); + 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("webworker") + ); + 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("node-webkit") + ); + 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 || "")); + } + 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//@ sourceMappingURL=[url]\n//# sourceMappingURL=[url]\n*/" : + legacy ? "\n/*\n//@ sourceMappingURL=[url]\n*/" : + modern ? "\n//# sourceMappingURL=[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), + 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; -- cgit v1.2.3