@eriche/webpack 4.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +784 -0
- package/SECURITY.md +9 -0
- package/bin/webpack.js +171 -0
- package/buildin/amd-define.js +3 -0
- package/buildin/amd-options.js +2 -0
- package/buildin/global.js +20 -0
- package/buildin/harmony-module.js +24 -0
- package/buildin/module.js +22 -0
- package/buildin/system.js +7 -0
- package/declarations/WebpackOptions.d.ts +1466 -0
- package/declarations/plugins/BannerPlugin.d.ts +49 -0
- package/declarations/plugins/DllPlugin.d.ts +32 -0
- package/declarations/plugins/DllReferencePlugin.d.ts +126 -0
- package/declarations/plugins/HashedModuleIdsPlugin.d.ts +24 -0
- package/declarations/plugins/IgnorePlugin.d.ts +27 -0
- package/declarations/plugins/LoaderOptionsPlugin.d.ts +27 -0
- package/declarations/plugins/ProgressPlugin.d.ts +42 -0
- package/declarations/plugins/SourceMapDevToolPlugin.d.ts +94 -0
- package/declarations/plugins/WatchIgnorePlugin.d.ts +10 -0
- package/declarations/plugins/debug/ProfilingPlugin.d.ts +12 -0
- package/declarations/plugins/optimize/AggressiveSplittingPlugin.d.ts +24 -0
- package/declarations/plugins/optimize/LimitChunkCountPlugin.d.ts +16 -0
- package/declarations/plugins/optimize/MinChunkSizePlugin.d.ts +12 -0
- package/declarations/plugins/optimize/OccurrenceOrderChunkIdsPlugin.d.ts +12 -0
- package/declarations/plugins/optimize/OccurrenceOrderModuleIdsPlugin.d.ts +12 -0
- package/hot/dev-server.js +61 -0
- package/hot/emitter.js +2 -0
- package/hot/log-apply-result.js +44 -0
- package/hot/log.js +59 -0
- package/hot/only-dev-server.js +102 -0
- package/hot/poll.js +37 -0
- package/hot/signal.js +62 -0
- package/lib/APIPlugin.js +84 -0
- package/lib/AbstractMethodError.js +43 -0
- package/lib/AmdMainTemplatePlugin.js +106 -0
- package/lib/AsyncDependenciesBlock.js +110 -0
- package/lib/AsyncDependencyToInitialChunkError.js +31 -0
- package/lib/AutomaticPrefetchPlugin.js +57 -0
- package/lib/BannerPlugin.js +122 -0
- package/lib/BasicEvaluatedExpression.js +248 -0
- package/lib/CachePlugin.js +100 -0
- package/lib/CaseSensitiveModulesWarning.js +67 -0
- package/lib/Chunk.js +875 -0
- package/lib/ChunkGroup.js +513 -0
- package/lib/ChunkRenderError.js +32 -0
- package/lib/ChunkTemplate.js +87 -0
- package/lib/CommentCompilationWarning.js +32 -0
- package/lib/CommonJsStuffPlugin.js +116 -0
- package/lib/CompatibilityPlugin.js +70 -0
- package/lib/Compilation.js +2327 -0
- package/lib/Compiler.js +735 -0
- package/lib/ConcurrentCompilationError.js +19 -0
- package/lib/ConstPlugin.js +348 -0
- package/lib/ContextExclusionPlugin.js +28 -0
- package/lib/ContextModule.js +872 -0
- package/lib/ContextModuleFactory.js +262 -0
- package/lib/ContextReplacementPlugin.js +133 -0
- package/lib/DefinePlugin.js +289 -0
- package/lib/DelegatedModule.js +114 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -0
- package/lib/DelegatedPlugin.js +39 -0
- package/lib/DependenciesBlock.js +124 -0
- package/lib/DependenciesBlockVariable.js +72 -0
- package/lib/Dependency.js +89 -0
- package/lib/DllEntryPlugin.js +54 -0
- package/lib/DllModule.js +60 -0
- package/lib/DllModuleFactory.js +29 -0
- package/lib/DllPlugin.js +49 -0
- package/lib/DllReferencePlugin.js +156 -0
- package/lib/DynamicEntryPlugin.js +94 -0
- package/lib/EntryModuleNotFoundError.js +21 -0
- package/lib/EntryOptionPlugin.js +46 -0
- package/lib/Entrypoint.js +64 -0
- package/lib/EnvironmentPlugin.js +72 -0
- package/lib/ErrorHelpers.js +60 -0
- package/lib/EvalDevToolModulePlugin.js +27 -0
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -0
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +120 -0
- package/lib/EvalSourceMapDevToolPlugin.js +41 -0
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -0
- package/lib/ExtendedAPIPlugin.js +88 -0
- package/lib/ExternalModule.js +179 -0
- package/lib/ExternalModuleFactoryPlugin.js +110 -0
- package/lib/ExternalsPlugin.js +23 -0
- package/lib/FlagAllModulesAsUsedPlugin.js +38 -0
- package/lib/FlagDependencyExportsPlugin.js +174 -0
- package/lib/FlagDependencyUsagePlugin.js +116 -0
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -0
- package/lib/FunctionModulePlugin.js +19 -0
- package/lib/FunctionModuleTemplatePlugin.js +102 -0
- package/lib/Generator.js +60 -0
- package/lib/GraphHelpers.js +65 -0
- package/lib/HarmonyLinkingError.js +17 -0
- package/lib/HashedModuleIdsPlugin.js +63 -0
- package/lib/HotModuleReplacement.runtime.js +721 -0
- package/lib/HotModuleReplacementPlugin.js +425 -0
- package/lib/HotUpdateChunk.js +17 -0
- package/lib/HotUpdateChunkTemplate.js +78 -0
- package/lib/IgnorePlugin.js +91 -0
- package/lib/JavascriptGenerator.js +229 -0
- package/lib/JavascriptModulesPlugin.js +185 -0
- package/lib/JsonGenerator.js +57 -0
- package/lib/JsonModulesPlugin.js +30 -0
- package/lib/JsonParser.js +27 -0
- package/lib/LibManifestPlugin.js +90 -0
- package/lib/LibraryTemplatePlugin.js +186 -0
- package/lib/LoaderOptionsPlugin.js +58 -0
- package/lib/LoaderTargetPlugin.js +24 -0
- package/lib/MainTemplate.js +568 -0
- package/lib/MemoryOutputFileSystem.js +5 -0
- package/lib/Module.js +435 -0
- package/lib/ModuleBuildError.js +52 -0
- package/lib/ModuleDependencyError.js +35 -0
- package/lib/ModuleDependencyWarning.js +25 -0
- package/lib/ModuleError.js +36 -0
- package/lib/ModuleFilenameHelpers.js +179 -0
- package/lib/ModuleNotFoundError.js +23 -0
- package/lib/ModuleParseError.js +67 -0
- package/lib/ModuleReason.js +48 -0
- package/lib/ModuleTemplate.js +93 -0
- package/lib/ModuleWarning.js +36 -0
- package/lib/MultiCompiler.js +290 -0
- package/lib/MultiEntryPlugin.js +80 -0
- package/lib/MultiModule.js +87 -0
- package/lib/MultiModuleFactory.js +23 -0
- package/lib/MultiStats.js +92 -0
- package/lib/MultiWatching.js +50 -0
- package/lib/NamedChunksPlugin.js +29 -0
- package/lib/NamedModulesPlugin.js +58 -0
- package/lib/NoEmitOnErrorsPlugin.js +20 -0
- package/lib/NoModeWarning.js +23 -0
- package/lib/NodeStuffPlugin.js +118 -0
- package/lib/NormalModule.js +582 -0
- package/lib/NormalModuleFactory.js +528 -0
- package/lib/NormalModuleReplacementPlugin.js +51 -0
- package/lib/NullFactory.js +12 -0
- package/lib/OptionsApply.js +10 -0
- package/lib/OptionsDefaulter.js +141 -0
- package/lib/Parser.js +2454 -0
- package/lib/ParserHelpers.js +103 -0
- package/lib/PrefetchPlugin.js +37 -0
- package/lib/ProgressPlugin.js +307 -0
- package/lib/ProvidePlugin.js +86 -0
- package/lib/RawModule.js +56 -0
- package/lib/RecordIdsPlugin.js +236 -0
- package/lib/RemovedPluginError.js +11 -0
- package/lib/RequestShortener.js +83 -0
- package/lib/RequireJsStuffPlugin.js +66 -0
- package/lib/ResolverFactory.js +74 -0
- package/lib/RuleSet.js +567 -0
- package/lib/RuntimeTemplate.js +336 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -0
- package/lib/SingleEntryPlugin.js +63 -0
- package/lib/SizeFormatHelpers.js +24 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -0
- package/lib/SourceMapDevToolPlugin.js +418 -0
- package/lib/Stats.js +1685 -0
- package/lib/SystemMainTemplatePlugin.js +137 -0
- package/lib/Template.js +291 -0
- package/lib/TemplatedPathPlugin.js +188 -0
- package/lib/UmdMainTemplatePlugin.js +305 -0
- package/lib/UnsupportedFeatureWarning.js +30 -0
- package/lib/UseStrictPlugin.js +54 -0
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -0
- package/lib/WarnNoModeSetPlugin.js +17 -0
- package/lib/WatchIgnorePlugin.js +106 -0
- package/lib/Watching.js +211 -0
- package/lib/WebpackError.js +31 -0
- package/lib/WebpackOptionsApply.js +546 -0
- package/lib/WebpackOptionsDefaulter.js +391 -0
- package/lib/WebpackOptionsValidationError.js +390 -0
- package/lib/buildChunkGraph.js +712 -0
- package/lib/compareLocations.js +52 -0
- package/lib/debug/ProfilingPlugin.js +442 -0
- package/lib/dependencies/AMDDefineDependency.js +137 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -0
- package/lib/dependencies/AMDPlugin.js +249 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -0
- package/lib/dependencies/AMDRequireContextDependency.js +20 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +47 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +274 -0
- package/lib/dependencies/AMDRequireDependency.js +135 -0
- package/lib/dependencies/AMDRequireItemDependency.js +22 -0
- package/lib/dependencies/CommonJsPlugin.js +158 -0
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -0
- package/lib/dependencies/CommonJsRequireDependency.js +22 -0
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +138 -0
- package/lib/dependencies/ConstDependency.js +33 -0
- package/lib/dependencies/ContextDependency.js +68 -0
- package/lib/dependencies/ContextDependencyHelpers.js +232 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +43 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +39 -0
- package/lib/dependencies/ContextElementDependency.js +21 -0
- package/lib/dependencies/CriticalDependencyWarning.js +20 -0
- package/lib/dependencies/DelegatedExportsDependency.js +33 -0
- package/lib/dependencies/DelegatedSourceDependency.js +18 -0
- package/lib/dependencies/DependencyReference.js +64 -0
- package/lib/dependencies/DllEntryDependency.js +20 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +48 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +96 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +154 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +58 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +659 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -0
- package/lib/dependencies/HarmonyImportDependency.js +109 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +163 -0
- package/lib/dependencies/HarmonyInitDependency.js +60 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +143 -0
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -0
- package/lib/dependencies/ImportContextDependency.js +23 -0
- package/lib/dependencies/ImportDependenciesBlock.js +18 -0
- package/lib/dependencies/ImportDependency.js +34 -0
- package/lib/dependencies/ImportEagerDependency.js +32 -0
- package/lib/dependencies/ImportParserPlugin.js +248 -0
- package/lib/dependencies/ImportPlugin.js +79 -0
- package/lib/dependencies/ImportWeakDependency.js +34 -0
- package/lib/dependencies/JsonExportsDependency.js +26 -0
- package/lib/dependencies/LoaderDependency.js +21 -0
- package/lib/dependencies/LoaderPlugin.js +115 -0
- package/lib/dependencies/LocalModule.js +23 -0
- package/lib/dependencies/LocalModuleDependency.js +28 -0
- package/lib/dependencies/LocalModulesHelpers.js +52 -0
- package/lib/dependencies/ModuleDependency.js +23 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -0
- package/lib/dependencies/MultiEntryDependency.js +25 -0
- package/lib/dependencies/NullDependency.js +20 -0
- package/lib/dependencies/PrefetchDependency.js +18 -0
- package/lib/dependencies/RequireContextDependency.js +22 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -0
- package/lib/dependencies/RequireContextPlugin.js +143 -0
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -0
- package/lib/dependencies/RequireEnsureDependency.js +58 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -0
- package/lib/dependencies/RequireEnsurePlugin.js +74 -0
- package/lib/dependencies/RequireHeaderDependency.js +26 -0
- package/lib/dependencies/RequireIncludeDependency.js +39 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -0
- package/lib/dependencies/RequireIncludePlugin.js +61 -0
- package/lib/dependencies/RequireResolveContextDependency.js +23 -0
- package/lib/dependencies/RequireResolveDependency.js +22 -0
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +86 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -0
- package/lib/dependencies/SingleEntryDependency.js +21 -0
- package/lib/dependencies/SystemPlugin.js +122 -0
- package/lib/dependencies/UnsupportedDependency.js +27 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +31 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +54 -0
- package/lib/dependencies/WebpackMissingModule.js +20 -0
- package/lib/dependencies/getFunctionExpression.js +52 -0
- package/lib/formatLocation.js +75 -0
- package/lib/logging/Logger.js +128 -0
- package/lib/logging/createConsoleLogger.js +210 -0
- package/lib/logging/runtime.js +36 -0
- package/lib/logging/truncateArgs.js +76 -0
- package/lib/node/NodeChunkTemplatePlugin.js +31 -0
- package/lib/node/NodeEnvironmentPlugin.js +44 -0
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -0
- package/lib/node/NodeMainTemplate.runtime.js +32 -0
- package/lib/node/NodeMainTemplateAsync.runtime.js +50 -0
- package/lib/node/NodeMainTemplatePlugin.js +321 -0
- package/lib/node/NodeOutputFileSystem.js +22 -0
- package/lib/node/NodeSourcePlugin.js +141 -0
- package/lib/node/NodeTargetPlugin.js +19 -0
- package/lib/node/NodeTemplatePlugin.js +31 -0
- package/lib/node/NodeWatchFileSystem.js +109 -0
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -0
- package/lib/node/nodeConsole.js +135 -0
- package/lib/optimize/AggressiveMergingPlugin.js +87 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +294 -0
- package/lib/optimize/ChunkModuleIdRangePlugin.js +66 -0
- package/lib/optimize/ConcatenatedModule.js +1477 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -0
- package/lib/optimize/LimitChunkCountPlugin.js +231 -0
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -0
- package/lib/optimize/MinChunkSizePlugin.js +82 -0
- package/lib/optimize/MinMaxSizeWarning.js +29 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +485 -0
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +66 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +112 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -0
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -0
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -0
- package/lib/optimize/RuntimeChunkPlugin.js +41 -0
- package/lib/optimize/SideEffectsFlagPlugin.js +352 -0
- package/lib/optimize/SplitChunksPlugin.js +971 -0
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -0
- package/lib/performance/NoAsyncChunksWarning.js +21 -0
- package/lib/performance/SizeLimitsPlugin.js +125 -0
- package/lib/util/LazyBucketSortedSet.js +235 -0
- package/lib/util/Queue.js +46 -0
- package/lib/util/Semaphore.js +53 -0
- package/lib/util/SetHelpers.js +48 -0
- package/lib/util/SortableSet.js +140 -0
- package/lib/util/StackedSetMap.js +142 -0
- package/lib/util/TrackingSet.js +35 -0
- package/lib/util/cachedMerge.js +35 -0
- package/lib/util/cleverMerge.js +77 -0
- package/lib/util/createHash.js +174 -0
- package/lib/util/deterministicGrouping.js +274 -0
- package/lib/util/hash/BatchedHash.js +71 -0
- package/lib/util/hash/md4.js +25 -0
- package/lib/util/hash/wasm-hash.js +174 -0
- package/lib/util/identifier.js +127 -0
- package/lib/util/objectToMap.js +16 -0
- package/lib/validateSchema.js +67 -0
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -0
- package/lib/wasm/WasmFinalizeExportsPlugin.js +69 -0
- package/lib/wasm/WasmMainTemplatePlugin.js +341 -0
- package/lib/wasm/WebAssemblyGenerator.js +458 -0
- package/lib/wasm/WebAssemblyInInitialChunkError.js +88 -0
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +152 -0
- package/lib/wasm/WebAssemblyModulesPlugin.js +128 -0
- package/lib/wasm/WebAssemblyParser.js +175 -0
- package/lib/wasm/WebAssemblyUtils.js +59 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -0
- package/lib/web/JsonpChunkTemplatePlugin.js +71 -0
- package/lib/web/JsonpExportMainTemplatePlugin.js +50 -0
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -0
- package/lib/web/JsonpMainTemplate.runtime.js +71 -0
- package/lib/web/JsonpMainTemplatePlugin.js +615 -0
- package/lib/web/JsonpTemplatePlugin.js +23 -0
- package/lib/web/WebEnvironmentPlugin.js +18 -0
- package/lib/webpack.js +206 -0
- package/lib/webpack.web.js +31 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -0
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -0
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +73 -0
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +192 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -0
- package/package.json +211 -0
- package/schemas/WebpackOptions.json +2285 -0
- package/schemas/ajv.absolutePath.js +57 -0
- package/schemas/plugins/BannerPlugin.json +101 -0
- package/schemas/plugins/DllPlugin.json +36 -0
- package/schemas/plugins/DllReferencePlugin.json +205 -0
- package/schemas/plugins/HashedModuleIdsPlugin.json +26 -0
- package/schemas/plugins/IgnorePlugin.json +37 -0
- package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
- package/schemas/plugins/ProgressPlugin.json +52 -0
- package/schemas/plugins/SourceMapDevToolPlugin.json +185 -0
- package/schemas/plugins/WatchIgnorePlugin.json +18 -0
- package/schemas/plugins/debug/ProfilingPlugin.json +13 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +16 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +12 -0
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +11 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +11 -0
- package/web_modules/node-libs-browser.js +0 -0
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Tobias Koppers @sokra
|
|
4
|
+
*/
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const OptionsApply = require("./OptionsApply");
|
|
8
|
+
|
|
9
|
+
const JavascriptModulesPlugin = require("./JavascriptModulesPlugin");
|
|
10
|
+
const JsonModulesPlugin = require("./JsonModulesPlugin");
|
|
11
|
+
const WebAssemblyModulesPlugin = require("./wasm/WebAssemblyModulesPlugin");
|
|
12
|
+
|
|
13
|
+
const LoaderTargetPlugin = require("./LoaderTargetPlugin");
|
|
14
|
+
const FunctionModulePlugin = require("./FunctionModulePlugin");
|
|
15
|
+
const EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
|
|
16
|
+
const SourceMapDevToolPlugin = require("./SourceMapDevToolPlugin");
|
|
17
|
+
const EvalSourceMapDevToolPlugin = require("./EvalSourceMapDevToolPlugin");
|
|
18
|
+
|
|
19
|
+
const EntryOptionPlugin = require("./EntryOptionPlugin");
|
|
20
|
+
const RecordIdsPlugin = require("./RecordIdsPlugin");
|
|
21
|
+
|
|
22
|
+
const APIPlugin = require("./APIPlugin");
|
|
23
|
+
const ConstPlugin = require("./ConstPlugin");
|
|
24
|
+
const CommonJsStuffPlugin = require("./CommonJsStuffPlugin");
|
|
25
|
+
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
|
26
|
+
|
|
27
|
+
const TemplatedPathPlugin = require("./TemplatedPathPlugin");
|
|
28
|
+
const WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
|
|
29
|
+
const UseStrictPlugin = require("./UseStrictPlugin");
|
|
30
|
+
|
|
31
|
+
const LoaderPlugin = require("./dependencies/LoaderPlugin");
|
|
32
|
+
const CommonJsPlugin = require("./dependencies/CommonJsPlugin");
|
|
33
|
+
const HarmonyModulesPlugin = require("./dependencies/HarmonyModulesPlugin");
|
|
34
|
+
const SystemPlugin = require("./dependencies/SystemPlugin");
|
|
35
|
+
const ImportPlugin = require("./dependencies/ImportPlugin");
|
|
36
|
+
const RequireContextPlugin = require("./dependencies/RequireContextPlugin");
|
|
37
|
+
const RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
|
|
38
|
+
const RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
|
|
39
|
+
|
|
40
|
+
const { cachedCleverMerge } = require("./util/cleverMerge");
|
|
41
|
+
|
|
42
|
+
/** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
|
|
43
|
+
/** @typedef {import("./Compiler")} Compiler */
|
|
44
|
+
|
|
45
|
+
class WebpackOptionsApply extends OptionsApply {
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @param {WebpackOptions} options options object
|
|
52
|
+
* @param {Compiler} compiler compiler object
|
|
53
|
+
* @returns {WebpackOptions} options object
|
|
54
|
+
*/
|
|
55
|
+
process(options, compiler) {
|
|
56
|
+
let ExternalsPlugin;
|
|
57
|
+
compiler.outputPath = options.output.path;
|
|
58
|
+
compiler.recordsInputPath = options.recordsInputPath || options.recordsPath;
|
|
59
|
+
compiler.recordsOutputPath =
|
|
60
|
+
options.recordsOutputPath || options.recordsPath;
|
|
61
|
+
compiler.name = options.name;
|
|
62
|
+
// TODO webpack 5 refactor this to MultiCompiler.setDependencies() with a WeakMap
|
|
63
|
+
// @ts-ignore TODO
|
|
64
|
+
compiler.dependencies = options.dependencies;
|
|
65
|
+
if (typeof options.target === "string") {
|
|
66
|
+
let JsonpTemplatePlugin;
|
|
67
|
+
let FetchCompileWasmTemplatePlugin;
|
|
68
|
+
let ReadFileCompileWasmTemplatePlugin;
|
|
69
|
+
let NodeSourcePlugin;
|
|
70
|
+
let NodeTargetPlugin;
|
|
71
|
+
let NodeTemplatePlugin;
|
|
72
|
+
|
|
73
|
+
switch (options.target) {
|
|
74
|
+
case "web":
|
|
75
|
+
JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin");
|
|
76
|
+
FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin");
|
|
77
|
+
NodeSourcePlugin = require("./node/NodeSourcePlugin");
|
|
78
|
+
new JsonpTemplatePlugin().apply(compiler);
|
|
79
|
+
new FetchCompileWasmTemplatePlugin({
|
|
80
|
+
mangleImports: options.optimization.mangleWasmImports
|
|
81
|
+
}).apply(compiler);
|
|
82
|
+
new FunctionModulePlugin().apply(compiler);
|
|
83
|
+
new NodeSourcePlugin(options.node).apply(compiler);
|
|
84
|
+
new LoaderTargetPlugin(options.target).apply(compiler);
|
|
85
|
+
break;
|
|
86
|
+
case "webworker": {
|
|
87
|
+
let WebWorkerTemplatePlugin = require("./webworker/WebWorkerTemplatePlugin");
|
|
88
|
+
FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin");
|
|
89
|
+
NodeSourcePlugin = require("./node/NodeSourcePlugin");
|
|
90
|
+
new WebWorkerTemplatePlugin().apply(compiler);
|
|
91
|
+
new FetchCompileWasmTemplatePlugin({
|
|
92
|
+
mangleImports: options.optimization.mangleWasmImports
|
|
93
|
+
}).apply(compiler);
|
|
94
|
+
new FunctionModulePlugin().apply(compiler);
|
|
95
|
+
new NodeSourcePlugin(options.node).apply(compiler);
|
|
96
|
+
new LoaderTargetPlugin(options.target).apply(compiler);
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case "node":
|
|
100
|
+
case "async-node":
|
|
101
|
+
NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
|
|
102
|
+
ReadFileCompileWasmTemplatePlugin = require("./node/ReadFileCompileWasmTemplatePlugin");
|
|
103
|
+
NodeTargetPlugin = require("./node/NodeTargetPlugin");
|
|
104
|
+
new NodeTemplatePlugin({
|
|
105
|
+
asyncChunkLoading: options.target === "async-node"
|
|
106
|
+
}).apply(compiler);
|
|
107
|
+
new ReadFileCompileWasmTemplatePlugin({
|
|
108
|
+
mangleImports: options.optimization.mangleWasmImports
|
|
109
|
+
}).apply(compiler);
|
|
110
|
+
new FunctionModulePlugin().apply(compiler);
|
|
111
|
+
new NodeTargetPlugin().apply(compiler);
|
|
112
|
+
new LoaderTargetPlugin("node").apply(compiler);
|
|
113
|
+
break;
|
|
114
|
+
case "node-webkit":
|
|
115
|
+
JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin");
|
|
116
|
+
NodeTargetPlugin = require("./node/NodeTargetPlugin");
|
|
117
|
+
ExternalsPlugin = require("./ExternalsPlugin");
|
|
118
|
+
new JsonpTemplatePlugin().apply(compiler);
|
|
119
|
+
new FunctionModulePlugin().apply(compiler);
|
|
120
|
+
new NodeTargetPlugin().apply(compiler);
|
|
121
|
+
new ExternalsPlugin("commonjs", "nw.gui").apply(compiler);
|
|
122
|
+
new LoaderTargetPlugin(options.target).apply(compiler);
|
|
123
|
+
break;
|
|
124
|
+
case "electron-main":
|
|
125
|
+
NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
|
|
126
|
+
NodeTargetPlugin = require("./node/NodeTargetPlugin");
|
|
127
|
+
ExternalsPlugin = require("./ExternalsPlugin");
|
|
128
|
+
new NodeTemplatePlugin({
|
|
129
|
+
asyncChunkLoading: true
|
|
130
|
+
}).apply(compiler);
|
|
131
|
+
new FunctionModulePlugin().apply(compiler);
|
|
132
|
+
new NodeTargetPlugin().apply(compiler);
|
|
133
|
+
new ExternalsPlugin("commonjs", [
|
|
134
|
+
"app",
|
|
135
|
+
"auto-updater",
|
|
136
|
+
"browser-window",
|
|
137
|
+
"clipboard",
|
|
138
|
+
"content-tracing",
|
|
139
|
+
"crash-reporter",
|
|
140
|
+
"dialog",
|
|
141
|
+
"electron",
|
|
142
|
+
"global-shortcut",
|
|
143
|
+
"ipc",
|
|
144
|
+
"ipc-main",
|
|
145
|
+
"menu",
|
|
146
|
+
"menu-item",
|
|
147
|
+
"native-image",
|
|
148
|
+
"original-fs",
|
|
149
|
+
"power-monitor",
|
|
150
|
+
"power-save-blocker",
|
|
151
|
+
"protocol",
|
|
152
|
+
"screen",
|
|
153
|
+
"session",
|
|
154
|
+
"shell",
|
|
155
|
+
"tray",
|
|
156
|
+
"web-contents"
|
|
157
|
+
]).apply(compiler);
|
|
158
|
+
new LoaderTargetPlugin(options.target).apply(compiler);
|
|
159
|
+
break;
|
|
160
|
+
case "electron-renderer":
|
|
161
|
+
case "electron-preload":
|
|
162
|
+
FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin");
|
|
163
|
+
NodeTargetPlugin = require("./node/NodeTargetPlugin");
|
|
164
|
+
ExternalsPlugin = require("./ExternalsPlugin");
|
|
165
|
+
if (options.target === "electron-renderer") {
|
|
166
|
+
JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin");
|
|
167
|
+
new JsonpTemplatePlugin().apply(compiler);
|
|
168
|
+
} else if (options.target === "electron-preload") {
|
|
169
|
+
NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
|
|
170
|
+
new NodeTemplatePlugin({
|
|
171
|
+
asyncChunkLoading: true
|
|
172
|
+
}).apply(compiler);
|
|
173
|
+
}
|
|
174
|
+
new FetchCompileWasmTemplatePlugin({
|
|
175
|
+
mangleImports: options.optimization.mangleWasmImports
|
|
176
|
+
}).apply(compiler);
|
|
177
|
+
new FunctionModulePlugin().apply(compiler);
|
|
178
|
+
new NodeTargetPlugin().apply(compiler);
|
|
179
|
+
new ExternalsPlugin("commonjs", [
|
|
180
|
+
"clipboard",
|
|
181
|
+
"crash-reporter",
|
|
182
|
+
"desktop-capturer",
|
|
183
|
+
"electron",
|
|
184
|
+
"ipc",
|
|
185
|
+
"ipc-renderer",
|
|
186
|
+
"native-image",
|
|
187
|
+
"original-fs",
|
|
188
|
+
"remote",
|
|
189
|
+
"screen",
|
|
190
|
+
"shell",
|
|
191
|
+
"web-frame"
|
|
192
|
+
]).apply(compiler);
|
|
193
|
+
new LoaderTargetPlugin(options.target).apply(compiler);
|
|
194
|
+
break;
|
|
195
|
+
default:
|
|
196
|
+
throw new Error("Unsupported target '" + options.target + "'.");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// @ts-ignore This is always true, which is good this way
|
|
200
|
+
else if (options.target !== false) {
|
|
201
|
+
options.target(compiler);
|
|
202
|
+
} else {
|
|
203
|
+
throw new Error("Unsupported target '" + options.target + "'.");
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (options.output.library || options.output.libraryTarget !== "var") {
|
|
207
|
+
const LibraryTemplatePlugin = require("./LibraryTemplatePlugin");
|
|
208
|
+
new LibraryTemplatePlugin(
|
|
209
|
+
options.output.library,
|
|
210
|
+
options.output.libraryTarget,
|
|
211
|
+
options.output.umdNamedDefine,
|
|
212
|
+
options.output.auxiliaryComment || "",
|
|
213
|
+
options.output.libraryExport
|
|
214
|
+
).apply(compiler);
|
|
215
|
+
}
|
|
216
|
+
if (options.externals) {
|
|
217
|
+
ExternalsPlugin = require("./ExternalsPlugin");
|
|
218
|
+
new ExternalsPlugin(
|
|
219
|
+
options.output.libraryTarget,
|
|
220
|
+
options.externals
|
|
221
|
+
).apply(compiler);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
let noSources;
|
|
225
|
+
let legacy;
|
|
226
|
+
let modern;
|
|
227
|
+
let comment;
|
|
228
|
+
if (
|
|
229
|
+
options.devtool &&
|
|
230
|
+
(options.devtool.includes("sourcemap") ||
|
|
231
|
+
options.devtool.includes("source-map"))
|
|
232
|
+
) {
|
|
233
|
+
const hidden = options.devtool.includes("hidden");
|
|
234
|
+
const inline = options.devtool.includes("inline");
|
|
235
|
+
const evalWrapped = options.devtool.includes("eval");
|
|
236
|
+
const cheap = options.devtool.includes("cheap");
|
|
237
|
+
const moduleMaps = options.devtool.includes("module");
|
|
238
|
+
noSources = options.devtool.includes("nosources");
|
|
239
|
+
legacy = options.devtool.includes("@");
|
|
240
|
+
modern = options.devtool.includes("#");
|
|
241
|
+
comment =
|
|
242
|
+
legacy && modern
|
|
243
|
+
? "\n/*\n//@ source" +
|
|
244
|
+
"MappingURL=[url]\n//# source" +
|
|
245
|
+
"MappingURL=[url]\n*/"
|
|
246
|
+
: legacy
|
|
247
|
+
? "\n/*\n//@ source" + "MappingURL=[url]\n*/"
|
|
248
|
+
: modern
|
|
249
|
+
? "\n//# source" + "MappingURL=[url]"
|
|
250
|
+
: null;
|
|
251
|
+
const Plugin = evalWrapped
|
|
252
|
+
? EvalSourceMapDevToolPlugin
|
|
253
|
+
: SourceMapDevToolPlugin;
|
|
254
|
+
new Plugin({
|
|
255
|
+
filename: inline ? null : options.output.sourceMapFilename,
|
|
256
|
+
moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
|
|
257
|
+
fallbackModuleFilenameTemplate:
|
|
258
|
+
options.output.devtoolFallbackModuleFilenameTemplate,
|
|
259
|
+
append: hidden ? false : comment,
|
|
260
|
+
module: moduleMaps ? true : cheap ? false : true,
|
|
261
|
+
columns: cheap ? false : true,
|
|
262
|
+
lineToLine: options.output.devtoolLineToLine,
|
|
263
|
+
noSources: noSources,
|
|
264
|
+
namespace: options.output.devtoolNamespace
|
|
265
|
+
}).apply(compiler);
|
|
266
|
+
} else if (options.devtool && options.devtool.includes("eval")) {
|
|
267
|
+
legacy = options.devtool.includes("@");
|
|
268
|
+
modern = options.devtool.includes("#");
|
|
269
|
+
comment =
|
|
270
|
+
legacy && modern
|
|
271
|
+
? "\n//@ sourceURL=[url]\n//# sourceURL=[url]"
|
|
272
|
+
: legacy
|
|
273
|
+
? "\n//@ sourceURL=[url]"
|
|
274
|
+
: modern
|
|
275
|
+
? "\n//# sourceURL=[url]"
|
|
276
|
+
: null;
|
|
277
|
+
new EvalDevToolModulePlugin({
|
|
278
|
+
sourceUrlComment: comment,
|
|
279
|
+
moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
|
|
280
|
+
namespace: options.output.devtoolNamespace
|
|
281
|
+
}).apply(compiler);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
new JavascriptModulesPlugin().apply(compiler);
|
|
285
|
+
new JsonModulesPlugin().apply(compiler);
|
|
286
|
+
new WebAssemblyModulesPlugin({
|
|
287
|
+
mangleImports: options.optimization.mangleWasmImports
|
|
288
|
+
}).apply(compiler);
|
|
289
|
+
|
|
290
|
+
new EntryOptionPlugin().apply(compiler);
|
|
291
|
+
compiler.hooks.entryOption.call(options.context, options.entry);
|
|
292
|
+
|
|
293
|
+
new CompatibilityPlugin().apply(compiler);
|
|
294
|
+
new HarmonyModulesPlugin(options.module).apply(compiler);
|
|
295
|
+
if (options.amd !== false) {
|
|
296
|
+
const AMDPlugin = require("./dependencies/AMDPlugin");
|
|
297
|
+
const RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
|
|
298
|
+
new AMDPlugin(options.module, options.amd || {}).apply(compiler);
|
|
299
|
+
new RequireJsStuffPlugin().apply(compiler);
|
|
300
|
+
}
|
|
301
|
+
new CommonJsPlugin(options.module).apply(compiler);
|
|
302
|
+
new LoaderPlugin().apply(compiler);
|
|
303
|
+
if (options.node !== false) {
|
|
304
|
+
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
|
305
|
+
new NodeStuffPlugin(options.node).apply(compiler);
|
|
306
|
+
}
|
|
307
|
+
new CommonJsStuffPlugin().apply(compiler);
|
|
308
|
+
new APIPlugin().apply(compiler);
|
|
309
|
+
new ConstPlugin().apply(compiler);
|
|
310
|
+
new UseStrictPlugin().apply(compiler);
|
|
311
|
+
new RequireIncludePlugin().apply(compiler);
|
|
312
|
+
new RequireEnsurePlugin().apply(compiler);
|
|
313
|
+
new RequireContextPlugin(
|
|
314
|
+
options.resolve.modules,
|
|
315
|
+
options.resolve.extensions,
|
|
316
|
+
options.resolve.mainFiles
|
|
317
|
+
).apply(compiler);
|
|
318
|
+
new ImportPlugin(options.module).apply(compiler);
|
|
319
|
+
new SystemPlugin(options.module).apply(compiler);
|
|
320
|
+
|
|
321
|
+
if (typeof options.mode !== "string") {
|
|
322
|
+
const WarnNoModeSetPlugin = require("./WarnNoModeSetPlugin");
|
|
323
|
+
new WarnNoModeSetPlugin().apply(compiler);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const EnsureChunkConditionsPlugin = require("./optimize/EnsureChunkConditionsPlugin");
|
|
327
|
+
new EnsureChunkConditionsPlugin().apply(compiler);
|
|
328
|
+
if (options.optimization.removeAvailableModules) {
|
|
329
|
+
const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
|
|
330
|
+
new RemoveParentModulesPlugin().apply(compiler);
|
|
331
|
+
}
|
|
332
|
+
if (options.optimization.removeEmptyChunks) {
|
|
333
|
+
const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
|
|
334
|
+
new RemoveEmptyChunksPlugin().apply(compiler);
|
|
335
|
+
}
|
|
336
|
+
if (options.optimization.mergeDuplicateChunks) {
|
|
337
|
+
const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
|
|
338
|
+
new MergeDuplicateChunksPlugin().apply(compiler);
|
|
339
|
+
}
|
|
340
|
+
if (options.optimization.flagIncludedChunks) {
|
|
341
|
+
const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
|
|
342
|
+
new FlagIncludedChunksPlugin().apply(compiler);
|
|
343
|
+
}
|
|
344
|
+
if (options.optimization.sideEffects) {
|
|
345
|
+
const SideEffectsFlagPlugin = require("./optimize/SideEffectsFlagPlugin");
|
|
346
|
+
new SideEffectsFlagPlugin().apply(compiler);
|
|
347
|
+
}
|
|
348
|
+
if (options.optimization.providedExports) {
|
|
349
|
+
const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
|
|
350
|
+
new FlagDependencyExportsPlugin().apply(compiler);
|
|
351
|
+
}
|
|
352
|
+
if (options.optimization.usedExports) {
|
|
353
|
+
const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin");
|
|
354
|
+
new FlagDependencyUsagePlugin().apply(compiler);
|
|
355
|
+
}
|
|
356
|
+
if (options.optimization.concatenateModules) {
|
|
357
|
+
const ModuleConcatenationPlugin = require("./optimize/ModuleConcatenationPlugin");
|
|
358
|
+
new ModuleConcatenationPlugin().apply(compiler);
|
|
359
|
+
}
|
|
360
|
+
if (options.optimization.splitChunks) {
|
|
361
|
+
const SplitChunksPlugin = require("./optimize/SplitChunksPlugin");
|
|
362
|
+
new SplitChunksPlugin(options.optimization.splitChunks).apply(compiler);
|
|
363
|
+
}
|
|
364
|
+
if (options.optimization.runtimeChunk) {
|
|
365
|
+
const RuntimeChunkPlugin = require("./optimize/RuntimeChunkPlugin");
|
|
366
|
+
new RuntimeChunkPlugin(options.optimization.runtimeChunk).apply(compiler);
|
|
367
|
+
}
|
|
368
|
+
if (options.optimization.noEmitOnErrors) {
|
|
369
|
+
const NoEmitOnErrorsPlugin = require("./NoEmitOnErrorsPlugin");
|
|
370
|
+
new NoEmitOnErrorsPlugin().apply(compiler);
|
|
371
|
+
}
|
|
372
|
+
if (options.optimization.checkWasmTypes) {
|
|
373
|
+
const WasmFinalizeExportsPlugin = require("./wasm/WasmFinalizeExportsPlugin");
|
|
374
|
+
new WasmFinalizeExportsPlugin().apply(compiler);
|
|
375
|
+
}
|
|
376
|
+
let moduleIds = options.optimization.moduleIds;
|
|
377
|
+
if (moduleIds === undefined) {
|
|
378
|
+
// TODO webpack 5 remove all these options
|
|
379
|
+
if (options.optimization.occurrenceOrder) {
|
|
380
|
+
moduleIds = "size";
|
|
381
|
+
}
|
|
382
|
+
if (options.optimization.namedModules) {
|
|
383
|
+
moduleIds = "named";
|
|
384
|
+
}
|
|
385
|
+
if (options.optimization.hashedModuleIds) {
|
|
386
|
+
moduleIds = "hashed";
|
|
387
|
+
}
|
|
388
|
+
if (moduleIds === undefined) {
|
|
389
|
+
moduleIds = "natural";
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
if (moduleIds) {
|
|
393
|
+
const NamedModulesPlugin = require("./NamedModulesPlugin");
|
|
394
|
+
const HashedModuleIdsPlugin = require("./HashedModuleIdsPlugin");
|
|
395
|
+
const OccurrenceModuleOrderPlugin = require("./optimize/OccurrenceModuleOrderPlugin");
|
|
396
|
+
switch (moduleIds) {
|
|
397
|
+
case "natural":
|
|
398
|
+
// TODO webpack 5: see hint in Compilation.sortModules
|
|
399
|
+
break;
|
|
400
|
+
case "named":
|
|
401
|
+
new NamedModulesPlugin().apply(compiler);
|
|
402
|
+
break;
|
|
403
|
+
case "hashed":
|
|
404
|
+
new HashedModuleIdsPlugin().apply(compiler);
|
|
405
|
+
break;
|
|
406
|
+
case "size":
|
|
407
|
+
new OccurrenceModuleOrderPlugin({
|
|
408
|
+
prioritiseInitial: true
|
|
409
|
+
}).apply(compiler);
|
|
410
|
+
break;
|
|
411
|
+
case "total-size":
|
|
412
|
+
new OccurrenceModuleOrderPlugin({
|
|
413
|
+
prioritiseInitial: false
|
|
414
|
+
}).apply(compiler);
|
|
415
|
+
break;
|
|
416
|
+
default:
|
|
417
|
+
throw new Error(
|
|
418
|
+
`webpack bug: moduleIds: ${moduleIds} is not implemented`
|
|
419
|
+
);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
let chunkIds = options.optimization.chunkIds;
|
|
423
|
+
if (chunkIds === undefined) {
|
|
424
|
+
// TODO webpack 5 remove all these options
|
|
425
|
+
if (options.optimization.occurrenceOrder) {
|
|
426
|
+
// This looks weird but it's for backward-compat
|
|
427
|
+
// This bug already existed before adding this feature
|
|
428
|
+
chunkIds = "total-size";
|
|
429
|
+
}
|
|
430
|
+
if (options.optimization.namedChunks) {
|
|
431
|
+
chunkIds = "named";
|
|
432
|
+
}
|
|
433
|
+
if (chunkIds === undefined) {
|
|
434
|
+
chunkIds = "natural";
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
if (chunkIds) {
|
|
438
|
+
const NaturalChunkOrderPlugin = require("./optimize/NaturalChunkOrderPlugin");
|
|
439
|
+
const NamedChunksPlugin = require("./NamedChunksPlugin");
|
|
440
|
+
const OccurrenceChunkOrderPlugin = require("./optimize/OccurrenceChunkOrderPlugin");
|
|
441
|
+
switch (chunkIds) {
|
|
442
|
+
case "natural":
|
|
443
|
+
new NaturalChunkOrderPlugin().apply(compiler);
|
|
444
|
+
break;
|
|
445
|
+
case "named":
|
|
446
|
+
// TODO webapck 5: for backward-compat this need to have OccurrenceChunkOrderPlugin too
|
|
447
|
+
// The NamedChunksPlugin doesn't give every chunk a name
|
|
448
|
+
// This should be fixed, and the OccurrenceChunkOrderPlugin should be removed here.
|
|
449
|
+
new OccurrenceChunkOrderPlugin({
|
|
450
|
+
prioritiseInitial: false
|
|
451
|
+
}).apply(compiler);
|
|
452
|
+
new NamedChunksPlugin().apply(compiler);
|
|
453
|
+
break;
|
|
454
|
+
case "size":
|
|
455
|
+
new OccurrenceChunkOrderPlugin({
|
|
456
|
+
prioritiseInitial: true
|
|
457
|
+
}).apply(compiler);
|
|
458
|
+
break;
|
|
459
|
+
case "total-size":
|
|
460
|
+
new OccurrenceChunkOrderPlugin({
|
|
461
|
+
prioritiseInitial: false
|
|
462
|
+
}).apply(compiler);
|
|
463
|
+
break;
|
|
464
|
+
default:
|
|
465
|
+
throw new Error(
|
|
466
|
+
`webpack bug: chunkIds: ${chunkIds} is not implemented`
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
if (options.optimization.nodeEnv) {
|
|
471
|
+
const DefinePlugin = require("./DefinePlugin");
|
|
472
|
+
new DefinePlugin({
|
|
473
|
+
"process.env.NODE_ENV": JSON.stringify(options.optimization.nodeEnv)
|
|
474
|
+
}).apply(compiler);
|
|
475
|
+
}
|
|
476
|
+
if (options.optimization.minimize) {
|
|
477
|
+
for (const minimizer of options.optimization.minimizer) {
|
|
478
|
+
if (typeof minimizer === "function") {
|
|
479
|
+
minimizer.call(compiler, compiler);
|
|
480
|
+
} else {
|
|
481
|
+
minimizer.apply(compiler);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (options.performance) {
|
|
487
|
+
const SizeLimitsPlugin = require("./performance/SizeLimitsPlugin");
|
|
488
|
+
new SizeLimitsPlugin(options.performance).apply(compiler);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
new TemplatedPathPlugin().apply(compiler);
|
|
492
|
+
|
|
493
|
+
new RecordIdsPlugin({
|
|
494
|
+
portableIds: options.optimization.portableRecords
|
|
495
|
+
}).apply(compiler);
|
|
496
|
+
|
|
497
|
+
new WarnCaseSensitiveModulesPlugin().apply(compiler);
|
|
498
|
+
|
|
499
|
+
if (options.cache) {
|
|
500
|
+
const CachePlugin = require("./CachePlugin");
|
|
501
|
+
new CachePlugin(
|
|
502
|
+
typeof options.cache === "object" ? options.cache : null
|
|
503
|
+
).apply(compiler);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
compiler.hooks.afterPlugins.call(compiler);
|
|
507
|
+
if (!compiler.inputFileSystem) {
|
|
508
|
+
throw new Error("No input filesystem provided");
|
|
509
|
+
}
|
|
510
|
+
compiler.resolverFactory.hooks.resolveOptions
|
|
511
|
+
.for("normal")
|
|
512
|
+
.tap("WebpackOptionsApply", resolveOptions => {
|
|
513
|
+
return Object.assign(
|
|
514
|
+
{
|
|
515
|
+
fileSystem: compiler.inputFileSystem
|
|
516
|
+
},
|
|
517
|
+
cachedCleverMerge(options.resolve, resolveOptions)
|
|
518
|
+
);
|
|
519
|
+
});
|
|
520
|
+
compiler.resolverFactory.hooks.resolveOptions
|
|
521
|
+
.for("context")
|
|
522
|
+
.tap("WebpackOptionsApply", resolveOptions => {
|
|
523
|
+
return Object.assign(
|
|
524
|
+
{
|
|
525
|
+
fileSystem: compiler.inputFileSystem,
|
|
526
|
+
resolveToContext: true
|
|
527
|
+
},
|
|
528
|
+
cachedCleverMerge(options.resolve, resolveOptions)
|
|
529
|
+
);
|
|
530
|
+
});
|
|
531
|
+
compiler.resolverFactory.hooks.resolveOptions
|
|
532
|
+
.for("loader")
|
|
533
|
+
.tap("WebpackOptionsApply", resolveOptions => {
|
|
534
|
+
return Object.assign(
|
|
535
|
+
{
|
|
536
|
+
fileSystem: compiler.inputFileSystem
|
|
537
|
+
},
|
|
538
|
+
cachedCleverMerge(options.resolveLoader, resolveOptions)
|
|
539
|
+
);
|
|
540
|
+
});
|
|
541
|
+
compiler.hooks.afterResolvers.call(compiler);
|
|
542
|
+
return options;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
module.exports = WebpackOptionsApply;
|