Skip to content

Commit ab7bac8

Browse files
committed
Refactor exporting to be webpackable
1 parent b409d9c commit ab7bac8

1 file changed

Lines changed: 52 additions & 55 deletions

File tree

lib/webpack.js

Lines changed: 52 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -58,64 +58,61 @@ webpack.validate = validateSchema.bind(this, webpackOptionsSchema);
5858
webpack.validateSchema = validateSchema;
5959
webpack.WebpackOptionsValidationError = WebpackOptionsValidationError;
6060

61-
function exportPlugins(exports, path, plugins) {
62-
plugins.forEach(name => {
61+
function exportPlugins(obj, mappings) {
62+
Object.keys(mappings).forEach(name => {
6363
Object.defineProperty(exports, name, {
6464
configurable: false,
6565
enumerable: true,
66-
get() {
67-
return require(`${path}/${name}`);
68-
}
66+
get: mappings[name]
6967
});
70-
});
68+
})
7169
}
7270

73-
exportPlugins(exports, ".", [
74-
"DefinePlugin",
75-
"NormalModuleReplacementPlugin",
76-
"ContextReplacementPlugin",
77-
"IgnorePlugin",
78-
"WatchIgnorePlugin",
79-
"BannerPlugin",
80-
"PrefetchPlugin",
81-
"AutomaticPrefetchPlugin",
82-
"ProvidePlugin",
83-
"HotModuleReplacementPlugin",
84-
"SourceMapDevToolPlugin",
85-
"EvalSourceMapDevToolPlugin",
86-
"EvalDevToolModulePlugin",
87-
"CachePlugin",
88-
"ExtendedAPIPlugin",
89-
"ExternalsPlugin",
90-
"JsonpTemplatePlugin",
91-
"LibraryTemplatePlugin",
92-
"LoaderTargetPlugin",
93-
"MemoryOutputFileSystem",
94-
"ProgressPlugin",
95-
"SetVarMainTemplatePlugin",
96-
"UmdMainTemplatePlugin",
97-
"NoErrorsPlugin",
98-
"NoEmitOnErrorsPlugin",
99-
"NewWatchingPlugin",
100-
"EnvironmentPlugin",
101-
"DllPlugin",
102-
"DllReferencePlugin",
103-
"LoaderOptionsPlugin",
104-
"NamedModulesPlugin",
105-
"NamedChunksPlugin",
106-
"HashedModuleIdsPlugin",
107-
"ModuleFilenameHelpers"
108-
]);
109-
exportPlugins(exports.optimize = {}, "./optimize", [
110-
"AggressiveMergingPlugin",
111-
"AggressiveSplittingPlugin",
112-
"CommonsChunkPlugin",
113-
"ChunkModuleIdRangePlugin",
114-
"DedupePlugin",
115-
"LimitChunkCountPlugin",
116-
"MinChunkSizePlugin",
117-
"ModuleConcatenationPlugin",
118-
"OccurrenceOrderPlugin",
119-
"UglifyJsPlugin"
120-
]);
121-
exportPlugins(exports.dependencies = {}, "./dependencies", []);
71+
exportPlugins(exports, {
72+
"DefinePlugin": () => require("./DefinePlugin"),
73+
"NormalModuleReplacementPlugin": () => require("./NormalModuleReplacementPlugin"),
74+
"ContextReplacementPlugin": () => require("./ContextReplacementPlugin"),
75+
"IgnorePlugin": () => require("./IgnorePlugin"),
76+
"WatchIgnorePlugin": () => require("./WatchIgnorePlugin"),
77+
"BannerPlugin": () => require("./BannerPlugin"),
78+
"PrefetchPlugin": () => require("./PrefetchPlugin"),
79+
"AutomaticPrefetchPlugin": () => require("./AutomaticPrefetchPlugin"),
80+
"ProvidePlugin": () => require("./ProvidePlugin"),
81+
"HotModuleReplacementPlugin": () => require("./HotModuleReplacementPlugin"),
82+
"SourceMapDevToolPlugin": () => require("./SourceMapDevToolPlugin"),
83+
"EvalSourceMapDevToolPlugin": () => require("./EvalSourceMapDevToolPlugin"),
84+
"EvalDevToolModulePlugin": () => require("./EvalDevToolModulePlugin"),
85+
"CachePlugin": () => require("./CachePlugin"),
86+
"ExtendedAPIPlugin": () => require("./ExtendedAPIPlugin"),
87+
"ExternalsPlugin": () => require("./ExternalsPlugin"),
88+
"JsonpTemplatePlugin": () => require("./JsonpTemplatePlugin"),
89+
"LibraryTemplatePlugin": () => require("./LibraryTemplatePlugin"),
90+
"LoaderTargetPlugin": () => require("./LoaderTargetPlugin"),
91+
"MemoryOutputFileSystem": () => require("./MemoryOutputFileSystem"),
92+
"ProgressPlugin": () => require("./ProgressPlugin"),
93+
"SetVarMainTemplatePlugin": () => require("./SetVarMainTemplatePlugin"),
94+
"UmdMainTemplatePlugin": () => require("./UmdMainTemplatePlugin"),
95+
"NoErrorsPlugin": () => require("./NoErrorsPlugin"),
96+
"NoEmitOnErrorsPlugin": () => require("./NoEmitOnErrorsPlugin"),
97+
"NewWatchingPlugin": () => require("./NewWatchingPlugin"),
98+
"EnvironmentPlugin": () => require("./EnvironmentPlugin"),
99+
"DllPlugin": () => require("./DllPlugin"),
100+
"DllReferencePlugin": () => require("./DllReferencePlugin"),
101+
"LoaderOptionsPlugin": () => require("./LoaderOptionsPlugin"),
102+
"NamedModulesPlugin": () => require("./NamedModulesPlugin"),
103+
"NamedChunksPlugin": () => require("./NamedChunksPlugin"),
104+
"HashedModuleIdsPlugin": () => require("./HashedModuleIdsPlugin"),
105+
"ModuleFilenameHelpers": () => require("./ModuleFilenameHelpers")
106+
});
107+
exportPlugins(exports.optimize = {}, {
108+
"AggressiveMergingPlugin": () => require("./optimize/AggressiveMergingPlugin"),
109+
"AggressiveSplittingPlugin": () => require("./optimize/AggressiveSplittingPlugin"),
110+
"CommonsChunkPlugin": () => require("./optimize/CommonsChunkPlugin"),
111+
"ChunkModuleIdRangePlugin": () => require("./optimize/ChunkModuleIdRangePlugin"),
112+
"DedupePlugin": () => require("./optimize/DedupePlugin"),
113+
"LimitChunkCountPlugin": () => require("./optimize/LimitChunkCountPlugin"),
114+
"MinChunkSizePlugin": () => require("./optimize/MinChunkSizePlugin"),
115+
"ModuleConcatenationPlugin": () => require("./optimize/ModuleConcatenationPlugin"),
116+
"OccurrenceOrderPlugin": () => require("./optimize/OccurrenceOrderPlugin"),
117+
"UglifyJsPlugin": () => require("./optimize/UglifyJsPlugin")
118+
});

0 commit comments

Comments
 (0)