webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -9,9 +9,9 @@ const {
|
|
|
9
9
|
compareModulesByPreOrderIndexOrIdentifier
|
|
10
10
|
} = require("../util/comparators");
|
|
11
11
|
const {
|
|
12
|
-
|
|
12
|
+
assignDeterministicIds,
|
|
13
13
|
getFullModuleName,
|
|
14
|
-
|
|
14
|
+
getUsedModuleIdsAndModules
|
|
15
15
|
} = require("./IdHelpers");
|
|
16
16
|
|
|
17
17
|
/** @typedef {import("../Compiler")} Compiler */
|
|
@@ -20,16 +20,18 @@ const {
|
|
|
20
20
|
/**
|
|
21
21
|
* @typedef {object} DeterministicModuleIdsPluginOptions
|
|
22
22
|
* @property {string=} context context relative to which module identifiers are computed
|
|
23
|
-
* @property {
|
|
23
|
+
* @property {((module: Module) => boolean)=} test selector function for modules
|
|
24
24
|
* @property {number=} maxLength maximum id length in digits (used as starting point)
|
|
25
25
|
* @property {number=} salt hash salt for ids
|
|
26
26
|
* @property {boolean=} fixedLength do not increase the maxLength to find an optimal id space size
|
|
27
27
|
* @property {boolean=} failOnConflict throw an error when id conflicts occur (instead of rehashing)
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
const PLUGIN_NAME = "DeterministicModuleIdsPlugin";
|
|
31
|
+
|
|
30
32
|
class DeterministicModuleIdsPlugin {
|
|
31
33
|
/**
|
|
32
|
-
* @param {DeterministicModuleIdsPluginOptions}
|
|
34
|
+
* @param {DeterministicModuleIdsPluginOptions=} options options
|
|
33
35
|
*/
|
|
34
36
|
constructor(options = {}) {
|
|
35
37
|
this.options = options;
|
|
@@ -41,56 +43,54 @@ class DeterministicModuleIdsPlugin {
|
|
|
41
43
|
* @returns {void}
|
|
42
44
|
*/
|
|
43
45
|
apply(compiler) {
|
|
44
|
-
compiler.hooks.compilation.tap(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const salt = this.options.salt || 0;
|
|
56
|
-
let conflicts = 0;
|
|
46
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
47
|
+
compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
|
|
48
|
+
const chunkGraph = compilation.chunkGraph;
|
|
49
|
+
const context = this.options.context
|
|
50
|
+
? this.options.context
|
|
51
|
+
: compiler.context;
|
|
52
|
+
const maxLength = this.options.maxLength || 3;
|
|
53
|
+
const failOnConflict = this.options.failOnConflict || false;
|
|
54
|
+
const fixedLength = this.options.fixedLength || false;
|
|
55
|
+
const salt = this.options.salt || 0;
|
|
56
|
+
let conflicts = 0;
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
58
|
+
const [usedIds, modules] = getUsedModuleIdsAndModules(
|
|
59
|
+
compilation,
|
|
60
|
+
this.options.test
|
|
61
|
+
);
|
|
62
|
+
assignDeterministicIds(
|
|
63
|
+
modules,
|
|
64
|
+
(module) => getFullModuleName(module, context, compiler.root),
|
|
65
|
+
failOnConflict
|
|
66
|
+
? () => 0
|
|
67
|
+
: compareModulesByPreOrderIndexOrIdentifier(
|
|
68
|
+
compilation.moduleGraph
|
|
69
|
+
),
|
|
70
|
+
(module, id) => {
|
|
71
|
+
const size = usedIds.size;
|
|
72
|
+
usedIds.add(`${id}`);
|
|
73
|
+
if (size === usedIds.size) {
|
|
74
|
+
conflicts++;
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
chunkGraph.setModuleId(module, id);
|
|
78
|
+
return true;
|
|
79
|
+
},
|
|
80
|
+
[10 ** maxLength],
|
|
81
|
+
fixedLength ? 0 : 10,
|
|
82
|
+
usedIds.size,
|
|
83
|
+
salt
|
|
84
|
+
);
|
|
85
|
+
if (failOnConflict && conflicts) {
|
|
86
|
+
throw new Error(
|
|
87
|
+
`Assigning deterministic module ids has lead to ${conflicts} conflict${
|
|
88
|
+
conflicts > 1 ? "s" : ""
|
|
89
|
+
}.\nIncrease the 'maxLength' to increase the id space and make conflicts less likely (recommended when there are many conflicts or application is expected to grow), or add an 'salt' number to try another hash starting value in the same id space (recommended when there is only a single conflict).`
|
|
84
90
|
);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
conflicts > 1 ? "s" : ""
|
|
89
|
-
}.\nIncrease the 'maxLength' to increase the id space and make conflicts less likely (recommended when there are many conflicts or application is expected to grow), or add an 'salt' number to try another hash starting value in the same id space (recommended when there is only a single conflict).`
|
|
90
|
-
);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -5,28 +5,31 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { DEFAULTS } = require("../config/defaults");
|
|
8
9
|
const {
|
|
9
10
|
compareModulesByPreOrderIndexOrIdentifier
|
|
10
11
|
} = require("../util/comparators");
|
|
11
12
|
const createSchemaValidation = require("../util/create-schema-validation");
|
|
12
13
|
const createHash = require("../util/createHash");
|
|
13
14
|
const {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
getFullModuleName,
|
|
16
|
+
getUsedModuleIdsAndModules
|
|
16
17
|
} = require("./IdHelpers");
|
|
17
18
|
|
|
18
|
-
/** @typedef {import("../../declarations/plugins/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
|
|
19
|
+
/** @typedef {import("../../declarations/plugins/ids/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
|
|
19
20
|
/** @typedef {import("../Compiler")} Compiler */
|
|
20
21
|
|
|
21
22
|
const validate = createSchemaValidation(
|
|
22
|
-
require("../../schemas/plugins/HashedModuleIdsPlugin.check
|
|
23
|
-
() => require("../../schemas/plugins/HashedModuleIdsPlugin.json"),
|
|
23
|
+
require("../../schemas/plugins/ids/HashedModuleIdsPlugin.check"),
|
|
24
|
+
() => require("../../schemas/plugins/ids/HashedModuleIdsPlugin.json"),
|
|
24
25
|
{
|
|
25
26
|
name: "Hashed Module Ids Plugin",
|
|
26
27
|
baseDataPath: "options"
|
|
27
28
|
}
|
|
28
29
|
);
|
|
29
30
|
|
|
31
|
+
const PLUGIN_NAME = "HashedModuleIdsPlugin";
|
|
32
|
+
|
|
30
33
|
class HashedModuleIdsPlugin {
|
|
31
34
|
/**
|
|
32
35
|
* @param {HashedModuleIdsPluginOptions=} options options object
|
|
@@ -34,10 +37,10 @@ class HashedModuleIdsPlugin {
|
|
|
34
37
|
constructor(options = {}) {
|
|
35
38
|
validate(options);
|
|
36
39
|
|
|
37
|
-
/** @type {HashedModuleIdsPluginOptions} */
|
|
40
|
+
/** @type {Required<Omit<HashedModuleIdsPluginOptions, "context">> & { context?: string | undefined }} */
|
|
38
41
|
this.options = {
|
|
39
42
|
context: undefined,
|
|
40
|
-
hashFunction:
|
|
43
|
+
hashFunction: DEFAULTS.HASH_FUNCTION,
|
|
41
44
|
hashDigest: "base64",
|
|
42
45
|
hashDigestLength: 4,
|
|
43
46
|
...options
|
|
@@ -51,8 +54,8 @@ class HashedModuleIdsPlugin {
|
|
|
51
54
|
*/
|
|
52
55
|
apply(compiler) {
|
|
53
56
|
const options = this.options;
|
|
54
|
-
compiler.hooks.compilation.tap(
|
|
55
|
-
compilation.hooks.moduleIds.tap(
|
|
57
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
58
|
+
compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
|
|
56
59
|
const chunkGraph = compilation.chunkGraph;
|
|
57
60
|
const context = this.options.context
|
|
58
61
|
? this.options.context
|
|
@@ -70,12 +73,11 @@ class HashedModuleIdsPlugin {
|
|
|
70
73
|
)
|
|
71
74
|
);
|
|
72
75
|
hash.update(ident || "");
|
|
73
|
-
const hashId =
|
|
74
|
-
hash.digest(options.hashDigest)
|
|
75
|
-
);
|
|
76
|
+
const hashId = hash.digest(options.hashDigest);
|
|
76
77
|
let len = options.hashDigestLength;
|
|
77
|
-
while (usedIds.has(hashId.slice(0, len)))
|
|
78
|
+
while (usedIds.has(hashId.slice(0, len))) {
|
|
78
79
|
/** @type {number} */ (len)++;
|
|
80
|
+
}
|
|
79
81
|
const moduleId = hashId.slice(0, len);
|
|
80
82
|
chunkGraph.setModuleId(module, moduleId);
|
|
81
83
|
usedIds.add(moduleId);
|
package/lib/ids/IdHelpers.js
CHANGED
|
@@ -14,6 +14,8 @@ const numberHash = require("../util/numberHash");
|
|
|
14
14
|
/** @typedef {import("../Compilation")} Compilation */
|
|
15
15
|
/** @typedef {import("../Module")} Module */
|
|
16
16
|
/** @typedef {typeof import("../util/Hash")} Hash */
|
|
17
|
+
/** @typedef {import("../util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
|
|
18
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
21
|
* @param {string} str string to hash
|
|
@@ -24,7 +26,7 @@ const numberHash = require("../util/numberHash");
|
|
|
24
26
|
const getHash = (str, len, hashFunction) => {
|
|
25
27
|
const hash = createHash(hashFunction);
|
|
26
28
|
hash.update(str);
|
|
27
|
-
const digest =
|
|
29
|
+
const digest = hash.digest("hex");
|
|
28
30
|
return digest.slice(0, len);
|
|
29
31
|
};
|
|
30
32
|
|
|
@@ -32,7 +34,7 @@ const getHash = (str, len, hashFunction) => {
|
|
|
32
34
|
* @param {string} str the string
|
|
33
35
|
* @returns {string} string prefixed by an underscore if it is a number
|
|
34
36
|
*/
|
|
35
|
-
const avoidNumber = str => {
|
|
37
|
+
const avoidNumber = (str) => {
|
|
36
38
|
// max length of a number is 21 chars, bigger numbers a written as "...e+xx"
|
|
37
39
|
if (str.length > 21) return str;
|
|
38
40
|
const firstChar = str.charCodeAt(0);
|
|
@@ -53,9 +55,8 @@ const avoidNumber = str => {
|
|
|
53
55
|
* @param {string} request the request
|
|
54
56
|
* @returns {string} id representation
|
|
55
57
|
*/
|
|
56
|
-
const requestToId = request =>
|
|
58
|
+
const requestToId = (request) =>
|
|
57
59
|
request.replace(/^(\.\.?\/)+/, "").replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
|
|
58
|
-
module.exports.requestToId = requestToId;
|
|
59
60
|
|
|
60
61
|
/**
|
|
61
62
|
* @param {string} string the string
|
|
@@ -75,27 +76,27 @@ const shortenLongString = (string, delimiter, hashFunction) => {
|
|
|
75
76
|
/**
|
|
76
77
|
* @param {Module} module the module
|
|
77
78
|
* @param {string} context context directory
|
|
78
|
-
* @param {
|
|
79
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
79
80
|
* @returns {string} short module name
|
|
80
81
|
*/
|
|
81
82
|
const getShortModuleName = (module, context, associatedObjectForCache) => {
|
|
82
83
|
const libIdent = module.libIdent({ context, associatedObjectForCache });
|
|
83
84
|
if (libIdent) return avoidNumber(libIdent);
|
|
84
85
|
const nameForCondition = module.nameForCondition();
|
|
85
|
-
if (nameForCondition)
|
|
86
|
+
if (nameForCondition) {
|
|
86
87
|
return avoidNumber(
|
|
87
88
|
makePathsRelative(context, nameForCondition, associatedObjectForCache)
|
|
88
89
|
);
|
|
90
|
+
}
|
|
89
91
|
return "";
|
|
90
92
|
};
|
|
91
|
-
module.exports.getShortModuleName = getShortModuleName;
|
|
92
93
|
|
|
93
94
|
/**
|
|
94
95
|
* @param {string} shortName the short name
|
|
95
96
|
* @param {Module} module the module
|
|
96
97
|
* @param {string} context context directory
|
|
97
98
|
* @param {string | Hash} hashFunction hash function to use
|
|
98
|
-
* @param {
|
|
99
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
99
100
|
* @returns {string} long module name
|
|
100
101
|
*/
|
|
101
102
|
const getLongModuleName = (
|
|
@@ -108,17 +109,15 @@ const getLongModuleName = (
|
|
|
108
109
|
const fullName = getFullModuleName(module, context, associatedObjectForCache);
|
|
109
110
|
return `${shortName}?${getHash(fullName, 4, hashFunction)}`;
|
|
110
111
|
};
|
|
111
|
-
module.exports.getLongModuleName = getLongModuleName;
|
|
112
112
|
|
|
113
113
|
/**
|
|
114
114
|
* @param {Module} module the module
|
|
115
115
|
* @param {string} context context directory
|
|
116
|
-
* @param {
|
|
116
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
117
117
|
* @returns {string} full module name
|
|
118
118
|
*/
|
|
119
119
|
const getFullModuleName = (module, context, associatedObjectForCache) =>
|
|
120
120
|
makePathsRelative(context, module.identifier(), associatedObjectForCache);
|
|
121
|
-
module.exports.getFullModuleName = getFullModuleName;
|
|
122
121
|
|
|
123
122
|
/**
|
|
124
123
|
* @param {Chunk} chunk the chunk
|
|
@@ -126,7 +125,7 @@ module.exports.getFullModuleName = getFullModuleName;
|
|
|
126
125
|
* @param {string} context context directory
|
|
127
126
|
* @param {string} delimiter delimiter for names
|
|
128
127
|
* @param {string | Hash} hashFunction hash function to use
|
|
129
|
-
* @param {
|
|
128
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
130
129
|
* @returns {string} short chunk name
|
|
131
130
|
*/
|
|
132
131
|
const getShortChunkName = (
|
|
@@ -138,17 +137,15 @@ const getShortChunkName = (
|
|
|
138
137
|
associatedObjectForCache
|
|
139
138
|
) => {
|
|
140
139
|
const modules = chunkGraph.getChunkRootModules(chunk);
|
|
141
|
-
const shortModuleNames = modules.map(m =>
|
|
140
|
+
const shortModuleNames = modules.map((m) =>
|
|
142
141
|
requestToId(getShortModuleName(m, context, associatedObjectForCache))
|
|
143
142
|
);
|
|
144
143
|
chunk.idNameHints.sort();
|
|
145
|
-
const chunkName =
|
|
146
|
-
.concat(shortModuleNames)
|
|
144
|
+
const chunkName = [...chunk.idNameHints, ...shortModuleNames]
|
|
147
145
|
.filter(Boolean)
|
|
148
146
|
.join(delimiter);
|
|
149
147
|
return shortenLongString(chunkName, delimiter, hashFunction);
|
|
150
148
|
};
|
|
151
|
-
module.exports.getShortChunkName = getShortChunkName;
|
|
152
149
|
|
|
153
150
|
/**
|
|
154
151
|
* @param {Chunk} chunk the chunk
|
|
@@ -156,7 +153,7 @@ module.exports.getShortChunkName = getShortChunkName;
|
|
|
156
153
|
* @param {string} context context directory
|
|
157
154
|
* @param {string} delimiter delimiter for names
|
|
158
155
|
* @param {string | Hash} hashFunction hash function to use
|
|
159
|
-
* @param {
|
|
156
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
160
157
|
* @returns {string} short chunk name
|
|
161
158
|
*/
|
|
162
159
|
const getLongChunkName = (
|
|
@@ -168,28 +165,30 @@ const getLongChunkName = (
|
|
|
168
165
|
associatedObjectForCache
|
|
169
166
|
) => {
|
|
170
167
|
const modules = chunkGraph.getChunkRootModules(chunk);
|
|
171
|
-
const shortModuleNames = modules.map(m =>
|
|
168
|
+
const shortModuleNames = modules.map((m) =>
|
|
172
169
|
requestToId(getShortModuleName(m, context, associatedObjectForCache))
|
|
173
170
|
);
|
|
174
|
-
const longModuleNames = modules.map(m =>
|
|
171
|
+
const longModuleNames = modules.map((m) =>
|
|
175
172
|
requestToId(
|
|
176
173
|
getLongModuleName("", m, context, hashFunction, associatedObjectForCache)
|
|
177
174
|
)
|
|
178
175
|
);
|
|
179
176
|
chunk.idNameHints.sort();
|
|
180
|
-
const chunkName =
|
|
181
|
-
.
|
|
177
|
+
const chunkName = [
|
|
178
|
+
...chunk.idNameHints,
|
|
179
|
+
...shortModuleNames,
|
|
180
|
+
...longModuleNames
|
|
181
|
+
]
|
|
182
182
|
.filter(Boolean)
|
|
183
183
|
.join(delimiter);
|
|
184
184
|
return shortenLongString(chunkName, delimiter, hashFunction);
|
|
185
185
|
};
|
|
186
|
-
module.exports.getLongChunkName = getLongChunkName;
|
|
187
186
|
|
|
188
187
|
/**
|
|
189
188
|
* @param {Chunk} chunk the chunk
|
|
190
189
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
191
190
|
* @param {string} context context directory
|
|
192
|
-
* @param {
|
|
191
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
193
192
|
* @returns {string} full chunk name
|
|
194
193
|
*/
|
|
195
194
|
const getFullChunkName = (
|
|
@@ -200,12 +199,11 @@ const getFullChunkName = (
|
|
|
200
199
|
) => {
|
|
201
200
|
if (chunk.name) return chunk.name;
|
|
202
201
|
const modules = chunkGraph.getChunkRootModules(chunk);
|
|
203
|
-
const fullModuleNames = modules.map(m =>
|
|
202
|
+
const fullModuleNames = modules.map((m) =>
|
|
204
203
|
makePathsRelative(context, m.identifier(), associatedObjectForCache)
|
|
205
204
|
);
|
|
206
205
|
return fullModuleNames.join();
|
|
207
206
|
};
|
|
208
|
-
module.exports.getFullChunkName = getFullChunkName;
|
|
209
207
|
|
|
210
208
|
/**
|
|
211
209
|
* @template K
|
|
@@ -224,17 +222,19 @@ const addToMapOfItems = (map, key, value) => {
|
|
|
224
222
|
array.push(value);
|
|
225
223
|
};
|
|
226
224
|
|
|
225
|
+
/** @typedef {Set<string>} UsedModuleIds */
|
|
226
|
+
|
|
227
227
|
/**
|
|
228
228
|
* @param {Compilation} compilation the compilation
|
|
229
|
-
* @param {
|
|
230
|
-
* @returns {[
|
|
229
|
+
* @param {((module: Module) => boolean)=} filter filter modules
|
|
230
|
+
* @returns {[UsedModuleIds, Module[]]} used module ids as strings and modules without id matching the filter
|
|
231
231
|
*/
|
|
232
232
|
const getUsedModuleIdsAndModules = (compilation, filter) => {
|
|
233
233
|
const chunkGraph = compilation.chunkGraph;
|
|
234
234
|
|
|
235
235
|
const modules = [];
|
|
236
236
|
|
|
237
|
-
/** @type {
|
|
237
|
+
/** @type {UsedModuleIds} */
|
|
238
238
|
const usedIds = new Set();
|
|
239
239
|
if (compilation.usedModuleIds) {
|
|
240
240
|
for (const id of compilation.usedModuleIds) {
|
|
@@ -249,7 +249,9 @@ const getUsedModuleIdsAndModules = (compilation, filter) => {
|
|
|
249
249
|
usedIds.add(String(moduleId));
|
|
250
250
|
} else if (
|
|
251
251
|
(!filter || filter(module)) &&
|
|
252
|
-
chunkGraph.getNumberOfModuleChunks(module) !== 0
|
|
252
|
+
(chunkGraph.getNumberOfModuleChunks(module) !== 0 ||
|
|
253
|
+
// CSS modules need IDs even when not in chunks, for generating CSS class names(i.e. [id]-[local])
|
|
254
|
+
/** @type {BuildMeta} */ (module.buildMeta).isCSSModule)
|
|
253
255
|
) {
|
|
254
256
|
modules.push(module);
|
|
255
257
|
}
|
|
@@ -257,14 +259,15 @@ const getUsedModuleIdsAndModules = (compilation, filter) => {
|
|
|
257
259
|
|
|
258
260
|
return [usedIds, modules];
|
|
259
261
|
};
|
|
260
|
-
|
|
262
|
+
|
|
263
|
+
/** @typedef {Set<string>} UsedChunkIds */
|
|
261
264
|
|
|
262
265
|
/**
|
|
263
266
|
* @param {Compilation} compilation the compilation
|
|
264
|
-
* @returns {
|
|
267
|
+
* @returns {UsedChunkIds} used chunk ids as strings
|
|
265
268
|
*/
|
|
266
|
-
const getUsedChunkIds = compilation => {
|
|
267
|
-
/** @type {
|
|
269
|
+
const getUsedChunkIds = (compilation) => {
|
|
270
|
+
/** @type {UsedChunkIds} */
|
|
268
271
|
const usedIds = new Set();
|
|
269
272
|
if (compilation.usedChunkIds) {
|
|
270
273
|
for (const id of compilation.usedChunkIds) {
|
|
@@ -281,16 +284,15 @@ const getUsedChunkIds = compilation => {
|
|
|
281
284
|
|
|
282
285
|
return usedIds;
|
|
283
286
|
};
|
|
284
|
-
module.exports.getUsedChunkIds = getUsedChunkIds;
|
|
285
287
|
|
|
286
288
|
/**
|
|
287
289
|
* @template T
|
|
288
290
|
* @param {Iterable<T>} items list of items to be named
|
|
289
|
-
* @param {
|
|
290
|
-
* @param {
|
|
291
|
-
* @param {
|
|
291
|
+
* @param {(item: T) => string} getShortName get a short name for an item
|
|
292
|
+
* @param {(item: T, name: string) => string} getLongName get a long name for an item
|
|
293
|
+
* @param {(a: T, b: T) => -1 | 0 | 1} comparator order of items
|
|
292
294
|
* @param {Set<string>} usedIds already used ids, will not be assigned
|
|
293
|
-
* @param {
|
|
295
|
+
* @param {(item: T, name: string) => void} assignName assign a name to an item
|
|
294
296
|
* @returns {T[]} list of items without a name
|
|
295
297
|
*/
|
|
296
298
|
const assignNames = (
|
|
@@ -301,7 +303,12 @@ const assignNames = (
|
|
|
301
303
|
usedIds,
|
|
302
304
|
assignName
|
|
303
305
|
) => {
|
|
304
|
-
/**
|
|
306
|
+
/**
|
|
307
|
+
* @template T
|
|
308
|
+
* @typedef {Map<string, T[]>} MapToItem
|
|
309
|
+
*/
|
|
310
|
+
|
|
311
|
+
/** @type {MapToItem<T>} */
|
|
305
312
|
const nameToItems = new Map();
|
|
306
313
|
|
|
307
314
|
for (const item of items) {
|
|
@@ -309,7 +316,7 @@ const assignNames = (
|
|
|
309
316
|
addToMapOfItems(nameToItems, name, item);
|
|
310
317
|
}
|
|
311
318
|
|
|
312
|
-
/** @type {
|
|
319
|
+
/** @type {MapToItem<T>} */
|
|
313
320
|
const nameToItems2 = new Map();
|
|
314
321
|
|
|
315
322
|
for (const [name, items] of nameToItems) {
|
|
@@ -349,14 +356,13 @@ const assignNames = (
|
|
|
349
356
|
unnamedItems.sort(comparator);
|
|
350
357
|
return unnamedItems;
|
|
351
358
|
};
|
|
352
|
-
module.exports.assignNames = assignNames;
|
|
353
359
|
|
|
354
360
|
/**
|
|
355
361
|
* @template T
|
|
356
362
|
* @param {T[]} items list of items to be named
|
|
357
|
-
* @param {
|
|
358
|
-
* @param {
|
|
359
|
-
* @param {
|
|
363
|
+
* @param {(item: T) => string} getName get a name for an item
|
|
364
|
+
* @param {(a: T, n: T) => -1 | 0 | 1} comparator order of items
|
|
365
|
+
* @param {(item: T, id: number) => boolean} assignId assign an id to an item
|
|
360
366
|
* @param {number[]} ranges usable ranges for ids
|
|
361
367
|
* @param {number} expandFactor factor to create more ranges
|
|
362
368
|
* @param {number} extraSpace extra space to allocate, i. e. when some ids are already used
|
|
@@ -403,10 +409,9 @@ const assignDeterministicIds = (
|
|
|
403
409
|
} while (!assignId(item, id));
|
|
404
410
|
}
|
|
405
411
|
};
|
|
406
|
-
module.exports.assignDeterministicIds = assignDeterministicIds;
|
|
407
412
|
|
|
408
413
|
/**
|
|
409
|
-
* @param {
|
|
414
|
+
* @param {UsedModuleIds} usedIds used ids
|
|
410
415
|
* @param {Iterable<Module>} modules the modules
|
|
411
416
|
* @param {Compilation} compilation the compilation
|
|
412
417
|
* @returns {void}
|
|
@@ -420,7 +425,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
|
|
420
425
|
/**
|
|
421
426
|
* @param {Module} module the module
|
|
422
427
|
*/
|
|
423
|
-
assignId = module => {
|
|
428
|
+
assignId = (module) => {
|
|
424
429
|
if (chunkGraph.getModuleId(module) === null) {
|
|
425
430
|
while (usedIds.has(String(nextId))) nextId++;
|
|
426
431
|
chunkGraph.setModuleId(module, nextId++);
|
|
@@ -430,7 +435,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
|
|
430
435
|
/**
|
|
431
436
|
* @param {Module} module the module
|
|
432
437
|
*/
|
|
433
|
-
assignId = module => {
|
|
438
|
+
assignId = (module) => {
|
|
434
439
|
if (chunkGraph.getModuleId(module) === null) {
|
|
435
440
|
chunkGraph.setModuleId(module, nextId++);
|
|
436
441
|
}
|
|
@@ -440,7 +445,6 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
|
|
440
445
|
assignId(module);
|
|
441
446
|
}
|
|
442
447
|
};
|
|
443
|
-
module.exports.assignAscendingModuleIds = assignAscendingModuleIds;
|
|
444
448
|
|
|
445
449
|
/**
|
|
446
450
|
* @param {Iterable<Chunk>} chunks the chunks
|
|
@@ -470,4 +474,17 @@ const assignAscendingChunkIds = (chunks, compilation) => {
|
|
|
470
474
|
}
|
|
471
475
|
}
|
|
472
476
|
};
|
|
477
|
+
|
|
473
478
|
module.exports.assignAscendingChunkIds = assignAscendingChunkIds;
|
|
479
|
+
module.exports.assignAscendingModuleIds = assignAscendingModuleIds;
|
|
480
|
+
module.exports.assignDeterministicIds = assignDeterministicIds;
|
|
481
|
+
module.exports.assignNames = assignNames;
|
|
482
|
+
module.exports.getFullChunkName = getFullChunkName;
|
|
483
|
+
module.exports.getFullModuleName = getFullModuleName;
|
|
484
|
+
module.exports.getLongChunkName = getLongChunkName;
|
|
485
|
+
module.exports.getLongModuleName = getLongModuleName;
|
|
486
|
+
module.exports.getShortChunkName = getShortChunkName;
|
|
487
|
+
module.exports.getShortModuleName = getShortModuleName;
|
|
488
|
+
module.exports.getUsedChunkIds = getUsedChunkIds;
|
|
489
|
+
module.exports.getUsedModuleIdsAndModules = getUsedModuleIdsAndModules;
|
|
490
|
+
module.exports.requestToId = requestToId;
|
|
@@ -7,24 +7,23 @@
|
|
|
7
7
|
|
|
8
8
|
const { compareChunksNatural } = require("../util/comparators");
|
|
9
9
|
const {
|
|
10
|
-
|
|
11
|
-
getLongChunkName,
|
|
10
|
+
assignAscendingChunkIds,
|
|
12
11
|
assignNames,
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
getLongChunkName,
|
|
13
|
+
getShortChunkName,
|
|
14
|
+
getUsedChunkIds
|
|
15
15
|
} = require("./IdHelpers");
|
|
16
16
|
|
|
17
|
-
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
|
|
18
|
-
/** @typedef {import("../Chunk")} Chunk */
|
|
19
17
|
/** @typedef {import("../Compiler")} Compiler */
|
|
20
|
-
/** @typedef {import("../Module")} Module */
|
|
21
18
|
|
|
22
19
|
/**
|
|
23
20
|
* @typedef {object} NamedChunkIdsPluginOptions
|
|
24
|
-
* @property {string}
|
|
25
|
-
* @property {string}
|
|
21
|
+
* @property {string=} context context
|
|
22
|
+
* @property {string=} delimiter delimiter
|
|
26
23
|
*/
|
|
27
24
|
|
|
25
|
+
const PLUGIN_NAME = "NamedChunkIdsPlugin";
|
|
26
|
+
|
|
28
27
|
class NamedChunkIdsPlugin {
|
|
29
28
|
/**
|
|
30
29
|
* @param {NamedChunkIdsPluginOptions=} options options
|
|
@@ -40,24 +39,22 @@ class NamedChunkIdsPlugin {
|
|
|
40
39
|
* @returns {void}
|
|
41
40
|
*/
|
|
42
41
|
apply(compiler) {
|
|
43
|
-
compiler.hooks.compilation.tap(
|
|
44
|
-
const hashFunction =
|
|
45
|
-
|
|
46
|
-
(compilation.outputOptions.hashFunction);
|
|
47
|
-
compilation.hooks.chunkIds.tap("NamedChunkIdsPlugin", chunks => {
|
|
42
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
43
|
+
const hashFunction = compilation.outputOptions.hashFunction;
|
|
44
|
+
compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
|
|
48
45
|
const chunkGraph = compilation.chunkGraph;
|
|
49
46
|
const context = this.context ? this.context : compiler.context;
|
|
50
47
|
const delimiter = this.delimiter;
|
|
51
48
|
|
|
52
49
|
const unnamedChunks = assignNames(
|
|
53
|
-
|
|
50
|
+
[...chunks].filter((chunk) => {
|
|
54
51
|
if (chunk.name) {
|
|
55
52
|
chunk.id = chunk.name;
|
|
56
53
|
chunk.ids = [chunk.name];
|
|
57
54
|
}
|
|
58
55
|
return chunk.id === null;
|
|
59
56
|
}),
|
|
60
|
-
chunk =>
|
|
57
|
+
(chunk) =>
|
|
61
58
|
getShortChunkName(
|
|
62
59
|
chunk,
|
|
63
60
|
chunkGraph,
|
|
@@ -66,7 +63,7 @@ class NamedChunkIdsPlugin {
|
|
|
66
63
|
hashFunction,
|
|
67
64
|
compiler.root
|
|
68
65
|
),
|
|
69
|
-
chunk =>
|
|
66
|
+
(chunk) =>
|
|
70
67
|
getLongChunkName(
|
|
71
68
|
chunk,
|
|
72
69
|
chunkGraph,
|