diff --git a/lib/webpack.js b/lib/webpack.js index 7964f65dab0..ffd0cd5695d 100644 --- a/lib/webpack.js +++ b/lib/webpack.js @@ -58,64 +58,61 @@ webpack.validate = validateSchema.bind(this, webpackOptionsSchema); webpack.validateSchema = validateSchema; webpack.WebpackOptionsValidationError = WebpackOptionsValidationError; -function exportPlugins(exports, path, plugins) { - plugins.forEach(name => { +function exportPlugins(obj, mappings) { + Object.keys(mappings).forEach(name => { Object.defineProperty(exports, name, { configurable: false, enumerable: true, - get() { - return require(`${path}/${name}`); - } + get: mappings[name] }); - }); + }) } -exportPlugins(exports, ".", [ - "DefinePlugin", - "NormalModuleReplacementPlugin", - "ContextReplacementPlugin", - "IgnorePlugin", - "WatchIgnorePlugin", - "BannerPlugin", - "PrefetchPlugin", - "AutomaticPrefetchPlugin", - "ProvidePlugin", - "HotModuleReplacementPlugin", - "SourceMapDevToolPlugin", - "EvalSourceMapDevToolPlugin", - "EvalDevToolModulePlugin", - "CachePlugin", - "ExtendedAPIPlugin", - "ExternalsPlugin", - "JsonpTemplatePlugin", - "LibraryTemplatePlugin", - "LoaderTargetPlugin", - "MemoryOutputFileSystem", - "ProgressPlugin", - "SetVarMainTemplatePlugin", - "UmdMainTemplatePlugin", - "NoErrorsPlugin", - "NoEmitOnErrorsPlugin", - "NewWatchingPlugin", - "EnvironmentPlugin", - "DllPlugin", - "DllReferencePlugin", - "LoaderOptionsPlugin", - "NamedModulesPlugin", - "NamedChunksPlugin", - "HashedModuleIdsPlugin", - "ModuleFilenameHelpers" -]); -exportPlugins(exports.optimize = {}, "./optimize", [ - "AggressiveMergingPlugin", - "AggressiveSplittingPlugin", - "CommonsChunkPlugin", - "ChunkModuleIdRangePlugin", - "DedupePlugin", - "LimitChunkCountPlugin", - "MinChunkSizePlugin", - "ModuleConcatenationPlugin", - "OccurrenceOrderPlugin", - "UglifyJsPlugin" -]); -exportPlugins(exports.dependencies = {}, "./dependencies", []); +exportPlugins(exports, { + "DefinePlugin": () => require("./DefinePlugin"), + "NormalModuleReplacementPlugin": () => require("./NormalModuleReplacementPlugin"), + "ContextReplacementPlugin": () => require("./ContextReplacementPlugin"), + "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") +});