diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/webpack/lib/WebpackOptionsApply.js | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/webpack/lib/WebpackOptionsApply.js')
-rw-r--r-- | node_modules/webpack/lib/WebpackOptionsApply.js | 298 |
1 files changed, 298 insertions, 0 deletions
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;
|