webpack/lib/index.js

169 lines
6.9 KiB
JavaScript
Raw Normal View History

2018-12-09 21:26:35 +08:00
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const validate = require("schema-utils");
2018-12-09 21:26:35 +08:00
const util = require("util");
const { version } = require("../package.json");
const webpackOptionsSchema = require("../schemas/WebpackOptions.json");
const WebpackOptionsApply = require("./WebpackOptionsApply");
const memorize = require("./util/memorize");
const validateSchema = require("./validateSchema");
2018-12-09 21:26:35 +08:00
const webpack = require("./webpack");
2019-08-06 14:55:00 +08:00
module.exports = webpack;
module.exports.WebpackOptionsApply = WebpackOptionsApply;
module.exports.validate = validateSchema.bind(null, webpackOptionsSchema);
module.exports.validateSchema = validateSchema;
module.exports.version = version;
2018-12-09 21:26:35 +08:00
const exportPlugins = (obj, mappings) => {
for (const name of Object.keys(mappings)) {
Object.defineProperty(obj, name, {
configurable: false,
enumerable: true,
get: memorize(mappings[name])
2018-12-09 21:26:35 +08:00
});
}
};
2019-08-06 14:55:00 +08:00
exportPlugins(module.exports, {
2018-12-09 21:26:35 +08:00
AutomaticPrefetchPlugin: () => require("./AutomaticPrefetchPlugin"),
BannerPlugin: () => require("./BannerPlugin"),
2019-05-13 17:03:10 +08:00
Cache: () => require("./Cache"),
Compilation: () => require("./Compilation"),
Compiler: () => require("./Compiler"),
2018-12-09 21:26:35 +08:00
ContextExclusionPlugin: () => require("./ContextExclusionPlugin"),
ContextReplacementPlugin: () => require("./ContextReplacementPlugin"),
DefinePlugin: () => require("./DefinePlugin"),
DelegatedPlugin: () => require("./DelegatedPlugin"),
2018-12-09 21:26:35 +08:00
Dependency: () => require("./Dependency"),
DllPlugin: () => require("./DllPlugin"),
DllReferencePlugin: () => require("./DllReferencePlugin"),
EntryPlugin: () => require("./EntryPlugin"),
EnvironmentPlugin: () => require("./EnvironmentPlugin"),
EvalDevToolModulePlugin: () => require("./EvalDevToolModulePlugin"),
EvalSourceMapDevToolPlugin: () => require("./EvalSourceMapDevToolPlugin"),
ExternalsPlugin: () => require("./ExternalsPlugin"),
Generator: () => require("./Generator"),
2018-12-09 21:26:35 +08:00
HotModuleReplacementPlugin: () => require("./HotModuleReplacementPlugin"),
IgnorePlugin: () => require("./IgnorePlugin"),
JavascriptModulesPlugin: util.deprecate(
() => require("./javascript/JavascriptModulesPlugin"),
"webpack.JavascriptModulesPlugin has moved to webpack.javascript.JavascriptModulesPlugin",
"DEP_WEBPACK_JAVASCRIPT_MODULES_PLUGIN"
),
LibManifestPlugin: () => require("./LibManifestPlugin"),
2018-12-09 21:26:35 +08:00
LibraryTemplatePlugin: () => require("./LibraryTemplatePlugin"),
LoaderOptionsPlugin: () => require("./LoaderOptionsPlugin"),
LoaderTargetPlugin: () => require("./LoaderTargetPlugin"),
Module: () => require("./Module"),
ModuleFilenameHelpers: () => require("./ModuleFilenameHelpers"),
NoEmitOnErrorsPlugin: () => require("./NoEmitOnErrorsPlugin"),
2019-10-09 19:50:52 +08:00
NormalModule: () => require("./NormalModule"),
2018-12-09 21:26:35 +08:00
NormalModuleReplacementPlugin: () =>
require("./NormalModuleReplacementPlugin"),
MultiCompiler: () => require("./MultiCompiler"),
Parser: () => require("./Parser"),
2018-12-09 21:26:35 +08:00
PrefetchPlugin: () => require("./PrefetchPlugin"),
ProgressPlugin: () => require("./ProgressPlugin"),
ProvidePlugin: () => require("./ProvidePlugin"),
RuntimeGlobals: () => require("./RuntimeGlobals"),
RuntimeModule: () => require("./RuntimeModule"),
2018-12-09 21:26:35 +08:00
SingleEntryPlugin: util.deprecate(
() => require("./EntryPlugin"),
2019-11-14 22:01:25 +08:00
"SingleEntryPlugin was renamed to EntryPlugin",
"DEP_WEBPACK_SINGLE_ENTRY_PLUGIN"
2018-12-09 21:26:35 +08:00
),
SetVarTemplatePlugin: () => require("./SetVarTemplatePlugin"),
2018-12-09 21:26:35 +08:00
SourceMapDevToolPlugin: () => require("./SourceMapDevToolPlugin"),
Stats: () => require("./Stats"),
Template: () => require("./Template"),
UmdTemplatePlugin: () => require("./UmdTemplatePlugin"),
WatchIgnorePlugin: () => require("./WatchIgnorePlugin"),
WebpackOptionsDefaulter: util.deprecate(
() => require("./WebpackOptionsDefaulter"),
"webpack.WebpackOptionsDefaulter is deprecated and has been replaced by webpack.config.getNormalizedWebpackOptions and webpack.config.applyWebpackOptionsDefaults",
"DEP_WEBPACK_OPTIONS_DEFAULTER"
),
// TODO webpack 6 deprecate
WebpackOptionsValidationError: () => validate.ValidationError,
ValidationError: () => validate.ValidationError
2018-12-09 21:26:35 +08:00
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.cache = {}), {
2018-12-09 21:26:35 +08:00
MemoryCachePlugin: () => require("./cache/MemoryCachePlugin")
});
exportPlugins((module.exports.config = {}), {
getNormalizedWebpackOptions: () =>
require("./config/normalization").getNormalizedWebpackOptions,
applyWebpackOptionsDefaults: () =>
require("./config/defaults").applyWebpackOptionsDefaults
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.ids = {}), {
2018-12-09 21:26:35 +08:00
ChunkModuleIdRangePlugin: () => require("./ids/ChunkModuleIdRangePlugin"),
NaturalModuleIdsPlugin: () => require("./ids/NaturalModuleIdsPlugin"),
OccurrenceModuleIdsPlugin: () => require("./ids/OccurrenceModuleIdsPlugin"),
NamedModuleIdsPlugin: () => require("./ids/NamedModuleIdsPlugin"),
DeterministicModuleIdsPlugin: () =>
require("./ids/DeterministicModuleIdsPlugin"),
NamedChunkIdsPlugin: () => require("./ids/NamedChunkIdsPlugin"),
OccurrenceChunkIdsPlugin: () => require("./ids/OccurrenceChunkIdsPlugin"),
HashedModuleIdsPlugin: () => require("./ids/HashedModuleIdsPlugin")
});
exportPlugins((module.exports.javascript = {}), {
JavascriptModulesPlugin: () => require("./javascript/JavascriptModulesPlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.optimize = {}), {
2018-12-09 21:26:35 +08:00
AggressiveMergingPlugin: () => require("./optimize/AggressiveMergingPlugin"),
AggressiveSplittingPlugin: util.deprecate(
() => require("./optimize/AggressiveSplittingPlugin"),
2019-11-14 22:01:25 +08:00
"AggressiveSplittingPlugin is deprecated in favor of SplitChunksPlugin",
"DEP_WEBPACK_AGGRESSIVE_SPLITTING_PLUGIN"
2018-12-09 21:26:35 +08:00
),
LimitChunkCountPlugin: () => require("./optimize/LimitChunkCountPlugin"),
MinChunkSizePlugin: () => require("./optimize/MinChunkSizePlugin"),
ModuleConcatenationPlugin: () =>
require("./optimize/ModuleConcatenationPlugin"),
RuntimeChunkPlugin: () => require("./optimize/RuntimeChunkPlugin"),
SideEffectsFlagPlugin: () => require("./optimize/SideEffectsFlagPlugin"),
SplitChunksPlugin: () => require("./optimize/SplitChunksPlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.web = {}), {
2018-12-09 21:26:35 +08:00
FetchCompileWasmPlugin: () => require("./web/FetchCompileWasmPlugin"),
JsonpTemplatePlugin: () => require("./web/JsonpTemplatePlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.webworker = {}), {
2018-12-09 21:26:35 +08:00
WebWorkerTemplatePlugin: () => require("./webworker/WebWorkerTemplatePlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.node = {}), {
2018-12-10 18:40:59 +08:00
NodeEnvironmentPlugin: () => require("./node/NodeEnvironmentPlugin"),
2018-12-09 21:26:35 +08:00
NodeTemplatePlugin: () => require("./node/NodeTemplatePlugin"),
ReadFileCompileWasmPlugin: () => require("./node/ReadFileCompileWasmPlugin")
});
2019-10-09 19:50:52 +08:00
exportPlugins((module.exports.wasm = {}), {
AsyncWebAssemblyModulesPlugin: () =>
require("./wasm-async/AsyncWebAssemblyModulesPlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.debug = {}), {
2018-12-09 21:26:35 +08:00
ProfilingPlugin: () => require("./debug/ProfilingPlugin")
});
2019-08-06 14:55:00 +08:00
exportPlugins((module.exports.util = {}), {
2018-12-09 21:26:35 +08:00
createHash: () => require("./util/createHash"),
2018-12-28 20:18:02 +08:00
comparators: () => require("./util/comparators"),
serialization: () => require("./util/serialization")
2018-12-09 21:26:35 +08:00
});