webpack 5.92.1 → 5.94.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 +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- 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 +5 -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 +104 -64
- 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 +132 -70
- 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 +12 -10
- package/lib/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -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 +14 -19
- 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 +31 -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 +39 -40
- package/lib/css/CssGenerator.js +11 -14
- 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 +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- 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 +41 -16
- 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 +11 -12
- 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 +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- 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 +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- 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 +144 -61
- 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/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -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/ChunkPrefetchPreloadPlugin.js +1 -0
- 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/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- 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 +1 -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 +10 -13
- 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 +31 -31
- 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 +103 -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 +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- 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 +682 -347
package/lib/WatchIgnorePlugin.js
CHANGED
@@ -9,9 +9,12 @@ const { groupBy } = require("./util/ArrayHelpers");
|
|
9
9
|
const createSchemaValidation = require("./util/create-schema-validation");
|
10
10
|
|
11
11
|
/** @typedef {import("../declarations/plugins/WatchIgnorePlugin").WatchIgnorePluginOptions} WatchIgnorePluginOptions */
|
12
|
+
/** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
|
12
13
|
/** @typedef {import("./Compiler")} Compiler */
|
14
|
+
/** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
|
13
15
|
/** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
|
14
|
-
|
16
|
+
/** @typedef {import("./util/fs").WatchMethod} WatchMethod */
|
17
|
+
/** @typedef {import("./util/fs").Watcher} Watcher */
|
15
18
|
const validate = createSchemaValidation(
|
16
19
|
require("../schemas/plugins/WatchIgnorePlugin.check.js"),
|
17
20
|
() => require("../schemas/plugins/WatchIgnorePlugin.json"),
|
@@ -26,13 +29,14 @@ const IGNORE_TIME_ENTRY = "ignore";
|
|
26
29
|
class IgnoringWatchFileSystem {
|
27
30
|
/**
|
28
31
|
* @param {WatchFileSystem} wfs original file system
|
29
|
-
* @param {
|
32
|
+
* @param {WatchIgnorePluginOptions["paths"]} paths ignored paths
|
30
33
|
*/
|
31
34
|
constructor(wfs, paths) {
|
32
35
|
this.wfs = wfs;
|
33
36
|
this.paths = paths;
|
34
37
|
}
|
35
38
|
|
39
|
+
/** @type {WatchMethod} */
|
36
40
|
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
37
41
|
files = Array.from(files);
|
38
42
|
dirs = Array.from(dirs);
|
@@ -45,8 +49,16 @@ class IgnoringWatchFileSystem {
|
|
45
49
|
p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0
|
46
50
|
);
|
47
51
|
|
48
|
-
const [ignoredFiles, notIgnoredFiles] = groupBy(
|
49
|
-
|
52
|
+
const [ignoredFiles, notIgnoredFiles] = groupBy(
|
53
|
+
/** @type {Array<string>} */
|
54
|
+
(files),
|
55
|
+
ignored
|
56
|
+
);
|
57
|
+
const [ignoredDirs, notIgnoredDirs] = groupBy(
|
58
|
+
/** @type {Array<string>} */
|
59
|
+
(dirs),
|
60
|
+
ignored
|
61
|
+
);
|
50
62
|
|
51
63
|
const watcher = this.wfs.watch(
|
52
64
|
notIgnoredFiles,
|
@@ -57,15 +69,17 @@ class IgnoringWatchFileSystem {
|
|
57
69
|
(err, fileTimestamps, dirTimestamps, changedFiles, removedFiles) => {
|
58
70
|
if (err) return callback(err);
|
59
71
|
for (const path of ignoredFiles) {
|
60
|
-
|
72
|
+
/** @type {TimeInfoEntries} */
|
73
|
+
(fileTimestamps).set(path, IGNORE_TIME_ENTRY);
|
61
74
|
}
|
62
75
|
|
63
76
|
for (const path of ignoredDirs) {
|
64
|
-
|
77
|
+
/** @type {TimeInfoEntries} */
|
78
|
+
(dirTimestamps).set(path, IGNORE_TIME_ENTRY);
|
65
79
|
}
|
66
80
|
|
67
81
|
callback(
|
68
|
-
|
82
|
+
null,
|
69
83
|
fileTimestamps,
|
70
84
|
dirTimestamps,
|
71
85
|
changedFiles,
|
@@ -95,7 +109,9 @@ class IgnoringWatchFileSystem {
|
|
95
109
|
getInfo:
|
96
110
|
watcher.getInfo &&
|
97
111
|
(() => {
|
98
|
-
const info =
|
112
|
+
const info =
|
113
|
+
/** @type {NonNullable<Watcher["getInfo"]>} */
|
114
|
+
(watcher.getInfo)();
|
99
115
|
const { fileTimeInfoEntries, contextTimeInfoEntries } = info;
|
100
116
|
for (const path of ignoredFiles) {
|
101
117
|
fileTimeInfoEntries.set(path, IGNORE_TIME_ENTRY);
|
@@ -126,7 +142,8 @@ class WatchIgnorePlugin {
|
|
126
142
|
apply(compiler) {
|
127
143
|
compiler.hooks.afterEnvironment.tap("WatchIgnorePlugin", () => {
|
128
144
|
compiler.watchFileSystem = new IgnoringWatchFileSystem(
|
129
|
-
|
145
|
+
/** @type {WatchFileSystem} */
|
146
|
+
(compiler.watchFileSystem),
|
130
147
|
this.paths
|
131
148
|
);
|
132
149
|
});
|
package/lib/Watching.js
CHANGED
@@ -13,7 +13,9 @@ const Stats = require("./Stats");
|
|
13
13
|
/** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
|
14
14
|
/** @typedef {import("./WebpackError")} WebpackError */
|
15
15
|
/** @typedef {import("./logging/Logger").Logger} Logger */
|
16
|
+
/** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
|
16
17
|
/** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
|
18
|
+
/** @typedef {import("./util/fs").Watcher} Watcher */
|
17
19
|
|
18
20
|
/**
|
19
21
|
* @template T
|
@@ -43,12 +45,15 @@ class Watching {
|
|
43
45
|
this._onChange = () => {};
|
44
46
|
this._onInvalid = () => {};
|
45
47
|
if (typeof watchOptions === "number") {
|
48
|
+
/** @type {WatchOptions} */
|
46
49
|
this.watchOptions = {
|
47
50
|
aggregateTimeout: watchOptions
|
48
51
|
};
|
49
52
|
} else if (watchOptions && typeof watchOptions === "object") {
|
53
|
+
/** @type {WatchOptions} */
|
50
54
|
this.watchOptions = { ...watchOptions };
|
51
55
|
} else {
|
56
|
+
/** @type {WatchOptions} */
|
52
57
|
this.watchOptions = {};
|
53
58
|
}
|
54
59
|
if (typeof this.watchOptions.aggregateTimeout !== "number") {
|
@@ -95,8 +100,8 @@ class Watching {
|
|
95
100
|
}
|
96
101
|
|
97
102
|
/**
|
98
|
-
* @param {
|
99
|
-
* @param {
|
103
|
+
* @param {TimeInfoEntries=} fileTimeInfoEntries info for files
|
104
|
+
* @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
|
100
105
|
* @param {ReadonlySet<string>=} changedFiles changed files
|
101
106
|
* @param {ReadonlySet<string>=} removedFiles removed files
|
102
107
|
* @returns {void}
|
@@ -255,7 +260,7 @@ class Watching {
|
|
255
260
|
(compilation && compilation.getLogger("webpack.Watching"));
|
256
261
|
|
257
262
|
/** @type {Stats | undefined} */
|
258
|
-
let stats
|
263
|
+
let stats;
|
259
264
|
|
260
265
|
/**
|
261
266
|
* @param {Error} err error
|
@@ -406,8 +411,8 @@ class Watching {
|
|
406
411
|
}
|
407
412
|
|
408
413
|
/**
|
409
|
-
* @param {
|
410
|
-
* @param {
|
414
|
+
* @param {TimeInfoEntries=} fileTimeInfoEntries info for files
|
415
|
+
* @param {TimeInfoEntries=} contextTimeInfoEntries info for directories
|
411
416
|
* @param {ReadonlySet<string>=} changedFiles changed files
|
412
417
|
* @param {ReadonlySet<string>=} removedFiles removed files
|
413
418
|
* @returns {void}
|
@@ -71,13 +71,13 @@ class WebpackOptionsApply extends OptionsApply {
|
|
71
71
|
* @returns {WebpackOptions} options object
|
72
72
|
*/
|
73
73
|
process(options, compiler) {
|
74
|
-
compiler.outputPath = options.output.path;
|
74
|
+
compiler.outputPath = /** @type {string} */ (options.output.path);
|
75
75
|
compiler.recordsInputPath = options.recordsInputPath || null;
|
76
76
|
compiler.recordsOutputPath = options.recordsOutputPath || null;
|
77
77
|
compiler.name = options.name;
|
78
78
|
|
79
79
|
if (options.externals) {
|
80
|
-
|
80
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
81
81
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
82
82
|
new ExternalsPlugin(options.externalsType, options.externals).apply(
|
83
83
|
compiler
|
@@ -89,17 +89,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
89
89
|
new NodeTargetPlugin().apply(compiler);
|
90
90
|
}
|
91
91
|
if (options.externalsPresets.electronMain) {
|
92
|
-
|
92
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
93
93
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
94
94
|
new ElectronTargetPlugin("main").apply(compiler);
|
95
95
|
}
|
96
96
|
if (options.externalsPresets.electronPreload) {
|
97
|
-
|
97
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
98
98
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
99
99
|
new ElectronTargetPlugin("preload").apply(compiler);
|
100
100
|
}
|
101
101
|
if (options.externalsPresets.electronRenderer) {
|
102
|
-
|
102
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
103
103
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
104
104
|
new ElectronTargetPlugin("renderer").apply(compiler);
|
105
105
|
}
|
@@ -109,17 +109,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
109
109
|
!options.externalsPresets.electronPreload &&
|
110
110
|
!options.externalsPresets.electronRenderer
|
111
111
|
) {
|
112
|
-
|
112
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
113
113
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
114
114
|
new ElectronTargetPlugin().apply(compiler);
|
115
115
|
}
|
116
116
|
if (options.externalsPresets.nwjs) {
|
117
|
-
|
117
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
118
118
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
119
119
|
new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
|
120
120
|
}
|
121
121
|
if (options.externalsPresets.webAsync) {
|
122
|
-
|
122
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
123
123
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
124
124
|
new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
|
125
125
|
if (dependencyType === "url") {
|
@@ -139,7 +139,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
139
139
|
callback();
|
140
140
|
}).apply(compiler);
|
141
141
|
} else if (options.externalsPresets.web) {
|
142
|
-
|
142
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
143
143
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
144
144
|
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
145
145
|
if (dependencyType === "url") {
|
@@ -155,28 +155,23 @@ class WebpackOptionsApply extends OptionsApply {
|
|
155
155
|
}
|
156
156
|
callback();
|
157
157
|
}).apply(compiler);
|
158
|
-
} else if (options.externalsPresets.node) {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
}
|
176
|
-
callback();
|
177
|
-
}
|
178
|
-
).apply(compiler);
|
179
|
-
}
|
158
|
+
} else if (options.externalsPresets.node && options.experiments.css) {
|
159
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
160
|
+
const ExternalsPlugin = require("./ExternalsPlugin");
|
161
|
+
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
162
|
+
if (dependencyType === "url") {
|
163
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
164
|
+
return callback(null, `asset ${request}`);
|
165
|
+
} else if (dependencyType === "css-import") {
|
166
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
167
|
+
return callback(null, `css-import ${request}`);
|
168
|
+
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
169
|
+
if (/^\.css(\?|$)/.test(request))
|
170
|
+
return callback(null, `css-import ${request}`);
|
171
|
+
return callback(null, `module ${request}`);
|
172
|
+
}
|
173
|
+
callback();
|
174
|
+
}).apply(compiler);
|
180
175
|
}
|
181
176
|
|
182
177
|
new ChunkPrefetchPreloadPlugin().apply(compiler);
|
@@ -200,27 +195,39 @@ class WebpackOptionsApply extends OptionsApply {
|
|
200
195
|
}
|
201
196
|
default:
|
202
197
|
throw new Error(
|
203
|
-
|
198
|
+
`Unsupported chunk format '${options.output.chunkFormat}'.`
|
204
199
|
);
|
205
200
|
}
|
206
201
|
}
|
207
202
|
|
208
|
-
|
209
|
-
|
203
|
+
const enabledChunkLoadingTypes =
|
204
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledChunkLoadingTypes"]>} */
|
205
|
+
(options.output.enabledChunkLoadingTypes);
|
206
|
+
|
207
|
+
if (enabledChunkLoadingTypes.length > 0) {
|
208
|
+
for (const type of enabledChunkLoadingTypes) {
|
210
209
|
const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
|
211
210
|
new EnableChunkLoadingPlugin(type).apply(compiler);
|
212
211
|
}
|
213
212
|
}
|
214
213
|
|
215
|
-
|
216
|
-
|
214
|
+
const enabledWasmLoadingTypes =
|
215
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledWasmLoadingTypes"]>} */
|
216
|
+
(options.output.enabledWasmLoadingTypes);
|
217
|
+
|
218
|
+
if (enabledWasmLoadingTypes.length > 0) {
|
219
|
+
for (const type of enabledWasmLoadingTypes) {
|
217
220
|
const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
|
218
221
|
new EnableWasmLoadingPlugin(type).apply(compiler);
|
219
222
|
}
|
220
223
|
}
|
221
224
|
|
222
|
-
|
223
|
-
|
225
|
+
const enabledLibraryTypes =
|
226
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledLibraryTypes"]>} */
|
227
|
+
(options.output.enabledLibraryTypes);
|
228
|
+
|
229
|
+
if (enabledLibraryTypes.length > 0) {
|
230
|
+
for (const type of enabledLibraryTypes) {
|
224
231
|
const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
|
225
232
|
new EnableLibraryPlugin(type).apply(compiler);
|
226
233
|
}
|
@@ -257,9 +264,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
257
264
|
fallbackModuleFilenameTemplate:
|
258
265
|
options.output.devtoolFallbackModuleFilenameTemplate,
|
259
266
|
append: hidden ? false : undefined,
|
260
|
-
module: moduleMaps ? true : cheap
|
261
|
-
columns: cheap
|
262
|
-
noSources
|
267
|
+
module: moduleMaps ? true : !cheap,
|
268
|
+
columns: !cheap,
|
269
|
+
noSources,
|
263
270
|
namespace: options.output.devtoolNamespace
|
264
271
|
}).apply(compiler);
|
265
272
|
} else if (options.devtool.includes("eval")) {
|
@@ -286,7 +293,15 @@ class WebpackOptionsApply extends OptionsApply {
|
|
286
293
|
"library type \"module\" is only allowed when 'experiments.outputModule' is enabled"
|
287
294
|
);
|
288
295
|
}
|
289
|
-
if (options.
|
296
|
+
if (options.output.enabledLibraryTypes.includes("modern-module")) {
|
297
|
+
throw new Error(
|
298
|
+
"library type \"modern-module\" is only allowed when 'experiments.outputModule' is enabled"
|
299
|
+
);
|
300
|
+
}
|
301
|
+
if (
|
302
|
+
options.externalsType === "module" ||
|
303
|
+
options.externalsType === "module-import"
|
304
|
+
) {
|
290
305
|
throw new Error(
|
291
306
|
"'externalsType: \"module\"' is only allowed when 'experiments.outputModule' is enabled"
|
292
307
|
);
|
@@ -317,7 +332,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
317
332
|
const lazyOptions =
|
318
333
|
typeof options.experiments.lazyCompilation === "object"
|
319
334
|
? options.experiments.lazyCompilation
|
320
|
-
:
|
335
|
+
: {};
|
321
336
|
new LazyCompilationPlugin({
|
322
337
|
backend:
|
323
338
|
typeof lazyOptions.backend === "function"
|
@@ -345,7 +360,11 @@ class WebpackOptionsApply extends OptionsApply {
|
|
345
360
|
}
|
346
361
|
|
347
362
|
new EntryOptionPlugin().apply(compiler);
|
348
|
-
compiler.hooks.entryOption.call(
|
363
|
+
compiler.hooks.entryOption.call(
|
364
|
+
/** @type {string} */
|
365
|
+
(options.context),
|
366
|
+
options.entry
|
367
|
+
);
|
349
368
|
|
350
369
|
new RuntimePlugin().apply(compiler);
|
351
370
|
|
@@ -540,7 +559,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
540
559
|
break;
|
541
560
|
}
|
542
561
|
case "size": {
|
543
|
-
|
562
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
544
563
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
545
564
|
new OccurrenceChunkIdsPlugin({
|
546
565
|
prioritiseInitial: true
|
@@ -548,7 +567,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
548
567
|
break;
|
549
568
|
}
|
550
569
|
case "total-size": {
|
551
|
-
|
570
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
552
571
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
553
572
|
new OccurrenceChunkIdsPlugin({
|
554
573
|
prioritiseInitial: false
|
@@ -592,23 +611,28 @@ class WebpackOptionsApply extends OptionsApply {
|
|
592
611
|
|
593
612
|
const AddManagedPathsPlugin = require("./cache/AddManagedPathsPlugin");
|
594
613
|
new AddManagedPathsPlugin(
|
595
|
-
|
596
|
-
options.snapshot.
|
597
|
-
|
614
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
615
|
+
(options.snapshot.managedPaths),
|
616
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
617
|
+
(options.snapshot.immutablePaths),
|
618
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
619
|
+
(options.snapshot.unmanagedPaths)
|
598
620
|
).apply(compiler);
|
599
621
|
|
600
622
|
if (options.cache && typeof options.cache === "object") {
|
601
623
|
const cacheOptions = options.cache;
|
602
624
|
switch (cacheOptions.type) {
|
603
625
|
case "memory": {
|
604
|
-
if (isFinite(cacheOptions.maxGenerations)) {
|
605
|
-
|
626
|
+
if (Number.isFinite(cacheOptions.maxGenerations)) {
|
627
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
606
628
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
607
629
|
new MemoryWithGcCachePlugin({
|
608
|
-
maxGenerations:
|
630
|
+
maxGenerations:
|
631
|
+
/** @type {number} */
|
632
|
+
(cacheOptions.maxGenerations)
|
609
633
|
}).apply(compiler);
|
610
634
|
} else {
|
611
|
-
|
635
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
612
636
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
613
637
|
new MemoryCachePlugin().apply(compiler);
|
614
638
|
}
|
@@ -624,16 +648,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
624
648
|
}
|
625
649
|
case "filesystem": {
|
626
650
|
const AddBuildDependenciesPlugin = require("./cache/AddBuildDependenciesPlugin");
|
651
|
+
// eslint-disable-next-line guard-for-in
|
627
652
|
for (const key in cacheOptions.buildDependencies) {
|
628
653
|
const list = cacheOptions.buildDependencies[key];
|
629
654
|
new AddBuildDependenciesPlugin(list).apply(compiler);
|
630
655
|
}
|
631
|
-
if (!isFinite(cacheOptions.maxMemoryGenerations)) {
|
632
|
-
|
656
|
+
if (!Number.isFinite(cacheOptions.maxMemoryGenerations)) {
|
657
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
633
658
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
634
659
|
new MemoryCachePlugin().apply(compiler);
|
635
660
|
} else if (cacheOptions.maxMemoryGenerations !== 0) {
|
636
|
-
|
661
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
637
662
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
638
663
|
new MemoryWithGcCachePlugin({
|
639
664
|
maxGenerations: cacheOptions.maxMemoryGenerations
|
@@ -654,17 +679,19 @@ class WebpackOptionsApply extends OptionsApply {
|
|
654
679
|
new IdleFileCachePlugin(
|
655
680
|
new PackFileCacheStrategy({
|
656
681
|
compiler,
|
657
|
-
fs:
|
658
|
-
|
659
|
-
|
660
|
-
context: options.context,
|
661
|
-
cacheLocation:
|
682
|
+
fs:
|
683
|
+
/** @type {IntermediateFileSystem} */
|
684
|
+
(compiler.intermediateFileSystem),
|
685
|
+
context: /** @type {string} */ (options.context),
|
686
|
+
cacheLocation:
|
687
|
+
/** @type {string} */
|
688
|
+
(cacheOptions.cacheLocation),
|
662
689
|
version: cacheOptions.version,
|
663
690
|
logger: compiler.getInfrastructureLogger(
|
664
691
|
"webpack.cache.PackFileCacheStrategy"
|
665
692
|
),
|
666
693
|
snapshot: options.snapshot,
|
667
|
-
maxAge: cacheOptions.maxAge,
|
694
|
+
maxAge: /** @type {number} */ (cacheOptions.maxAge),
|
668
695
|
profile: cacheOptions.profile,
|
669
696
|
allowCollectingMemory: cacheOptions.allowCollectingMemory,
|
670
697
|
compression: cacheOptions.compression,
|