diff options
author | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2018-09-20 02:56:13 +0200 |
commit | bbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch) | |
tree | c58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/webpack/lib/webpack.js | |
parent | 003fb34971cf63466184351b4db5f7c67df4f444 (diff) |
update packages
Diffstat (limited to 'node_modules/webpack/lib/webpack.js')
-rw-r--r-- | node_modules/webpack/lib/webpack.js | 311 |
1 files changed, 191 insertions, 120 deletions
diff --git a/node_modules/webpack/lib/webpack.js b/node_modules/webpack/lib/webpack.js index 81fc7d83f..61357818e 100644 --- a/node_modules/webpack/lib/webpack.js +++ b/node_modules/webpack/lib/webpack.js @@ -1,120 +1,191 @@ -/*
- 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/webpackOptionsSchema.json");
-
-function webpack(options, callback) {
- const webpackOptionsValidationErrors = validateSchema(webpackOptionsSchema, options);
- if(webpackOptionsValidationErrors.length) {
- throw new WebpackOptionsValidationError(webpackOptionsValidationErrors);
- }
- let compiler;
- if(Array.isArray(options)) {
- compiler = new MultiCompiler(options.map(options => webpack(options)));
- } else if(typeof options === "object") {
- // TODO webpack 4: process returns options
- new WebpackOptionsDefaulter().process(options);
-
- compiler = new Compiler();
- compiler.context = options.context;
- compiler.options = options;
- new NodeEnvironmentPlugin().apply(compiler);
- if(options.plugins && Array.isArray(options.plugins)) {
- compiler.apply.apply(compiler, options.plugins);
- }
- compiler.applyPlugins("environment");
- compiler.applyPlugins("after-environment");
- 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;
-
-webpack.WebpackOptionsDefaulter = WebpackOptionsDefaulter;
-webpack.WebpackOptionsApply = WebpackOptionsApply;
-webpack.Compiler = Compiler;
-webpack.MultiCompiler = MultiCompiler;
-webpack.NodeEnvironmentPlugin = NodeEnvironmentPlugin;
-webpack.validate = validateSchema.bind(this, webpackOptionsSchema);
-webpack.validateSchema = validateSchema;
-webpack.WebpackOptionsValidationError = WebpackOptionsValidationError;
-
-function exportPlugins(obj, mappings) {
- Object.keys(mappings).forEach(name => {
- Object.defineProperty(obj, name, {
- configurable: false,
- enumerable: true,
- get: mappings[name]
- });
- });
-}
-
-exportPlugins(exports, {
- "DefinePlugin": () => require("./DefinePlugin"),
- "NormalModuleReplacementPlugin": () => require("./NormalModuleReplacementPlugin"),
- "ContextReplacementPlugin": () => require("./ContextReplacementPlugin"),
- "ContextExclusionPlugin": () => require("./ContextExclusionPlugin"),
- "IgnorePlugin": () => require("./IgnorePlugin"),
- "WatchIgnorePlugin": () => require("./WatchIgnorePlugin"),
- "BannerPlugin": () => require("./BannerPlugin"),
- "PrefetchPlugin": () => require("./PrefetchPlugin"),
- "AutomaticPrefetchPlugin": () => require("./AutomaticPrefetchPlugin"),
- "ProvidePlugin": () => require("./ProvidePlugin"),
- "HotModuleReplacementPlugin": () => require("./HotModuleReplacementPlugin"),
- "SourceMapDevToolPlugin": () => require("./SourceMapDevToolPlugin"),
- "EvalSourceMapDevToolPlugin": () => require("./EvalSourceMapDevToolPlugin"),
- "EvalDevToolModulePlugin": () => require("./EvalDevToolModulePlugin"),
- "CachePlugin": () => require("./CachePlugin"),
- "ExtendedAPIPlugin": () => require("./ExtendedAPIPlugin"),
- "ExternalsPlugin": () => require("./ExternalsPlugin"),
- "JsonpTemplatePlugin": () => require("./JsonpTemplatePlugin"),
- "LibraryTemplatePlugin": () => require("./LibraryTemplatePlugin"),
- "LoaderTargetPlugin": () => require("./LoaderTargetPlugin"),
- "MemoryOutputFileSystem": () => require("./MemoryOutputFileSystem"),
- "ProgressPlugin": () => require("./ProgressPlugin"),
- "SetVarMainTemplatePlugin": () => require("./SetVarMainTemplatePlugin"),
- "UmdMainTemplatePlugin": () => require("./UmdMainTemplatePlugin"),
- "NoErrorsPlugin": () => require("./NoErrorsPlugin"),
- "NoEmitOnErrorsPlugin": () => require("./NoEmitOnErrorsPlugin"),
- "NewWatchingPlugin": () => require("./NewWatchingPlugin"),
- "EnvironmentPlugin": () => require("./EnvironmentPlugin"),
- "DllPlugin": () => require("./DllPlugin"),
- "DllReferencePlugin": () => require("./DllReferencePlugin"),
- "LoaderOptionsPlugin": () => require("./LoaderOptionsPlugin"),
- "NamedModulesPlugin": () => require("./NamedModulesPlugin"),
- "NamedChunksPlugin": () => require("./NamedChunksPlugin"),
- "HashedModuleIdsPlugin": () => require("./HashedModuleIdsPlugin"),
- "ModuleFilenameHelpers": () => require("./ModuleFilenameHelpers")
-});
-exportPlugins(exports.optimize = {}, {
- "AggressiveMergingPlugin": () => require("./optimize/AggressiveMergingPlugin"),
- "AggressiveSplittingPlugin": () => require("./optimize/AggressiveSplittingPlugin"),
- "CommonsChunkPlugin": () => require("./optimize/CommonsChunkPlugin"),
- "ChunkModuleIdRangePlugin": () => require("./optimize/ChunkModuleIdRangePlugin"),
- "DedupePlugin": () => require("./optimize/DedupePlugin"),
- "LimitChunkCountPlugin": () => require("./optimize/LimitChunkCountPlugin"),
- "MinChunkSizePlugin": () => require("./optimize/MinChunkSizePlugin"),
- "ModuleConcatenationPlugin": () => require("./optimize/ModuleConcatenationPlugin"),
- "OccurrenceOrderPlugin": () => require("./optimize/OccurrenceOrderPlugin"),
- "UglifyJsPlugin": () => require("./optimize/UglifyJsPlugin")
-});
+/* + 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; + +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(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().apply(compiler); + if (options.plugins && Array.isArray(options.plugins)) { + for (const plugin of options.plugins) { + 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." +); |