Minor Changes
-
Apply
pluginsset on a multi-configuration array to theMultiCompiler. (by @alexander-akait in #22702) -
Add
optimization.minimize.css.dropOverriddenDeclarations, dropping a declaration a later one overrides where no target is named. (by @alexander-akait in #22175) -
Export more plugins under their scope, move eleven loose exports under theirs, deprecate the old, and expose
template.DependencyTemplate,module.NullFactoryandutil.makeSerializable. (by @alexander-akait in #22261) -
Let
util.makeSerializabletake several requests, current one first. (by @alexander-akait in #22340) -
Emit the source map
scopesfield, so a debugger resolves imported ESM bindings by name. (by @alexander-akait in #21999) -
Add
library.entryExports: "all"to expose the exports of every entry module. (by @alexander-akait in #22235) -
Recognize a required
constbinding assigned toexportsas a re-export. (by @hai-x in #22276) -
Accept glob patterns in more path, module and file filter options. (by @hai-x in #22422)
-
Bundle a run of inline
<script>tags into one chunk the page can inline. (by @alexander-akait in #22188) -
Add
module.parser.javascript.topLevelThisfor classic-scriptthissemantics. (by @alexander-akait in #22193) -
Add
module.parser.html.chunkNameand awebpackChunkNamecomment for tags. (by @alexander-akait in #22200) -
Add
include/excludeversion and request filters to shared modules. (by @alexander-akait in #22297) -
Keep module side-effect information in ESM output as PURE annotations. (by @alexander-akait in #21789)
-
Add
optimization.splitChunks.dedupDepthto discover chunk intersections. (by @alexander-akait in #22240) -
Add
optimization.minimizeOptions.json, on by default withfutureDefaults. (by @alexander-akait in #22286) -
Add
SSRManifestPluginand fix server-rendered CSS collection and adoption. (by @alexander-akait in #21913) -
Add an
ignorehook tooutput.copyand keep unfollowedfromsymlinks. (by @alexander-akait in #22216) -
Add
optimization.minimize.css.convertApproximateColors. (by @alexander-akait in #22157) -
Add XML parsing and SVG/XML minification with data URLs and attribute sorting. (by @alexander-akait in #22269)
-
Extract CSS/HTML license comments like JS and safely shorten CSS gradients. (by @alexander-akait in #22408)
-
Resolve an async
DefinePlugin.runtimeValueover an asyncbeforeParsehook. (by @alexander-akait in #22210) -
Add CSS
customMedia/customSelectorsminimize options; resolve chained names. (by @alexander-akait in #22360) -
Rename the
Harmony*names toESM*and deprecate the old spellings. (by @hai-x in #22283) -
Reduce
css.syntax/html.syntaxtoparser,printer,SourceProcessorwith one node path. (by @alexander-akait in #22233) -
Add a JavaScript
SyntaxTreeread like the CSS one, andtoEstreeObject. (by @alexander-akait in #22608) -
Fix minified code that threw, and add
pure_conversionsandpure_heritage. (by @alexander-akait in #22473) -
Shorten more CSS values and selectors, fold longhands, order declarations and gather layer blocks. (by @alexander-akait in #22442)
-
Add
optimization.minimize.css.charset;falsedrops@charsetfor UTF-8 CSS. (by @alexander-akait in #22632)
Patch Changes
-
Join rules a gathered
@layerleaves adjacent, and an at-rule with a later one (by @alexander-akait in #22204)
stating the same condition; read what a condition declares. -
Read escaped CSS names and functions as spelled, and minify them unescaped. (by @alexander-akait in #22262)
-
Minify JavaScript, CSS and HTML assets whose names carry a
#fragment. (by @alexander-akait in #22277) -
Require
minimizer-webpack-plugin5.12, so inline scripts in HTML minify again. (by @alexander-akait in #22296) -
Minify the attributes of an HTML tag without rewriting the template in it. (by @alexander-akait in #22166)
-
Order joined at-rule selector lists and gather a repeated large
@layerblock. (by @alexander-akait in #22224) -
Preserve case-sensitive template identifiers when minifying HTML tag attributes. (by @bjohansebas in #22177)
-
Match Acorn's strict directives, Unicode identifiers and expression validation. (by @bjohansebas in #22185)
-
Skip concatenating modules when
optimization.providedExportsis disabled. (by @hai-x in #22410) -
Join rules a nesting lowering or duplicate drop left for a second pass. (by @aryanraj45 in #22268)
-
Write U+00A0 in a minified HTML attribute as the character, not
. (by @alexander-akait in #22208) -
Escape a foreign
<script>or<style>body, which is character data. (by @alexander-akait in #22233) -
Name the runtime module whose generation fails while hashing. (by @alexander-akait in #22203)
-
Rebuild a module in watch when its missing unused dependencies swap. (by @alexander-akait in #22693)
-
Rebuild in watch mode when a file is deleted while a build is running. (by @alexander-akait in #22650)
-
Take out the declaration a lowered shorthand writes over, which its source spelling made look like a fallback. (by @aryanraj45 in #22270)
-
Read a foreign
<script>or<style>body as character data, not as raw text. (by @alexander-akait in #22258) -
Keep an inline
<style>body as written when rebuilding a page webpack emitted. (by @alexander-akait in #22265) -
Fix minified HTML for
stylespellings, CSS quotes,<noscript>and a BOM. (by @alexander-akait in #22370) -
Record a build dependency required through a spread on Bun. (by @alexander-akait in #22230)
-
Write a nested selector opening on a combinator against its parent the way the printer writes one. (by @aryanraj45 in #22271)
-
Fix missing async stylesheets with a shared runtime. (by @bjohansebas in #22659)
-
Support deferred imports introduced by hot updates. (by @bjohansebas in #22668)
-
Fix trailing commas in
require.resolve()andrequire.resolveWeak()calls. (by @bjohansebas in #22658) -
Keep regular expressions, functions and plugins distinct in resolver caches. (by @bjohansebas in #22667)
-
Order the list a lowered nested selector lands in on what is written, not on what was. (by @aryanraj45 in #22287)
-
Hoist a vendor-prefixed nested rule for a target that reads no nesting. (by @aryanraj45 in #22308)
-
Name a hoisted nested rule in the dark-scheme copy it writes. (by @alexander-akait in #22318)
-
Minify data: URL payloads in HTML attributes and
new URL, and web manifests. (by @alexander-akait in #22300) -
fold a fallback's colors over the author's arguments, and print with (by @aryanraj45 in #22314)
recurseBlocks: falserather than throwing -
Read a regular expression repeating a capture group name in linear time. (by @alexander-akait in #22187)
-
Make lazy barrels defer import declarations and keep no deferral across compilations. (by @hai-x in #22359)
-
Invalidate unaffected caches when connection activity or async status changes. (by @bjohansebas in #22431)
-
Order concatenated re-exports deterministically when their source order ties. (by @alexander-akait in #22697)
-
Regenerate a module's exports when a require() cycle forms or breaks around it. (by @aryanraj45 in #22644)
-
Recompute re-exports, code and warnings when a module goes missing or returns. (by @bjohansebas in #22432)
-
Preserve loader resolution dependencies across cached rebuilds. (by @bjohansebas in #22430)
-
Read unwatched changes afresh and wait for restarted watch compilers to finish. (by @alexander-akait in #22646)
-
Parse loader output for
.wasmas JavaScript when async wasm is auto-enabled. (by @alexander-akait in #22556) -
Remove modules an async chunk inherits from a named parent chunk grown later. (by @hai-x in #22555)
-
Fix JavaScript minifier crashes, altered behavior, lost comments, unparsable output and null source map sources, including parameter aliases, ESTree trees and preserved names, and stop it writing into the caller's parse options. (by @alexander-akait in #22352)
-
Preserve the source phase of dynamic WebAssembly import contexts. (by @bjohansebas in #22604)
-
Await every async entry before resolving an ESM library import. (by @bjohansebas in #22617)
-
Keep unknown
import.metaproperties per module, alike for aliases and direct use. (by @bjohansebas in #22618) -
Return WebAssembly modules directly from eager and weak source imports. (by @bjohansebas in #22606)
-
Handle missing ESM hot update manifests in Node.js without failing HMR checks. (by @bjohansebas in #22613)
-
Speed up JavaScript parsing: comment lookup, the tokenizer and the grammar. (by @bjohansebas in #22179)
-
Name a core module external by its key whichever spelling the code uses. (by @alexander-akait in #22565)
-
Prefix and drop 2009 flexbox names, keeping them where a box lays out by them. (by @alexander-akait in #22320)
-
Keep
initialwhere Gecko or WebKit reads the property's keyword apart. (by @aryanraj45 in #22176) -
Fold
calc()as lightningcss does, keeping it where a bare value is refused. (by @aryanraj45 in #22205) -
Keep a
color-mix()whose hue rests on a gray's conversion residue. (by @alexander-akait in #22198) -
Keep a shorthand's initial keyword where it parts two keywords of another slot. (by @dependabot in #22518)
-
Group
lib/andlib/dependencies/sources into directories. (by @alexander-akait in #22118) -
Treat a browserslist target given at a bare major version (e.g.
safari 10) as<major>.0when a feature's first supported version is a[major, minor]pair, so it is no longer reported as unsupported. (by @Eshiv-Pandey in #22280) -
Keep the last HMR update with
output.clean; stop rechecking removed files. (by @alexander-akait in #22339) -
Read and print a CSS backslash as the spec does, and a NUL as U+FFFD. (by @alexander-akait in #22201)
-
Make minified CSS and HTML stable on a second pass, even for truncated input. (by @alexander-akait in #22290)
-
Minify a merged
<style>run as one sheet, closing each where its input ended. (by @alexander-akait in #22302) -
Minify JavaScript with webpack's printer under
futureDefaults,terserotherwise. (by @alexander-akait in #22217) -
Preserve
wrappedContextRegExpflags when rebuilding context request matchers. (by @Eshiv-Pandey in #22303) -
Minify CSS
@supports,@importand@custom-mediaconditions, and exponent numbers. (by @alexander-akait in #22347) -
Fold unitless
hsl()/hwb()channels, and only where the separators are valid. (by @alexander-akait in #22242) -
Split
@valueimports on thefromkeyword, not a substring in the path. (by @Eshiv-Pandey in #22306) -
Destructure a dotted
DefinePluginkey whose value is falsy or a runtimeValue. (by @alexander-akait in #22215) -
Make
Stats.hasErrors()read errors through theprocessErrorshook (viagetErrors()), matchinghasWarnings(), so a plugin that filters errors out of the hook is no longer contradicted byhasErrors(). (by @Eshiv-Pandey in #22281) -
Allow wrapping an external concatenated module, now asked of the module itself, and re-exporting a JSON or asset
defaultas a namespace object. (by @hai-x in #22226) -
Match
urlHintsrules written withand,or,notandglobconditions; profile hook map taps, such as resolver and parser hooks, inProfilingPlugin; reportimport.metaoption errors insiderequire.ensurecallbacks, not crash; and replaceany,objectandFunctionwith precise types in the type definitions. (by @alexander-akait in #22681) -
Reduce CSS and HTML build time and memory allocation. (by @alexander-akait in #22135)
-
Reuse free names instead of re-parsing modules for the entry IIFE rename. (by @hai-x in #22206)
-
Release each module's ast once scope-analysed, and encode each export path once. (by @alexander-akait in #22241)
-
Export a module library entry's default expression as its own binding, and keep (by @hai-x in #22227)
the export helpers where the entry is not inlined. -
Give a wrapped concatenated body the same function header as a module factory. (by @hai-x in #22254)
-
Skip reading every asset when no content hash is named. (by @alexander-akait in #22256)
-
Cut graph, cached set, lazy barrel and ESM import memory and allocations. (by @alexander-akait in #22289)
-
Stop a module source from being held as both a string and a buffer. (by @alexander-akait in #22294)
-
Read the browserslist data and options schema only when a build needs them. (by @alexander-akait in #22324)
-
Release the eval devtool's cached module sources after wrapping them. (by @alexander-akait in #22358)
-
Release the rendered module sources after emitting the chunks. (by @alexander-akait in #22365)
-
Cut the peak memory and time of minifying through webpack's printer. (by @alexander-akait in #22368)
-
Shrink minified JS: unwrap IIFEs, fold calls, drop dead code, split arrays. (by @alexander-akait in #22393)
-
Cut JavaScript minifier time and memory; keep token positions in large inputs. (by @bjohansebas in #22329)
-
Keep the
calc()around asteps()countjump-nonewould reject bare. (by @alexander-akait in #22168) -
Split the CSS syntax module into a parser file and a printer file. (by @alexander-akait in #22222)
-
Update enhanced-resolve to 5.26.0. (by @alexander-akait in #22358)
-
Update watchpack to 2.6.1. (by @alexander-akait in #22670)
-
Split the HTML syntax module into a parser file and a printer file. (by @alexander-akait in #22223)
-
Rename classes in
lib/so each says what it does and no two share a name. (by @alexander-akait in #22361) -
Keep the remote fallback index aligned with registered container externals when an
internalexternal precedes a real one. (by @Eshiv-Pandey in #22362) -
Stop a minified inlined chunk leaving a doubled
;in its<script>. (by @alexander-akait in #22370) -
Stop
mergeDistantRulesmangling rules or reorderingall, and merge more. (by @alexander-akait in #22370) -
Minify by parsing with webpack's own parser rather than terser's. (by @alexander-akait in #22397)
-
Read JavaScript with webpack's parser alone when minifying, refusing early errors. (by @alexander-akait in #22397)
-
Parse an
assert(...)call after an import with no semicolon, and a regular expression afteryieldin a generator method. (by @alexander-akait in #22406) -
Keep the private names a direct
evalreads when mangling. (by @aryanraj45 in #22412) -
Keep a class dropped for its effects where they read a private name it declares. (by @aryanraj45 in #22421)
-
Parenthesize the right side of a private
in, ayield,await, privateinor optional chain tagging a template, and aletorasyncstarting a statement or loop head, where the minifier printed code that no longer parsed or read otherwise. (by @aryanraj45 in #22437) -
Keep a name a parameter list or catch parameter reads from resolving to what the function body or catch block declares, which the minifier renamed or dropped as unused. (by @aryanraj45 in #22439)
-
Scope and export a CSS Modules
@valuethe same way whether local or imported. (by @alexander-akait in #22443) -
Keep CSS
border: noneand gradient fallbacks for units a target cannot read. (by @alexander-akait in #22567) -
Keep minified CSS safe for older browsers; drop dead fallbacks and overrides. (by @alexander-akait in #22696)
-
Keep CSS rules apart from a neighbor whose selector no browser parses. (by @alexander-akait in #22634)
-
Keep an
:nth-*()argument with a space after its sign as written. (by @alexander-akait in #22700) -
Keep minified CSS readable by browsers the compat data does not cover. (by @alexander-akait in #22701)
-
Keep a module its chunk still needs after
compilation.rebuildModule(). (by @alexander-akait in #22705) -
Keep a CSS rule nested under a selector opening on a combinator when lowering. (by @alexander-akait in #22707)
-
Use module paths for webpack's built-in minimizers so parallel minification can load them directly in workers instead of serializing their function sources. (by @xiaoxiaojx in #22309)
-
Keep stats from an earlier build readable after a later build no longer has one of their modules. (by @alexander-akait in #22695)