Skip to content

Commit

Permalink
Refactor exporting to be webpackable
Browse files Browse the repository at this point in the history
  • Loading branch information
sokra committed Jul 24, 2017
1 parent b409d9c commit ab7bac8
Showing 1 changed file with 52 additions and 55 deletions.
107 changes: 52 additions & 55 deletions lib/webpack.js
Expand Up @@ -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")
});

0 comments on commit ab7bac8

Please sign in to comment.