webpack 5.110.3 → 5.111.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 +5 -0
- package/lib/APIPlugin.js +23 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/Compilation.js +320 -302
- package/lib/Compiler.js +209 -46
- package/lib/ContextModule.js +17 -81
- package/lib/ContextModuleFactory.js +1 -1
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/ExternalModule.js +41 -14
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +45 -21
- package/lib/HotModuleReplacementPlugin.js +53 -7
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +16 -7
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +45 -12
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +30 -3
- package/lib/RuntimeTemplate.js +780 -475
- package/lib/SourceMapDevToolPlugin.js +1 -1
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetGenerator.js +25 -8
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +14 -1
- package/lib/config/browserslistTargetHandler.js +19 -0
- package/lib/config/defaults.js +86 -50
- package/lib/config/normalization.js +82 -12
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/css/CssGenerator.js +8 -0
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +94 -36
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +7 -6
- package/lib/css/CssParser.js +144 -11
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +11 -3
- package/lib/css/data.js +2814 -678
- package/lib/css/syntax.js +4082 -248
- package/lib/debug/ProfilingPlugin.js +4 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +3 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -0
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +14 -5
- package/lib/dependencies/CssIcssExportDependency.js +7 -1
- package/lib/dependencies/HarmonyCompatibilityDependency.js +58 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -3
- package/lib/dependencies/HarmonyExportExpressionDependency.js +44 -29
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +71 -13
- package/lib/dependencies/HarmonyExportInitFragment.js +99 -19
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +18 -30
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +6 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +8 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +24 -1
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +50 -0
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +59 -15
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/WorkerDependency.js +1 -2
- package/lib/dependencies/WorkletDependency.js +1 -2
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +30 -11
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/html/HtmlGenerator.js +11 -5
- package/lib/html/HtmlModulesPlugin.js +331 -62
- package/lib/html/HtmlParser.js +13 -6
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +121 -7
- package/lib/html/htmlMinify.js +84 -113
- package/lib/html/syntax.js +763 -426
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +3 -0
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +52 -24
- package/lib/javascript/JavascriptParser.js +1255 -728
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1494 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +8696 -5225
- package/lib/library/ModuleLibraryPlugin.js +116 -5
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/ConcatenatedModule.js +97 -20
- package/lib/optimize/ConstExportsPlugin.js +50 -39
- package/lib/optimize/InlineExports.js +20 -123
- package/lib/optimize/MangleExportsPlugin.js +10 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +24 -1
- package/lib/optimize/RealContentHashPlugin.js +68 -9
- package/lib/optimize/SideEffectsFlagPlugin.js +17 -9
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/CacheEffectivenessPlugin.js +4 -3
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +2 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +1 -2
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +9 -0
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +100 -66
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +9 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +330 -219
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/serialization/ObjectMiddleware.js +138 -106
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +3 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/util/SourceProcessor.js +76 -69
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/fs.js +27 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +4 -0
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +22 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +379 -66
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1414 -314
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -10,6 +10,7 @@ const {
|
|
|
10
10
|
compareModulesByPreOrderIndexOrIdentifier
|
|
11
11
|
} = require("../util/comparators");
|
|
12
12
|
const createHash = require("../util/createHash");
|
|
13
|
+
const { fileUrlToPath } = require("../util/identifier");
|
|
13
14
|
const {
|
|
14
15
|
getFullModuleName,
|
|
15
16
|
getUsedModuleIdsAndModules
|
|
@@ -58,7 +59,7 @@ class HashedModuleIdsPlugin {
|
|
|
58
59
|
compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
|
|
59
60
|
const chunkGraph = compilation.chunkGraph;
|
|
60
61
|
const context = this.options.context
|
|
61
|
-
? this.options.context
|
|
62
|
+
? fileUrlToPath(this.options.context)
|
|
62
63
|
: compiler.context;
|
|
63
64
|
|
|
64
65
|
const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
|
package/lib/index.js
CHANGED
|
@@ -242,6 +242,9 @@ module.exports = mergeExports(fn, {
|
|
|
242
242
|
get ContextReplacementPlugin() {
|
|
243
243
|
return require("./ContextReplacementPlugin");
|
|
244
244
|
},
|
|
245
|
+
get CopyPlugin() {
|
|
246
|
+
return require("./CopyPlugin");
|
|
247
|
+
},
|
|
245
248
|
get DefinePlugin() {
|
|
246
249
|
return require("./DefinePlugin");
|
|
247
250
|
},
|
|
@@ -19,6 +19,7 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
19
19
|
* Defines the build info properties specific to javascript modules.
|
|
20
20
|
* @typedef {object} KnownJavascriptModuleBuildInfo
|
|
21
21
|
* @property {string=} moduleConcatenationBailout using in CommonJs
|
|
22
|
+
* @property {string=} moduleConcatenationRootBailout what rules the module out as a concatenation root, while it may still be an inner module
|
|
22
23
|
* @property {boolean=} needCreateRequire using in APIPlugin
|
|
23
24
|
* @property {boolean=} usingPublicPathOverride module reassigns `__webpack_public_path__` at runtime, using in APIPlugin
|
|
24
25
|
* @property {Set<string>=} pureFunctions names of locally declared functions known to be free of side effects
|
|
@@ -57,27 +57,12 @@ const JavascriptGenerator = require("./JavascriptGenerator");
|
|
|
57
57
|
const JavascriptModule = require("./JavascriptModule");
|
|
58
58
|
const JavascriptParser = require("./JavascriptParser");
|
|
59
59
|
const analyzeScope = require("./ScopeAnalyzer");
|
|
60
|
+
const { renderAwaitedEntries } = require("./StartupHelpers");
|
|
61
|
+
const { releaseParserCaches } = require("./syntax");
|
|
60
62
|
|
|
61
63
|
/**
|
|
62
64
|
* @import {
|
|
63
|
-
* Program
|
|
64
|
-
* Node,
|
|
65
|
-
* Identifier,
|
|
66
|
-
* CatchClause,
|
|
67
|
-
* ClassDeclaration,
|
|
68
|
-
* ClassExpression,
|
|
69
|
-
* FunctionDeclaration,
|
|
70
|
-
* FunctionExpression,
|
|
71
|
-
* ArrowFunctionExpression,
|
|
72
|
-
* VariableDeclarator,
|
|
73
|
-
* VariableDeclaration,
|
|
74
|
-
* ImportDeclaration,
|
|
75
|
-
* ImportSpecifier,
|
|
76
|
-
* ImportDefaultSpecifier,
|
|
77
|
-
* ImportNamespaceSpecifier,
|
|
78
|
-
* AssignmentExpression,
|
|
79
|
-
* ForInStatement,
|
|
80
|
-
* ForOfStatement
|
|
65
|
+
* Program
|
|
81
66
|
* } from "estree"
|
|
82
67
|
*/
|
|
83
68
|
/** @import { Source } from "webpack-sources" */
|
|
@@ -470,6 +455,10 @@ class JavascriptModulesPlugin {
|
|
|
470
455
|
* @returns {void}
|
|
471
456
|
*/
|
|
472
457
|
apply(compiler) {
|
|
458
|
+
// the parser's shared string caches only pay off while modules parse —
|
|
459
|
+
// drop them when the build ends so an idle process retains no parser state
|
|
460
|
+
compiler.hooks.done.tap(PLUGIN_NAME, releaseParserCaches);
|
|
461
|
+
compiler.hooks.failed.tap(PLUGIN_NAME, releaseParserCaches);
|
|
473
462
|
compiler.hooks.compilation.tap(
|
|
474
463
|
PLUGIN_NAME,
|
|
475
464
|
(compilation, { normalModuleFactory }) => {
|
|
@@ -1680,8 +1669,27 @@ class JavascriptModulesPlugin {
|
|
|
1680
1669
|
continue;
|
|
1681
1670
|
}
|
|
1682
1671
|
}
|
|
1683
|
-
|
|
1684
|
-
|
|
1672
|
+
const entryOptions = chunk.getEntryOptions();
|
|
1673
|
+
const library =
|
|
1674
|
+
entryOptions && entryOptions.library !== undefined
|
|
1675
|
+
? entryOptions.library
|
|
1676
|
+
: runtimeTemplate.outputOptions.library;
|
|
1677
|
+
// A module library awaits the entry itself, in `ModuleLibraryPlugin`.
|
|
1678
|
+
const awaitedByLibrary =
|
|
1679
|
+
library !== undefined && library.type === "module";
|
|
1680
|
+
// `await` is legal only at an ESM chunk's top level, never in the
|
|
1681
|
+
// startup function below, and only where the target parses it.
|
|
1682
|
+
const canAwaitEntry =
|
|
1683
|
+
runtimeTemplate.isModule() &&
|
|
1684
|
+
runtimeTemplate.supportsTopLevelAwait() &&
|
|
1685
|
+
!awaitedByLibrary &&
|
|
1686
|
+
!runtimeRequirements.has(RuntimeGlobals.startup) &&
|
|
1687
|
+
!(
|
|
1688
|
+
runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
1689
|
+
runtimeRequirements.has(RuntimeGlobals.startupOnlyAfter)
|
|
1690
|
+
);
|
|
1691
|
+
/** @type {string[]} */
|
|
1692
|
+
const awaitedEntries = [];
|
|
1685
1693
|
let i = jsEntries.length;
|
|
1686
1694
|
for (const [entryModule, entrypoint] of jsEntries) {
|
|
1687
1695
|
const chunks =
|
|
@@ -1798,21 +1806,40 @@ class JavascriptModulesPlugin {
|
|
|
1798
1806
|
// reassignment is allowed.
|
|
1799
1807
|
const exportsDecl = runtimeTemplate.renderLet();
|
|
1800
1808
|
if (chunks.length > 0) {
|
|
1809
|
+
const awaitEntry =
|
|
1810
|
+
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1811
|
+
const target =
|
|
1812
|
+
i === 0
|
|
1813
|
+
? RuntimeGlobals.exports
|
|
1814
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1815
|
+
// The wrapper hands back nothing until the flush below runs the
|
|
1816
|
+
// entry, so an awaited one is caught by the entry call itself.
|
|
1817
|
+
if (awaitEntry && i !== 0) buf2.push(`${exportsDecl} ${target};`);
|
|
1818
|
+
const entryCall = `${RuntimeGlobals.require}(${moduleIdExpr})`;
|
|
1801
1819
|
buf2.push(
|
|
1802
1820
|
`${i === 0 ? `${exportsDecl} ${RuntimeGlobals.exports} = ` : ""}${
|
|
1803
1821
|
RuntimeGlobals.onChunksLoaded
|
|
1804
1822
|
}(undefined, ${JSON.stringify(
|
|
1805
1823
|
chunks.map((c) => c.id)
|
|
1806
1824
|
)}, ${runtimeTemplate.returningFunction(
|
|
1807
|
-
|
|
1825
|
+
awaitEntry ? `(${target} = ${entryCall})` : entryCall
|
|
1808
1826
|
)})`
|
|
1809
1827
|
);
|
|
1828
|
+
if (awaitEntry) awaitedEntries.push(target);
|
|
1810
1829
|
} else if (useRequire) {
|
|
1830
|
+
// An async entry nobody awaits settles after the bundle did,
|
|
1831
|
+
// which orphans its rejection.
|
|
1832
|
+
const awaitEntry =
|
|
1833
|
+
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1834
|
+
const target =
|
|
1835
|
+
i === 0
|
|
1836
|
+
? RuntimeGlobals.exports
|
|
1837
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1838
|
+
const needsDecl = i === 0 || awaitEntry;
|
|
1811
1839
|
buf2.push(
|
|
1812
|
-
`${
|
|
1813
|
-
RuntimeGlobals.require
|
|
1814
|
-
}(${moduleIdExpr});`
|
|
1840
|
+
`${needsDecl ? `${exportsDecl} ${target} = ` : ""}${RuntimeGlobals.require}(${moduleIdExpr});`
|
|
1815
1841
|
);
|
|
1842
|
+
if (awaitEntry) awaitedEntries.push(target);
|
|
1816
1843
|
} else {
|
|
1817
1844
|
if (i === 0) {
|
|
1818
1845
|
buf2.push(`${exportsDecl} ${RuntimeGlobals.exports} = {};`);
|
|
@@ -1855,6 +1882,7 @@ class JavascriptModulesPlugin {
|
|
|
1855
1882
|
`${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
|
|
1856
1883
|
);
|
|
1857
1884
|
}
|
|
1885
|
+
buf2.push(...renderAwaitedEntries(awaitedEntries));
|
|
1858
1886
|
if (
|
|
1859
1887
|
runtimeRequirements.has(RuntimeGlobals.startup) ||
|
|
1860
1888
|
(runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|