webpack 5.93.0 → 5.95.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/README.md +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +6 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +41 -15
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +130 -69
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +21 -13
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +93 -81
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +32 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +26 -24
- package/lib/css/CssGenerator.js +9 -4
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +7 -2
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +35 -8
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +133 -86
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +81 -51
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +13 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +8 -11
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +32 -32
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +109 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +18 -17
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +5 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/types.d.ts +681 -355
package/lib/ExternalModule.js
CHANGED
@@ -53,7 +53,7 @@ const { register } = require("./util/serialization");
|
|
53
53
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
54
54
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
55
55
|
|
56
|
-
/** @typedef {{ attributes?: ImportAttributes }} ImportDependencyMeta */
|
56
|
+
/** @typedef {{ attributes?: ImportAttributes, externalType: "import" | "module" | undefined }} ImportDependencyMeta */
|
57
57
|
/** @typedef {{ layer?: string, supports?: string, media?: string }} CssImportDependencyMeta */
|
58
58
|
|
59
59
|
/** @typedef {ImportDependencyMeta | CssImportDependencyMeta} DependencyMeta */
|
@@ -164,7 +164,10 @@ const getSourceForImportExternal = (
|
|
164
164
|
dependencyMeta
|
165
165
|
) => {
|
166
166
|
const importName = runtimeTemplate.outputOptions.importFunctionName;
|
167
|
-
if (
|
167
|
+
if (
|
168
|
+
!runtimeTemplate.supportsDynamicImport() &&
|
169
|
+
(importName === "import" || importName === "module-import")
|
170
|
+
) {
|
168
171
|
throw new Error(
|
169
172
|
"The target environment doesn't support 'import()' so it's not possible to use external type 'import'"
|
170
173
|
);
|
@@ -210,7 +213,7 @@ const getSourceForImportExternal = (
|
|
210
213
|
*/
|
211
214
|
const importAssertionReplacer = (key, value) => {
|
212
215
|
if (key === "_isLegacyAssert") {
|
213
|
-
return
|
216
|
+
return;
|
214
217
|
}
|
215
218
|
|
216
219
|
return value;
|
@@ -353,7 +356,7 @@ const getSourceForModuleExternal = (
|
|
353
356
|
runtime,
|
354
357
|
runtimeTemplate
|
355
358
|
);
|
356
|
-
|
359
|
+
const expression = moduleRemapping || baseAccess;
|
357
360
|
return {
|
358
361
|
expression,
|
359
362
|
init: moduleRemapping
|
@@ -415,11 +418,10 @@ const getSourceForScriptExternal = (urlAndGlobal, runtimeTemplate) => {
|
|
415
418
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
416
419
|
* @returns {string} the generated source
|
417
420
|
*/
|
418
|
-
const checkExternalVariable = (variableName, request, runtimeTemplate) =>
|
419
|
-
|
421
|
+
const checkExternalVariable = (variableName, request, runtimeTemplate) =>
|
422
|
+
`if(typeof ${variableName} === 'undefined') { ${runtimeTemplate.throwMissingModuleErrorBlock(
|
420
423
|
{ request }
|
421
424
|
)} }\n`;
|
422
|
-
};
|
423
425
|
|
424
426
|
/**
|
425
427
|
* @param {string|number} id the module id
|
@@ -524,7 +526,7 @@ class ExternalModule extends Module {
|
|
524
526
|
* @returns {string} a unique identifier of the module
|
525
527
|
*/
|
526
528
|
identifier() {
|
527
|
-
return `external ${this.externalType} ${JSON.stringify(this.request)}`;
|
529
|
+
return `external ${this._resolveExternalType(this.externalType)} ${JSON.stringify(this.request)}`;
|
528
530
|
}
|
529
531
|
|
530
532
|
/**
|
@@ -532,7 +534,7 @@ class ExternalModule extends Module {
|
|
532
534
|
* @returns {string} a user readable identifier of the module
|
533
535
|
*/
|
534
536
|
readableIdentifier(requestShortener) {
|
535
|
-
return
|
537
|
+
return `external ${JSON.stringify(this.request)}`;
|
536
538
|
}
|
537
539
|
|
538
540
|
/**
|
@@ -658,9 +660,31 @@ class ExternalModule extends Module {
|
|
658
660
|
let { request, externalType } = this;
|
659
661
|
if (typeof request === "object" && !Array.isArray(request))
|
660
662
|
request = request[externalType];
|
663
|
+
externalType = this._resolveExternalType(externalType);
|
661
664
|
return { request, externalType };
|
662
665
|
}
|
663
666
|
|
667
|
+
/**
|
668
|
+
* Resolve the detailed external type from the raw external type.
|
669
|
+
* e.g. resolve "module" or "import" from "module-import" type
|
670
|
+
* @param {string} externalType raw external type
|
671
|
+
* @returns {string} resolved external type
|
672
|
+
*/
|
673
|
+
_resolveExternalType(externalType) {
|
674
|
+
if (externalType === "module-import") {
|
675
|
+
if (
|
676
|
+
this.dependencyMeta &&
|
677
|
+
/** @type {ImportDependencyMeta} */ (this.dependencyMeta).externalType
|
678
|
+
) {
|
679
|
+
return /** @type {ImportDependencyMeta} */ (this.dependencyMeta)
|
680
|
+
.externalType;
|
681
|
+
}
|
682
|
+
return "module";
|
683
|
+
}
|
684
|
+
|
685
|
+
return externalType;
|
686
|
+
}
|
687
|
+
|
664
688
|
/**
|
665
689
|
* @private
|
666
690
|
* @param {string | string[]} request request
|
@@ -702,7 +726,8 @@ class ExternalModule extends Module {
|
|
702
726
|
request,
|
703
727
|
/** @type {string} */
|
704
728
|
(runtimeTemplate.outputOptions.importMetaName),
|
705
|
-
|
729
|
+
/** @type {boolean} */
|
730
|
+
(runtimeTemplate.supportNodePrefixForCoreModules())
|
706
731
|
)
|
707
732
|
: getSourceForCommonJsExternal(request);
|
708
733
|
case "amd":
|
@@ -731,10 +756,11 @@ class ExternalModule extends Module {
|
|
731
756
|
if (!(/** @type {BuildInfo} */ (this.buildInfo).module)) {
|
732
757
|
if (!runtimeTemplate.supportsDynamicImport()) {
|
733
758
|
throw new Error(
|
734
|
-
|
735
|
-
|
759
|
+
`The target environment doesn't support dynamic import() syntax so it's not possible to use external type 'module' within a script${
|
760
|
+
runtimeTemplate.supportsEcmaScriptModuleSyntax()
|
736
761
|
? "\nDid you mean to build a EcmaScript Module ('output.module: true')?"
|
737
|
-
: ""
|
762
|
+
: ""
|
763
|
+
}`
|
738
764
|
);
|
739
765
|
}
|
740
766
|
return getSourceForImportExternal(
|
@@ -846,7 +872,7 @@ class ExternalModule extends Module {
|
|
846
872
|
if (sourceData.init)
|
847
873
|
sourceString = `${sourceData.init}\n${sourceString}`;
|
848
874
|
|
849
|
-
let data
|
875
|
+
let data;
|
850
876
|
if (sourceData.chunkInitFragments) {
|
851
877
|
data = new Map();
|
852
878
|
data.set("chunkInitFragments", sourceData.chunkInitFragments);
|
@@ -899,7 +925,7 @@ class ExternalModule extends Module {
|
|
899
925
|
updateHash(hash, context) {
|
900
926
|
const { chunkGraph } = context;
|
901
927
|
hash.update(
|
902
|
-
`${this.externalType}${JSON.stringify(this.request)}${this.isOptional(
|
928
|
+
`${this._resolveExternalType(this.externalType)}${JSON.stringify(this.request)}${this.isOptional(
|
903
929
|
chunkGraph.moduleGraph
|
904
930
|
)}`
|
905
931
|
);
|
@@ -25,6 +25,7 @@ const EMPTY_RESOLVE_OPTIONS = {};
|
|
25
25
|
// TODO webpack 6 remove this
|
26
26
|
const callDeprecatedExternals = util.deprecate(
|
27
27
|
(externalsFunction, context, request, cb) => {
|
28
|
+
// eslint-disable-next-line no-useless-call
|
28
29
|
externalsFunction.call(null, context, request, cb);
|
29
30
|
},
|
30
31
|
"The externals-function should be defined like ({context, request}, cb) => { ... }",
|
@@ -33,6 +34,11 @@ const callDeprecatedExternals = util.deprecate(
|
|
33
34
|
|
34
35
|
const cache = new WeakMap();
|
35
36
|
|
37
|
+
/**
|
38
|
+
* @param {object} obj obj
|
39
|
+
* @param {TODO} layer layer
|
40
|
+
* @returns {object} result
|
41
|
+
*/
|
36
42
|
const resolveLayer = (obj, layer) => {
|
37
43
|
let map = cache.get(obj);
|
38
44
|
if (map === undefined) {
|
@@ -47,6 +53,9 @@ const resolveLayer = (obj, layer) => {
|
|
47
53
|
return result;
|
48
54
|
};
|
49
55
|
|
56
|
+
/** @typedef {string|string[]|boolean|Record<string, string|string[]>} ExternalValue */
|
57
|
+
/** @typedef {string|undefined} ExternalType */
|
58
|
+
|
50
59
|
class ExternalModuleFactoryPlugin {
|
51
60
|
/**
|
52
61
|
* @param {string | undefined} type default external type
|
@@ -72,8 +81,8 @@ class ExternalModuleFactoryPlugin {
|
|
72
81
|
const dependencyType = data.dependencyType;
|
73
82
|
|
74
83
|
/**
|
75
|
-
* @param {
|
76
|
-
* @param {
|
84
|
+
* @param {ExternalValue} value the external config
|
85
|
+
* @param {ExternalType | undefined} type type of external
|
77
86
|
* @param {function((Error | null)=, ExternalModule=): void} callback callback
|
78
87
|
* @returns {void}
|
79
88
|
*/
|
@@ -83,12 +92,7 @@ class ExternalModuleFactoryPlugin {
|
|
83
92
|
return callback();
|
84
93
|
}
|
85
94
|
/** @type {string | string[] | Record<string, string|string[]>} */
|
86
|
-
let externalConfig;
|
87
|
-
if (value === true) {
|
88
|
-
externalConfig = dependency.request;
|
89
|
-
} else {
|
90
|
-
externalConfig = value;
|
91
|
-
}
|
95
|
+
let externalConfig = value === true ? dependency.request : value;
|
92
96
|
// When no explicit type is specified, extract it from the externalConfig
|
93
97
|
if (type === undefined) {
|
94
98
|
if (
|
@@ -122,8 +126,16 @@ class ExternalModuleFactoryPlugin {
|
|
122
126
|
dependency instanceof ImportDependency ||
|
123
127
|
dependency instanceof ContextElementDependency
|
124
128
|
) {
|
129
|
+
const externalType =
|
130
|
+
dependency instanceof HarmonyImportDependency
|
131
|
+
? "module"
|
132
|
+
: dependency instanceof ImportDependency
|
133
|
+
? "import"
|
134
|
+
: undefined;
|
135
|
+
|
125
136
|
dependencyMeta = {
|
126
|
-
attributes: dependency.assertions
|
137
|
+
attributes: dependency.assertions,
|
138
|
+
externalType
|
127
139
|
};
|
128
140
|
} else if (dependency instanceof CssImportDependency) {
|
129
141
|
dependencyMeta = {
|
@@ -137,7 +149,8 @@ class ExternalModuleFactoryPlugin {
|
|
137
149
|
null,
|
138
150
|
new ExternalModule(
|
139
151
|
externalConfig,
|
140
|
-
type
|
152
|
+
/** @type {string} */
|
153
|
+
(type || globalType),
|
141
154
|
dependency.request,
|
142
155
|
dependencyMeta
|
143
156
|
)
|