Update Webpack core packages to v5 (major)
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
webpack | dependencies | major | ^4.46.0 -> ^5.75.0 |
webpack-cli (source) | dependencies | major | ^4.10.0 -> ^5.0.0 |
MR created with the help of gitlab-org/frontend/renovate-gitlab-bot
Release Notes
webpack/webpack
v5.75.0
Bugfixes
-
experiments.*
normalize tofalse
when opt-out - avoid
NaN%
- show the correct error when using a conflicting chunk name in code
- HMR code tests existance of
window
before trying to access it - fix
eval-nosources-*
actually exclude sources - fix race condition where no module is returned from processing module
- fix position of standalong semicolon in runtime code
Features
- add support for
@import
to extenal CSS when using experimental CSS in node - add
i64
support to the deprecated WASM implementation
Developer Experience
- expose
EnableWasmLoadingPlugin
- add more typings
- generate getters instead of readonly properties in typings to allow overriding them
v5.74.0
Features
- add
resolve.extensionAlias
option which allows to alias extensions- This is useful when you are forced to add the
.js
extension to imports when the file really has a.ts
extension (typescript +"type": "module"
)
- This is useful when you are forced to add the
- add support for ES2022 features like static blocks
- add Tree Shaking support for
ProvidePlugin
Bugfixes
- fix persistent cache when some build dependencies are on a different windows drive
- make order of evaluation of side-effect-free modules deterministic between concatenated and non-concatenated modules
- remove left-over from debugging in TLA/async modules runtime code
- remove unneeded extra 1s timestamp offset during watching when files are actually untouched
- This sometimes caused an additional second build which are not really needed
- fix
shareScope
option forModuleFederationPlugin
- set
"use-credentials"
also for same origin scripts
Performance
- Improve memory usage and performance of aggregating needed files/directories for watching
- This affects rebuild performance
Extensibility
- export
HarmonyImportDependency
for plugins
v5.73.0
Features
- add options for default
dynamicImportMode
and prefetch and preload - add support for
import { createRequire } from "module"
in source code
Bugfixes
- fix code generation of e. g.
return"field"in Module
- fix performance of large JSON modules
- fix performance of async modules evaluation
Developer Experience
- export
PathData
in typings - improve error messages with more details
v5.72.1
Bugfixes
- fix
__webpack_nonce__
with HMR - fix
in
operator in some cases - fix json parsing error messages
- fix module concatenation with using
this.importModule
- upgrade enhanced-resolve
v5.72.0
Features
- make cache warnings caused by build errors less verbose
- Allow banner to be placed as a footer with the BannerPlugin
- allow to concatenate asset modules
Bugfixes
- fix RemoteModules when using HMR (Module Federation + HMR)
- throw error when using module concatenation and cacheUnaffected
- fix
in
operator with nested exports
v5.71.0
Features
- choose smarter default for
uniqueName
when using aoutput.library
which includes placeholders - add support for expressions with
in
of a imported binding - generate UMD code with arrow functions when possible
Bugfixes
- fix source map source names for ContextModule to be relative
- fix
chunkLoading
option in module module - fix edge case where
evaluateExpression
returnsnull
- retain optional chaining in imported bindings
- include runtime code for the base URI even if not using chunk loading
- don't throw errors in persistent caching when importing node.js builtin modules via ESM
- fix crash when using
lazy-once
Context modules - improve handling of context modules with multiple contexts
- fix race condition HMR chunk loading when importing chunks during HMR updating
- handle errors in
runAsChild
callback
v5.70.0
Features
- update node.js version constraints for ESM support
- add
baseUri
toentry
options to configure a static base uri (the base ofnew URL()
) - alphabetically sort exports in namespace objects when possible
- add
__webpack_exports_info__.name.canMangle
- add proxy support to
experiments.buildHttp
-
import.meta.webpackContext
as ESM alternative torequire.context
- handle multiple alternative directories (e. g. due to resolve.alias or resolve.modules) when creating an context module
Bugfixes
- fix problem when assigning
global
to a variable - fix crash when using
experiments.outputModule
andloaderContext.importModule
with multiple chunks - avoid generating progress output before the compilation has started (ProgressPlugin)
- fix handling of non-static-ESM dependencies with using TLA and HMR in the same module
- include the asset module filename in hashing
-
output.clean
will keep HMR assets for at least 10s to allow HMR to access them even when compilation is faster then the browser
Performance
- fix asset caching when using the BannerPlugin
Developer Experience
- improve typings
Contributing
- capture caching errors when running the test suite
v5.69.1
Revert
- revert "handle multiple alternative directories (e. g. due to resolve.alias or resolve.modules) when creating an context module"
v5.69.0
Features
- automatically switch to an ESM compatible environment when enabling ESM output mode
- handle multiple alternative directories (e. g. due to
resolve.alias
orresolve.modules
) when creating an context module - add
util/types
to node.js built-in modules - add
__webpack_exports_info__.<name>.canMangle
api
Bugfixes
- fix bug in chunk graph generation which leads to modules being included in chunk desprite them being already included in parent chunks
- avoid writing more than 2GB at once during cache serialization (as workaround for node.js/libuv bug on MacOS)
- fix handling of whitespaces in semver ranges when using Module Federation
- avoid generating hashes which contain only numbers as they likely conflict with module ids
- fix resource name based placeholders for data uris
- fix cache serialization for context elements
- fix passing of
stage
option when instrumenting plugins for the ProfilingPlugin - fix tracking of declarations in concatenated modules to avoid conflicts
- fix unstable mangling of exports
- fix handling of
#
in paths of loaders - avoid unnecessary cache update when using
experiments.buildHttp
Contributing
- update typescript and jest
Developer Experience
- expose some additional typings for usage in webpack-cli
v5.68.0
Features
- allow to disable compile time evaluation of import.meta.url
- add
__webpack_module__
and__webpack_module__.id
to the api
Bugfixes
- fix handling of errors thrown in async modules
v5.67.0
Features
- add 'outputPath' configuration option for resource asset modules
- support Trusted Types in eval source maps
-
experiments.css
- allow to generate only exports for css in node
- add
SyncModuleIdsPlugin
to sync module ids between server and client compilation - add more options to the
DeterministicModuleIdsPlugin
to allow to generate equal ids
Developer Experience
- limit data url module name in stats printer
- allow specific description for CLI options
- improve space limiting algorithm in stats printing to show partial lists
- add
null
to errors in callbacks - fix call signature types of addChunkInGroup
Bugfixes
- avoid reporting non-existant package.jsons as dependencies
-
experiments.css
- fix missing css runtime when only initial css is used
- fix css hmr support
- bugfixes to css modules
- fix cache serialization for CreateScriptUrlDependency
- fix data url content when processed by a loader
- fix regexp in identifiers that include
|
- fix ProfilingPlugin for watch scenarios
- add layer to module names and identifiers
- this avoid random module id changes when additional modules are added to another layer
- provide hashFunction parameter to DependencyTemplates to allow customizing it there
- fix HMR when experiments.lazyCompilation is enabled
- store url as Buffer to avoid serialization warnings
- exclude
webpack-hot-middleware/client
from lazy compilation
Contributing
- remove travis configuration
- improve spell checking
v5.66.0
Features
- add
output.library.type: "commonjs-static"
to emit a statically analyse-able commonjs module (for node.js esm interop support) - add
experiments.css
(very experimental)
Bugfixes
- fix CORS headers for
experiments.lazyCompilation
- fix
[absolute-resource-path]
for SourceMap module naming - avoid stack overflow when accessing many memory cached cache values in series
Performance
- reduce default
watchOptions.aggregateTimeout
to 20ms
v5.65.0
Features
- static evaluation understands
undefined
now - reduce container entry code by a few chars
- use template literals when available and they make sense
Bugfixes
- handle
singleton
flag withoutrequiredVersion
in Module Federation - upgrade
watchpack
for context time info bugfix
Performance
- improve RegExp in error message formating for non-quadratic performance
Developer Experience
- automatically insert brackets when
output.globalObject
contains a non-trival expression - show error when using
script
type external with invalid syntax - expose types for
Resolver
,StatsOptions
andResolvePluginInstance
Preparations for the future
-
hashDigestLength
will default to 16 in webpack 6 (experiments.futureDefaults
)
v5.64.4
Bugfixes
- fix tagged template literal evaluation
- fix ModuleFederation with ESM
- fix outputModule with intial splitChunks
Performance
- upgrade watchpack for faster watcher updating
- track file and directory timestamps separately in watchpack and webpack
Developer Experience
- show origin of singleton shared module in mismatch warning
v5.64.3
Performance
- allow to use pre-compiled schema when
Infinity
is used in configuration - allow to use pre-compiled schema for configuration arrays
v5.64.2
Bugfixes
- avoid double initial compilation due to invalid dependencies with managedPaths
v5.64.1
Bugfixes
- fix regexp in managedPaths to exclude additional slash
- make module.accept errorHandler optional in typings
- correctly create an async chunk when using a
require(...).property
inrequire.ensure
- fix cleaning of symlinks in
output.clean: true
- fix change detection with
unsafeCache
withinmanagedPaths
(node_modules) - bump webpack-sources for Stack Overflow bugfix
v5.64.0
Features
- add
asyncChunks: boolean
option to disable creation of async chunks
Bugfixes
- fix ProfilingPlugin for
experiments.backCompat: false
Performance
- avoid running regexp twice over the file list
v5.63.0
Features
- allow passing
chunkLoading: false
to disable on-demand loading
Bugfixes
- fix
import 'single-quote'
in esm build dependencies
v5.62.2
Bugfixes
- fix
__system_context__
injection when using thelibrary
option on entrypoint - enable
exportsPresence: "error"
by default infutureDefaults
- fix bad performance for a RegExp in Stats printing (with large error messages)
- fix
exportPresence
->exportsPresence
typo - fix a bug with module invalidation when only module id changes with
experiments.cacheUnaffected
v5.62.1
Bugfix
- fix invalid generated code when omitting
;
v5.62.0
Features
- add options to configure export presence checking
-
parser.javascript.reexportExportsPresence: false
allows to disable warnings for non-existing exports during the migration fromexport ... from "..."
toexport type ... from "..."
for type reexports in TypeScript
-
- add
experiments.backCompat: false
to disable some expensive deprecations for better performance
Bugfixes
- use
['catch']
instead of.catch
for better ES3 support - fix removed parentheses when using
new (require("...")).Something()
- fix
{ require }
object literals -
splitChunks.chunks
option is now correctly used forsplitChunks.fallbackCacheGroup.maxSize
too - fix schema of
listen
option, allow to omitport
- add better support for Promises from different isolates
Developer Experience
- add typings for the webpack API that is available within modules
- use
/// <reference types="webpack/module" />
to use the typings in typescript modules - or
"types": [..., "webpack/module"]
in tsconfig
- use
v5.61.0
Bugfixes
- use a wasm md4 implementation for node 17 support
- include the
path
submodules in the node.js default externals
Performance
- improve string to binary conversion performance for hashing
Contribution
- CI runs on node.js 17
v5.60.0
Features
- Allow to pass more options to
experiments.lazyCompilation
. e. g. port, https stuff
Bugfixes
- fix
output.hashFunction
used to persistent caching too - Initialize
buildDependencies
Set correctly when loaders are added inbeforeLoaders
hook
v5.59.1
Bugfixes
- fix regexp in managedPaths
- fix hanging when trying to write lockfile for
experiments.buildHttp
v5.59.0
Features
- add
/*#__PURE__*/
forObject()
in generated code - add RegExp and function support for
managed/immutablePaths
- add hooks for multiple phases in module build
- improvements to
experiments.buildHttp
- allow to share cache
- add allowlist
- add
splitChunks.minSizeReduction
option
Bugfixes
- fix memory caching for Data URLs
- fix crash in
waitFor
when modules are unsafe cached - fix bug in build cycle detection
v5.58.2
Bugfixes
- fix serialization context passed
- fix a bug which caused module duplication when using persistent caching, unsafe cache and memory cache with GC
- fix validation of snapshots of non-existing directories
Performance
- store a hash in first bits of bigint to workaround v8 hashing: https://github.com/v8/v8/blob/b704bc0958e2e26305a68e89d215af1aee011148/src/objects/bigint.h#L192-L195
v5.58.1
Bugfixes
- fix
.webpack[]
suffix to not execute rules - revert performance optimization that has too large memory usage in large builds
v5.58.0
Features
- add hook for readResource
- add
diagnostics_channel
to node builtins
Performance
- improve chunk graph creation performance
- add cacheUnaffected cache support
- remove some caching that makes not difference
- improve splitChunks performance
- improve chunk conditions performance
v5.57.1
Bugfix
- fix experiments.cacheUnaffected which broke by last release
v5.57.0
Performance
- reduce number of hash.update calls
- allow ExternalModules to be unsafe cached
- improve hashing performance of module lists (StringXor)
Bugfixes
- experiments.cacheUnaffected
- handle module/chunk id changes correctly
- cache modules with async blocks
- show errors when using incompatible options
v5.56.1
Bugfix
- DefinePlugin: fix conflict with older variants of the plugin
v5.56.0
Performance
- make DefinePlugin rebuild check more efficient performance and memory wise
v5.55.1
Bugfixes
- fixes for
experiments.cacheUnaffected
- fix accidentically shared mem caches
- avoid RuntimeSpecMap in favor of directly setting on memCache
- compare references modules when restoring mem cache
v5.55.0
Performance
-
experiments.cacheUnaffected
- reduce cache memory usage
- make memCache per module
- cache ESM reexport computation
-
module.unsafeCache
- make it faster by moving it to Compilation-level instead of in NormalModuleFactory
- omit tracking resolve dependencies since they are not used when unsafe cache is enabled
- module graph
- lazy assign ModuleGraphConnections to Dependencies since that is only accessed when uncached
v5.54.0
Features
- improve constant folding to allow to skip more branches for
&&
||
and??
- allow all hashing using in webpack to be configured with
output.hashFunction
- no longer bailout completely from inner graph analysis when
eval
is used in a module
Bugfixes
- force bump enhanced-resolve for bugfixes
Performance
- reduce number of allocation when creating snapshots
- add
output.hashFunction: "xxhash64"
for a super fast wasm based hash function - improve utf-8 conversion when serializing short strings
- improve hashing performance for dependencies
- add
experiments.cacheUnaffected
which caches computations for modules that are unchanged and reference only unchanged modules
v5.53.0
Features
- add
node.__dirname/__filename: "warn-mock"
which warns on usage (will be enabled in webpack 6 by default)
Bugfixes
- add
stream/web
to Node.js externals - fix IgnorePluginSchema
- fix builds with persistent caching taking 1 minute to build at least
Experiments
- add
experiments.futureDefaults
to enable defaults for webpack 6
v5.52.1
Performance
- split fresh created persistent cache files by time to avoid creating very large files
v5.52.0
Feature
-
experiments.executeModule
is enabled by default and the option is removed- loaders are now free to use
this.importModule
- loaders are now free to use
Bugfixes
- fix generated
__WEBPACK_EXTERNAL_MODULE_null__
, which leads to merged externals -
.webpack[...]
extension is not part of matching and module name
v5.51.2
Bugfixes
- fix crash in FileSystemInfo when errors occur
- avoid property access of reserved properties
- fix reexports from async modules
- automatically close an active watching when closing the compiler
- when filenames of other runtimes are referenced that need a full hash, upgrade referencing runtime moduel to full hash mode too
- fixes a bug where
[contenthash]
is undefined when usingnew Worker
- fixes a bug where
v5.51.1
Bugfixes
-
library: "module"
propages top-level-await correctly - fix crash in filesystem snapshotting when trying to snapshot a non-existing directory
- fix some context-dependent logic in concatenated modules and source url handling
v5.51.0
Bugfixes
- correctly keep chunk loading state when the chunk loading logic is HMR updated
- This fixes some edge cases that e. g. occur when using lazy compilation for entrypoints. It is now able to HMR update that instead of needing a manual reload. Also see fixes in webpack-dev-server@4.
- track and resolve symlinks for filesystem snapshotting
- This fixes some cases of circular
yarn link
ing of dependencies. - It also fixes some problems when using package managers that use symlinks to deduplicate (e. g. cnpm or pnpm)
- This fixes some cases of circular
- pass the resulting module in the callbacks of
Compilation.addModuleChain
andCompilation.addModuleTree
v5.50.0
Features
- hashbangs (
#! ...
) are now handled by webpack
Performance
- disable cache compression by default as it tend to make performance worse
- I could still be enabled again for specific scenarios
- reduce the number of allocations during cache serialization
- This improves performance and memory usage
v5.49.0
Features
- add
experiments.buildHttp
to buildhttp(s)://
imports instead of keeping them external- keeps a
webpack.lock
file with integrity andwebpack.lock.data
with cached content that should be committed - Automatically upgrades lockfile during development when remote resources change
(might be disabled with
experiments.buildHttp.upgrade: false
) - Lockfile is frozen during production builds and usually no network requests are made
(exception:
Cache-Control: no-cache
). - The
webpack.lock.data
persisting can be disabled withexperiments.buildHttp.cacheLocation: false
. That will will introduce a availability risk. (webpack cache will be used to cache network responses)
- keeps a
Bugfixes
- fix HMR infinite loop (again)
- fix rare non-determinism with
splitChunks.maxSize
introduces in the last release - optional modules no longer cause the module to fail when
bail
is set - fix typo in records format: chunkHashs -> chunkHashes
Performance
- limit the number of parallel generated chunks for memory reasons
v5.48.0
Features
- enable import assertions again
Bugfixes
- upgrade webpack-sources for fixes regarding source maps
- fix infinite loop in HMR runtime code
v5.47.1
Bugfixes
- upgrade webpack-sources for a bunch of bugfixes regarding source maps and missing chars in output
v5.47.0
Performance
- improve source-map performance
Bugfixes
- avoid unnecessary
"use strict"
s in module mode
v5.46.0
Features
- status handlers in HMR api can now return Promises to delay the HMR process
- reasons in stats can now be grouped and collapsed
- add
stats.reasonsSpace
andstats.groupReasonsByOrigin
- add
Bugfixes
- fix a crash in asset modules when updating persistent cached modules from unsafe cached modules
Performance
- detailed preset limits all spaces to 1000 by default
- upgrade webpack-sources for a performance bugfix
v5.45.1
Bugfixes
- temporary revert import assertions because parser changes break the word
assert
in other places -
import(/* webpackPrefetch: true */ ...)
no longer breaks library output - DataURL tries to avoid re-encoding
- fix problems with DataURL encoding in some cases
v5.45.0
Features
- add support to import assertions
Bugfixes
- SourceMaps will now also be added to
.cjs
output files - fix non-system externals in a system library
Performance
- avoid copying timestamps from the watcher to the compiler
Contributing
- update to jest 27
v5.44.0
Features
- add support for
output.module
+optimization.runtimeChunk
Bugfixes
- fix inline externals with dash in type
v5.43.0
Features
- support
runtime: false
in entry description to disable runtime chunk - support
runtime
option in ModuleFederationPlugin and ContainerPlugin
Bugfixes
- fix
"module"
externals when concatenated
Performance
- serialize JSON data as buffer and parse on demand for performance and to avoid performance warning
v5.42.1
Bugfixes
- fix crashes when rebuilding with
jsonData
ordataUrl
of undefined
v5.42.0
Features
- add cache compression via
cache.compression
- enable cache compression by default for non-development modes
Bugfixes
- add
node-commonjs
to schema forexternalsType
- update acorn to fix problems with top level await
- fix regression for
system
externals
Performance
- fix a memory leak in the unsafe cache
v5.41.1
Bugfixes
- add missing types about experimental esm support to schema
- avoid slicing large Buffers as that doesn't always work for unknown reasons
Performance
- avoid slicing Buffers unnecessarily
v5.41.0
Features
- Persist cache faster when large changes are detected
- new option
cache.idleTimeoutAfterLargeChanges
to control that
- new option
Bugfixes
- shutdown lazy compilation server correctly
Experiments
- EcmaScript modules support (
experiments.outputModule: true
)-
output.library.type: "module"
: very basic support, no live bindings, unnecessary runtime code output.chunkLoading: "import"
output.chunkFormat: "module"
-
externalsType: "module"
generates nowimport * as X from "..."
(in a module) orimport("...")
(in a script) - Node.js commonjs externals use
import { createRequire } from "module"
in a module -
new Worker
etc. sets `type: "module"
-
v5.40.0
Features
- accept
node:
prefixed requests as node.js externals - avoid
instanceof Promise
in favor ofp && typeof p.then === "function"
to allow mixing different Promise implementions
Bugfixes
- fix usage analysis of class properties
Performance
- improve LazySet memory usage by shortcircuiting empty sets
- reduce algorithmic complexity of the structure analysis for plain objects serialization
Developer Experience
- allow
Buffer
inthis.emitFile
typings (loader context) - improve
reset
cli argument description
v5.39.1
Bugfixes
- reduce memory usage and fix memory leaks
v5.39.0
Features
- allow lazy compilation for
import()
context (import with expression)
Bugfixes
- fix respecting
cache.allowCollectingMemory
- fix cli loading after installing it
- fix initial list of non-js chunks that are flagged as already loaded
Performance
- remove unnecessary
Error.captureStackTrace
from webpack errors
v5.38.1
Performance
- fix missing increment in sorting optimization from last release
v5.38.0
Features
-
new URL("data:...", import.meta.url)
is now supported - add
module.rules[].scheme
as condition to match the request scheme (likedata
,http
, etc.)
Bugfixes
- fix tracking of changes and removals during watching in some edge cases
- fix incorrect renaming of class fields in concatenatenated modules
- fix crash in HMR when removing runtimes from the compilation
Performance
- lazy import some internal modules only when used
- allow unsafe caching of the entrypoint
- improve performance of sorting exports info map
- update to latest webpack-sources for improved source map performance
v5.37.1
Bugfixes
- When using multiple configurations in watch mode and calling
Watching.invalidate
,dependencies
andparallelism
of the config array is now respected correctly - Fix a crash when accessing the
stats
after the next compilation has started - fix collecting changes when using
Watching.suspend
- fix schema of
RuleCondition.not
and allow passing a condition directly instead of only an array
Developer Experience
- typings accept a ReadonlyArray of configurations now
Contributing
- fix coverage reporting for child processes
- remove outdated loader from readme
v5.37.0
Features
- add
output.trustedTypes
Bugfixes
- fix inclusion of too many chunk in the filename function when using
dependOn
- allow errors to be
null
in fs callbacks
Developer Experiences
- make ESM tracking info message less verbose
- add typings for loaders
v5.36.2
Bugfixes
- correctly handle errors thrown during parser/generator creation
- e. g. validation errors for asset module options
- use a better automatic runtime name for workers
- not too long to cause filename problems
- no longer assume assets do not get removed when the compiler is running
- Using
output.clean
is against this assumption - It fixes a bug where assets are missing, when removed and readded to the compilation
- Using
- fix a problem when chained dependOn, which causes too many modules being included in entrypoints
v5.36.1
Performance
- add
cache.profile
(type: "filesystem"
only) flag for more info about (de)serialization timings - avoid complex "by exports" splitting for splitChunks in development mode
- faster hashing for the common case
- improve algorithmic complexity for merging InitFragments to solve performance in an edge case
v5.36.0
Features
- add support for class fields (stage 4)
Performance
- improve (de)serialization performance of dependency locations
v5.35.1
Bugfixes
- fix an
__webpack_exports__ is not defined
error with some library types
performance
- improve stats grouping performance
- improve providedExports analysis performance
- improve hashing performance
- lazy merge dependencies from creating context modules
- improve dependency parents access performance
v5.35.0
Bugfixes
- fix handling of build dependencies with
#
in path
Performance
- improve memory usage when using the filesystem cache
When reading a file into a Buffer and picking smaller slices of the Buffer the small slices still keep a reference to the large original Buffer. The leads to increased memory usage. A fix would be to clone the slice into a smaller Buffer when wasting too much memory, but this has a performance cost. There is now a new option
cache.allowCollectingMemory
which controls that. For one-off builds you probably wantallowCollectingMemory: false
and for watch builds you probably wantallowCollectingMemory: true
. It defaults to false in production mode and true in development mode.
v5.34.0
Features
- add support for empty string in
resolve.extensions
and handle them in this order - add
pnpapi
as builtin external when usingtarget: "node"
Bugfixes
- fix a bug where chunks filenames where not included in runtime when using splitChunks and runtimeChunk with
target: "node"
- fix deprecation message from LimitChunkCountPlugin
Performance
- precompile schemas into functions to avoid schema compilation overhead
- fix performance regression when storing the cache
- performance improvement for snapshot file iterators
Developer Experience
- remove removed
store: 'idle'
from schema description
v5.33.2
Bugfix
- handle falsy entry options correctly
v5.33.1
Bugfix
- fix passing publicPath to
this.importModule
v5.33.0
Features
- adds support for specifying a
publicPath
per entrypoint- add
entry.xxx.publicPath
option
- add
Bugfix
- disable injection of chunk loading logic for
executeModule
Performance
- performance improvements for
export *
and reexports
v5.32.0
Features
- add support for a pseudo extensions
.webpack[type]
(e. g..webpack[javascript/auto]
) to specify the default module type when no other module type is specified- to be used with
!=!
inline syntax
- to be used with
Bugfixes
- fixes incorrect cache invalidation when new properties are added to the DefinePlugin
Experiments
- add
experiments.executeModule
to allow build-time execution of modules of the module graph- add
this.importModule(request, options, [callback]): Promise
to the loader context - add
compilation.executeModule(request, options, callback)
for plugins
- add
v5.31.2
Bugfixes
- revert disposing of CodeGenerationResults since some plugins rely on the fact that they are still accessible after the compilation
v5.31.1
Bugfixes
- invalid hooks is no longer called twice for a compiler in a MultiCompiler
Memory
- eliminated some memory leaks
- dispose code generation results after sealing the compilation
Performance
- improve performance of cache serialization by reducing number of write syscalls
v5.31.0
Features
- add a few more options for infrastructure logging:
-
infrastructureLogging.colors
: Enables/Disables colorful output. -
infrastructureLogging.appendOnly
: Only appends lines to the output. Avoids updating existing output e. g. for status messages. -
infrastructureLogging.stream
: Stream used for logging output. Defaults to process.stderr. -
infrastructureLogging.console
: Custom console used for logging. - When stream is an TTY colors is enabled and appendOnly is disabled. Otherwise it's flipped.
-
Bugfixes
- Persistent Caching
- fix caching crash when using fsevents in build dependencies
- improve resolving of build dependencies when
exports
field is used - make problems during resolving build dependencies warnings instead of debug messages
- prioritize static reexport over runtime reexport for target determination
- This helps in optimization by no longer opting out of optimization when some other exports any dynamic (from commonjs or empty/type-only modules)
- fix bug with subtraction of runtimes
- This fixes a problem with concatenated modules in builds with multiple runtimes and force-merged shared chunks
- ensure that entrypoints are always re-executed when HMR-updated
- This fixes no longer updating pages when the entrypoint crashed
v5.30.0
Features
- add GC to memory cache
- opt-in via
cache.maxGenerations
whencache.type: "memory"
- default for
cache.type: "filesystem"
andmode: "development"
- configure via
cache.maxMemoryGenerations
whencache.type: "filesystem"
- Generations = Rebuilds
- opt-in via
- add GC for untouched filesystem cache files
- allow to configurate GC for the filesystem cache via
cache.maxAge
- allow to disable memory cache when using the filesystem cache with
cache.maxMemoryGenerations: 0
- Caches will be cleared on Compiler close resp Cache shutdown (after persisting for the filesystem cache)
Bugfixes
- add a few workarounds for v8 bug that causes memory leaks in optimized code (only partially fixes it)
- after serializing filesystem no longer keeps cache items in memory, instead it will read them from disk again when accessed
GC = Garbage Collection
v5.29.0
Bugfixes
- fix some edge cases for
splitChunks.maxSize
which cause too large chunks to be created - add
stats.groupModulesByType
to the schema
Developer Experience
- add resolving trace for error during resolving build dependencies
- expose Stats-related types
- exports AsyncDependenciesBlock and
Module/Const/NullDependency
on the API
v5.28.0
Features
- add
module.generator.asset.publicPath
to configure a different publicPath for assets
Bugfixes
- fixes a watch mode caching problem which was introduced in 5.26.0 when using the unsafe cache
Performance
- improve serialization performance
v5.27.2
Bugfixes
- fix error reporting when errors happen in
beforeLoaders
hook - avoid crash when
experiments.lazyCompilation
is used (regression) - fix lazy compilation opt-out when HMR accept/decline is used on an
import()
- fix
new URL(new URL
generated by worker handing
v5.27.1
Bugfix
- allow invalidation after first watch run in MultiCompilers
v5.27.0
Features
- add
utils: { contextify(context, absolutePath), absolutify(context, request) }
to loader context
Bugfixes
- fix caching bug when split chunks of an entrypoint change and modules of the entrypoint stay equal
- fix
imports
field handling - fix incorrect id assignment of record ids plugin
- this causes ids changing unnecessary during watch mode
- fix library exports when using onChunks in entry
- This prevented using libraries with web target when using splitChunks for the initial chunks
v5.26.3
Bugfix
- fix race condition in MultiCompiler queueing
v5.26.2
Bugfixes
- fix problem with new line after comment
- fix assign libraries with runtime chunk
v5.26.1
Bugfixes
- avoid using strict mode runtime for assign libraries to allow assigning not existing variables
- avoid collision with
Set.addAll
polyfill - allow filenames starting with
../
when generation the undo path for non-web targets
v5.26.0
Features
- handle cache version automatically for DefinePlugin
- Values no longer need to be defined as build dependencies
- add more options for
DefinePlugin.runtimeValue
(file/context/missing/buildDependencies, version)
Bugfixes
- fix a memory leak which happens in watch mode with caching when modules are removed from the compilation
- fix usage of some arrow functions when es5 target is selected
- chunk loading in workers now uses publicPath instead of relative paths
- fixes a problem when worker file is in a child directory
v5.25.1
Bugfixes
- fix startup logic when non-js chunks are in the entrypoint
- remove
type: "module"
for Workers when generating classic scripts
v5.25.0
Features
- Refactor the startup logic to improve library support
- add
__webpack_runtime_id__
to access the current runtime id - improve error handling for HMR
- add second argument to self accept error handler to pass new module and module id
- add error handler argument to dependency accept, passing error and module ids
- add
output.strictModuleErrorHandling
to opt into stricter evaluation error handling semantics according to ESM spec- used by default when HMR is enabled
- when ignoring a module used by
new URL()
this will result in an url to a empty file ("data:,"
) - add
module.generator.asset.emit
option to disable creating assets from asset modules (e. g. for SSR)
Bugfixes
- fix problem when library options apply to a non-runtime chunk
- fix crash in
splitChunks.maxSize
where negative indicies are accessed - fix sub-optimal splitting of
splitChunks.maxSize
in some cases when multiple size types are involved - fix a memory leak in AssetGenerator
- fix usage of runtime globals in SharedPlugin to support HMR updates
Deprecations
- deprecate
output.strictModuleExceptionHandling
(this is the CommonJS way of handling errors, and the name is weird)
v5.24.4
Bugfixes
- fix overridding built-in externals via
externals
- fix handling UNC paths as windows paths
- Improve error when passing an empty array as library name
- avoid adding the package.json from compilation context as build dependency
- fix expansion of
"..."
in array configuration options when it's not at the start
v5.24.3
Bugfixes
- fix contenthash when a file is emitted twice with different filenames but that same contenthash
v5.24.2
Bugfixes
- fix invalid syntax generated for destructuring with default values
- fix some incorrect properties accesses in watch
-
modifiedFiles
andremovedFiles
were undefined
-
- fix some edge cases with MultiCompiler
v5.24.1
Performance
- improve performance of finding modules to concatenate
- improve performance of getting incoming modules from connections
- make sure that all serialized modules restore correctly
- avoid storing ConcatenatedModule, since that's not needed
Developer Experience
- fix typo in deprecation message
v5.24.0
Bugfixes
- fix name conflict when using destructing with default arguments in concatenated modules
- fix tracking of reexports in concatenated modules when using multiple
export *
that point to the same export - debug logging is now included even if logging is not
- fix name of ModuleConcatenationPlugin logger
- fix
experiments.lazyCompilation: true
. It now has an effect.
Developer Experience
- expose
Watching
type
Contribution
- fix husky setup
Performance
- improve performance of module concatenation
v5.23.0
Features
- add
parserOptions.url: "relative"
option- Allows to generate relative URLs from
new URL
(e. g. for SSG/SSR)
- Allows to generate relative URLs from
Bugfixes
- fixes for electron target
- electron has importScripts in worker
- only choose a chunkLoading which fits to the chunkFormat
- prefer fetch wasm loading over node wasm loading
- fix regression when combining library + runtimeChunk + node target
Developer Experience
- export MultiStats type
v5.22.0
Features
- generate shorter output code for JSON data by using a
'...'
string instead of"..."
(only affects output side when not minimized) - the
dependencies
configuration option now works for watch builds too- It will build compilation when any of
dependencies
has changed - It will wait for compiling until all of
dependencies
have finished
- It will build compilation when any of
- add
parallelism
config option on the array of configurations to limit the compilers that are running in parallel
Developer Experience
- add hints (
Did you mean ...
) to resolve errors when- resolving fails due to
enforceExtension
- relative request is missing leading
./
- resolving fails due to
- when all modules of an entrypoint fail resolving and another entrypoints
depend(s)On
it, webpack no longer crashes with a weird error - add hint to stats how to get details about errors/warnings in child compilations
- improve error message for lazyCompilation when using IE11
Bugfixes
- async entries e.g. for Workers are now implicitly flagged as "having side effects" even if they are affects by
"sideEffects": false
- in future we might add a warning for this
- avoid crash when using
this.loadModule
(loader) and the loaded module has errors - refactor libraries to inline exporting code into runtime to allow using with
output.iife: false
- fix invalid code when using
define
for local modules and arrow functions are supported - fix missing runtime requirement for system.js context
- fix parsing of
define
function, which missed declarations before - avoid unnecessary calls to loaders when serializer are already registered
- fix inner graph analysis for exports when
export { x }
is before pure declarationconst x = /*#__PURE__*/ f()
- fix hashing order of runtime chunks when there are async entries involved
Contribution
- CI run tests on node.js 15 too
- CI run tests on github actions too
Experiments
- improvements on experimental
output.library: { type: "module" }
(experiments.outputModule: true
)- it can generate
export { ... }
now, but that can't handle live-bindings yet
- it can generate
v5.21.2
Bugfixes
- json with
constructor
property now caches correctly - json generation with object prototype property now works correctly
- tree shaking json array when accessing
length
property now works correctly - fix incorrect call context when calling properties on imports from CommonJS modules
v5.21.1
Bugfixes
- fix a crash when using colors in stats
v5.21.0
Features
- add
__webpack_base_uri__
to change base URI at runtime - add
stats.errorDetails: "auto"
to show error details automatically when there are only 1 or 2 errors
Bugfixes
- fix a hanging build when using the persistent cache without a package.json in cwd
Developer Experience
- add typings for the stats JSON
- change default for
stats.errorDetails
to"auto"
when usingtoString
- Highlight important text in error message with colors
- e. g.
Did you mean ...?
and similar hints are shown in green
- e. g.
v5.20.2
Bugfixes
- fix caching issue with asset modules causing
undefined
files - fix problem that rebuildModule doesn't follow dependencies
v5.20.1
Bugfix
- fix
Caching failed for pack: RangeError [ERR_OUT_OF_RANGE]
warning when serializing the cache
v5.20.0
Features
- add
experiments.lazyCompilation.imports
to disable lazy compilation ofimport()
s - add
experiments.lazyCompilation.test
to allow custom selection of modules that should be lazy compiled - When using
profile: true
resp.--profile
webpack will now print a summary of expensive modules or loaders
Bugfixes
- fix that
experiments.lazyCompilation.client
now works as intended - fix a bug which causes runtime requirements to be missing e. g.
__webpack_require__ is not defined
Developer Experience
- expose
EntryObject
type in typings - remove
pkg-dir
dependency
v5.19.0
Features
- allow to set chunk name for
exposes
forModuleFederationPlugin
Bugfixes
- add a missing simicolon in runtime code
- improve consistency of top level await with other implementations and the spec
- make
options
forProgressPlugin
optional in typings
Performance
- try to avoid unnecessary allocations
v5.18.0
Internals
- refactor hashing to move the responsibility of hashing module exports info and referenced modules from Dependencies to the Module
- Hashing in Dependencies can be much cheaper now (could improve performance when many dependencies are used that point to the same module, like many references to
React.createElement
) - Fixes bugs where Dependencies forgot to hash some details about the referenced module
- The new model elimiates the potential of such bugs are Dependencies have less responsibilities now
- Hashing in Dependencies can be much cheaper now (could improve performance when many dependencies are used that point to the same module, like many references to
v5.17.0
Features
- add experimental lazy compilation via
experiments.lazyCompilation: true
for web and node targets- compiles entrypoints and
import()
s only when they are accessed - More details see: https://github.com/webpack/webpack/pull/12469
- Known issues:
webpack-dev-server
/webpack serve
opening an entrypoint for the first time, sometimes need a manual refresh.
- compiles entrypoints and
- move some javascript parsing related configuration options from
module
tomodule.parser.javascript
and also allow to set them viamodule.rules
- add
module.parser.javascript.commonjsMagicComments
to enable/* webpackIgnore: true */
forrequire()
calls
Bugfixes
- fix a problem with
webpack.debug.ProfilingPlugin
on Mac when the computer was suspended before. - fix a bug with IIFE handling when the IIFE has parameters with default values
v5.16.0
Features
- add
__webpack_is_included__("./some-module")
which returns true when the module is bundled and false when not - priorize eager shared modules over normal shared modules (with the same version), as they are loaded anyway
- add
library.type: "assign-properties"
which merges all exports into a global variable - allow
optimization.innerGraph
fornew URL()
- This allows to detect which URLs are used and drop the module and asset when they are not.
Bugfixes
- only return exports from runtime when needed
- This allows to use
experiments.outputModule: true
withoptimization.runtimeChunk
- This allows to use
- fix a bug that
splitChunk.reuseExistingChunk
doesn't work for entrypoints- This optimized an edge case where a nearly empty entrypoint is created when an entrypoint contains only vendor modules
Developer Experience
- include plugin names in deprecation message for "NormalModuleFactory.xxx is no longer a waterfall hook"
- improve error message when passing an invalid library name
v5.15.0
Features
- add
getResolve
method to data object when using functionexternals
-
externals
function may return a promise now
Bugfixes
- fix
define("local-module", expr)
generating invalid syntax - fix resolving bug when resolving build dependencies
- add
chunkModulesSpace
to schema - fix
rebuildModule
api
Performance
- improve performance of build dependencies resolving
v5.14.0
Features
- add experimental ESM tracking for build dependencies
Bugfixes
- fix crash when calling
watcher.getContextTimeInfoEntries()
- make filesystem types compatible with
memfs
and realfs
- fix rebuild error when using the
AutomaticPrefetchPlugin
Contribution
- improve type definitions by using typescript 4.2
v5.13.0
Features
- add
resolve.preferAbsolute
flag for compatibility with webpack 4 - add support for wildcards in
exports
andimports
field - improve chunk and module names
- use
nameForCondition()
as fallback for module names - handle module connection with only transive side effects correctly when determining chunk root modules
- use
v5.12.3
Bugfixes
- upgrade
@webassembly/*
andterser-webpack-plugin
dependencies
v5.12.2
Bugfixes
- fix problem with typings in strict mode
v5.12.1
Bugfixes
- fix a crash in ConcatenatedModule when deserializing
- fix some not serializable warnings
- show error when using an invalid identifier as
var
library
v5.12.0
Features
- add
experiments.layers
-
entry.xxx.layer: "name-of-layer"
allows to set the layer for an entrypoint -
module.rules[].issuerLayer: RuleCondition
allows to filter/match by layer of issuer -
module.rules[].layer: "name-of-layer"
allows to set the layer of an module -
splitChunks.cacheGroups.xxx.layer
allows to select modules by layer -
externals.byLayer["name-of-layer"]
allows to specify externals by layer -
externals.byLayer: (layer) => ...
allows to specify externals by layer -
externals
function has an additional argument propertycontextInfo
which contains info about the issuer (e. g. the layer)
-
- add
module.parser
andmodule.generator
options to allow to specify parser/generator options globally per module type - make
chunkId
variable available in script tag hook (like it was with webpack 4)
Bugfixes
- escape exclamation marks in context regexp when generating readable module names/ids
- fix a problem when bundling webpack bundles with enabled eval-based devtools
- add
stats.nestedModulesSpace
to schema to allow to specify this option - fix a bug that incorrectly replaces
new.target
with constants - fix a bug where
splitChunk
minSize
is not handled correctly - fix a bug where the order of
splitChunk
cacheGroups
is not handled correctly - avoid adding non-filesystem resources as dependencies for watching and caching
Developer experience
- fix incorrect negation in hint comment for eval-based devtools
- improve error messages of "Library/Chunk Loading/Wasm Loading typeof is not enabled" errors
- improve question message when asking to install webpack-cli
- show a warning when loaders/plugins report invalid dependencies to webpack
Contributing
- examples use webpack-cli 4 now
- rename memorize to memoize
v5.11.1
Bugfixes
- ignore cloned ExportInfo during hashing
- fixes a problem where changing modules affects hashes in some other part of the application during development
- fixes compileBooleanMatcher when prefix and suffix overlap
- fixes invalidate code generated when generating properties access
- fix
object
types in typings - expose more types regarding Stats
v5.11.0
Features
- update typings to include undefined/null types (for strict type)
- export WebpackError
- export Asset and AssetInfo types
- allow error configuration for
validateSchema
function
Bugfixes
- fix typings for SourceMapSource
- allow custom properties in AssetInfo
- handle
undefined
values for rule conditions like empty strings
v5.10.3
Bugfixes
- errors in initial cache no longer cause build dependencies to be ignored
- manual side effects flagging should override automatic analysis
- modules in dlls without entryOnly will no longer be dropped because of no side effects
v5.10.2
Bugfixes
- add a few missing node.js libraries as externals in
target: "node"
- improve cache (de)serialization to allow larger cache files (>2GB) and increase performance for them
v5.10.1
Bugfixes
- avoid duplicating chunk info in chunk loading global
- allow executing chunks before runtime is loaded
- avoid error when emitting assets with different query string but identical filename and content
- fix duplicated asset name in
processAssets
withadditionalAssets
- add missing
\
in module info header comment
v5.10.0
Bugfixes
- Multiple fixes regarding the side effects optimization (
"sideEffects": false
) when reexports and concatenated modules are combined
Contributing
- Typescript major 4
- Improved internal structure of our typings
Performance
-
output.pathinfo: true
(default in development) adds less verbose information (and is faster) -
output.pathinfo: "verbose"
adds more verbose information -
output.pathinfo: true
is cached - avoid assets and module stats information generation when they are cached and cached assets/modules are not shown
v5.9.0
Features
- improve side effects analysis to report imported and reexported symbols as side-effect-free
Bugfixes
- fix problem when HMR and different runtimes (e. g. with Workers)
- caused crash with
... has no hash info for runtime ...
- caused crash with
v5.8.0
Features
- add the ability to process assets generated in later stages during processAssets
- new processAssets stage:
MROCESS_ASSETS_STAGE_OPTIMIZE_INLINE
- add hooks to the RealContentHashPlugin to allow to process custom hashes (e. g. SRI)
Bugfixes
- fix typing for child compiler plugins
- SourceMapPlugin will process assets added in later stages during asset processing
v5.7.0
Features
- CLI supports installing webpack-cli via
pnpm
Bugfixes
- fix problem with ASI detection, causing semicolons inserted after
if(...)
etc.
v5.6.0
Bugfixes
- emit warnings/errors for exports in commonjs modules for which we know that they don't exist
v5.5.1
Bugfixes
- fix crash when __esModule is defined with defineProperty without value
v5.5.0
Bugfixes
- fix ASI issues that occur between concatenated modules
- fix incorrect handling of
[id]
and etc. in SourceMap sources - fix side-effect-free handling of exports for concatenated modules that causes an unused export
- make ESM-CJS interop handling consistent
- make
__esModule
flag consistent exposed - handle non enumerable exports
- handle inherited exports
- handle exported Promises
- make
v5.4.0
Bugfixes
- fix renaming in super class expression in nested scopes
- fix parsing and handling of browserlist queries
- fix a few edge cases with ESM-CJS interop and .mjs
- fix ASI edge cases
v5.3.2
Bugfixes
- runtime-dependent concatenated modules can generate code for runtime-dependent execution order of concatenated modules
v5.3.1
Bugfixes
- fix incorrect concatenation of modules when multiple runtimes are involved
- fixes a "This should not happen" error
- fixes a
__webpack_require__(null)
problem
- run CLI correctly after installing
- fixes a huge performance issue when processing minimized code with SourceMap
- Use
string[]
types instead of[string, ...string[]]
for arrays that must not be empty- this is more convinient to use
Performance
- avoid incorrect store of counts in the ProgressPlugin, which causes unneeded serialization of the Persistent Cache
- upgrade terser-webpack-plugin for performance improvements
- upgrade webpack-sources for performance improvements
v5.3.0
Features and Bugfixes
- generate runtime conditional code when modules are forcefully merged from multiple runtimes
- This fixes a
Cannot read property 'call' of undefined
error in webpack runtime, because modules are used that are not in the graph in one runtime
- This fixes a
- disabled source code analysis for side effects in non-production modes
- this causes unnecessary changes to parent modules in development
- add
optimization.sideEffects: "flag"
as option for this
v5.2.1
Bugfixes
- add
watchOptions.followSymlinks
option to schema - fix hard crash when calling resolve with undefined value
- fix emit problem when files have hash in query string
- fix unneeded generation of SourceMaps when no devtool is used
- fixes a huge performance regression with terser-webpack-plugin
v5.2.0
Features
- add
sourceFilename
andjavascriptModule
to asset info for plugins
Bugfixes
- fix variable name collision when using module concatenation
- fix arrow functions in ie 11
- fix
this
externals with module concatenation - force update for enhanced-resolve for critical bugfixes (see changelog)
v5.1.3
Bugfixes
- omit unused modules from chunks when modules are only unused in some runtimes
- fixes
Self-reference dependency has unused export name
error
- fixes
- fix order of asset optimization to fix conflict between compression-plugin and real hash plugin
v5.1.2
Bugfixes
- revert: omit unused modules from chunk when modules are only unused in some runtimes
- caused issues with mini-css modules
v5.1.1
Bugfixes
- fix order of chunk hashing to allow to uses hashes in WebWorkers
- update to terser-webpack-plugin 5
- reduces number of dependencies by dropping webpack 4 support
- omit unused modules from chunk when modules are only unused in some runtimes
- fixes
Self-reference dependency has unused export name
error
- fixes
- fix hanging production builds because of infinite loop in inner graph optimization
-
Compilation.deleteAsset
updates chunk to file mappings
v5.1.0
Features
- expose
webpack
property fromCompiler
- expose
cleverMerge
,EntryOptionPlugin
,DynamicEntryPlugin
Bugfixes
- missing
require("..").xxx
in try-catch produces a warning instead of an error now - handle reexports in concatenated modules correctly when they are side-effect-free
- fix incorrect deprecation message for ModuleTemplate.hooks.hash
v5.0.0
webpack/webpack-cli
v5.0.0
Bug Fixes
- improve description of the
--disable-interpret
option (#3364) (bdb7e20) - remove the redundant
utils
export (#3343) (a9ce5d0) - respect
NODE_PATH
env variable (#3411) (83d1f58) - show all CLI specific flags in the minimum help output (#3354) (35843e8)
Features
- failOnWarnings option (#3317) (c48c848)
- update commander to v9 (#3460) (6621c02)
- added the
--define-process-env-node-env
option - update
interpret
to v3 andrechoir
to v0.8 - add an option for preventing interpret (#3329) (c737383)
BREAKING CHANGES
- the minimum supported webpack version is v5.0.0 (#3342) (b1af0dc), closes #3342
- webpack-cli no longer supports webpack v4, the minimum supported version is webpack v5.0.0
- webpack-cli no longer supports webpack-dev-server v3, the minimum supported version is webpack-dev-server v4.0.0
- remove the
migrate
command (#3291) (56b43e4), closes #3291 - remove the
--prefetch
option in favor thePrefetchPlugin
plugin - remove the
--node-env
option in favor--define-process-env-node-env
- remove the
--hot
option in favor of directly using theHotModuleReplacement
plugin (only forbuild
command, forserve
it will work) - the behavior logic of the
--entry
option has been changed - previously it replaced your entries, now the option adds a specified entry, if you want to return the previous behavior please usewebpack --entry-reset --entry './src/my-entry.js'
Configuration
-
If you want to rebase/retry this MR, click this checkbox.
This MR has been generated by Renovate Bot.