Menu

#1336 feat(runner-playwright): update dependency webpack to v5.108.4

open
nobody
None
3 days ago
2026-04-12
Anonymous
No

Originally created by: renovate[bot]
Originally owned by: luifr10

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
webpack 5.105.45.108.4 age confidence

Release Notes

webpack/webpack (webpack) ### [<[inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51084](https://github.com/inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51084)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.108.3...v5.108.4) ##### Patch Changes - Speed up non-CSS-Modules parsing by not building unused selector AST nodes. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21324](https://redirect.github.com/webpack/webpack/pull/21324)) - Speed up non-CSS-Modules CSS parsing by dropping value tokens nothing reads. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21324](https://redirect.github.com/webpack/webpack/pull/21324)) - Resolve HTML asset URLs against the document `<base href="">`. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21329](https://redirect.github.com/webpack/webpack/pull/21329)) - Add HTML integration tests: generateError output, ignored src, null-char parse. (by [@​aryanraj45](https://redirect.github.com/aryanraj45) in [#​21328](https://redirect.github.com/webpack/webpack/pull/21328)) - Reduce CPU and memory overhead of HTML and CSS parsing and code generation. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21332](https://redirect.github.com/webpack/webpack/pull/21332)) - Reduce HTML parser memory and CPU by skipping unused AST nodes. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21323](https://redirect.github.com/webpack/webpack/pull/21323)) - Reduce HTML parser memory by storing the AST in struct-of-arrays form. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21331](https://redirect.github.com/webpack/webpack/pull/21331)) - Key the provided-exports cache on a lazy barrel's still-lazy re-export targets. (by [@​hai-x](https://redirect.github.com/hai-x) in [#​21326](https://redirect.github.com/webpack/webpack/pull/21326)) - Default `output.globalObject` to `globalThis` for universal targets. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21314](https://redirect.github.com/webpack/webpack/pull/21314)) - Pass through `new URL(...)` directory references instead of resolving them. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21312](https://redirect.github.com/webpack/webpack/pull/21312)) ### [<[inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51083](https://github.com/inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51083)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.108.2...v5.108.3) ##### Patch Changes - Speed up CSS parsing and reduce CSS AST node memory. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21285](https://redirect.github.com/webpack/webpack/pull/21285)) - Fix HMR codegen crash for harmony accept with unresolved imports. (by [@​xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#​21302](https://redirect.github.com/webpack/webpack/pull/21302)) - Match harmony accept dependencies by module reference so HMR codegen handles imports without a module or chunk id. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21303](https://redirect.github.com/webpack/webpack/pull/21303)) ### [<[inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51082](https://github.com/inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51082)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.108.1...v5.108.2) ##### Patch Changes - Fix lazy barrel deferral of ungrouped side-effect imports. (by [@​hai-x](https://redirect.github.com/hai-x) in [#​21291](https://redirect.github.com/webpack/webpack/pull/21291)) - Respect the `node:` prefix for node.js core modules used as externals. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21286](https://redirect.github.com/webpack/webpack/pull/21286)) ### [<[inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51081](https://github.com/inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51081)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.108.0...v5.108.1) ##### Patch Changes - Fix invalid property access for escaped namespace imports with multi-character mangled export names. (by [@​xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#​21280](https://redirect.github.com/webpack/webpack/pull/21280)) - Add frames to ProfilingPlugin TracingStartedInBrowser event so the trace loads in Chrome DevTools. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21269](https://redirect.github.com/webpack/webpack/pull/21269)) ### [<[inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51080](https://github.com/inline_block>0](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51080)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.107.2...v5.108.0) ##### Minor Changes - Treat top-level await and `import.meta` as ES module markers, matching Node.js syntax detection so no explicit module type is needed. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21218](https://redirect.github.com/webpack/webpack/pull/21218)) - Add a `bun` target that emits ESM and externalizes `bun:*` and node.js built-in modules. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21248](https://redirect.github.com/webpack/webpack/pull/21248)) - Support CommonJS reexports via `Object.defineProperty` value and getter descriptors. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21129](https://redirect.github.com/webpack/webpack/pull/21129)) - Support JSON Schema `const` when generating CLI flags from a schema. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21087](https://redirect.github.com/webpack/webpack/pull/21087)) - Support JSON Schema `if`/`then`/`else` when generating CLI flags from a schema. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21087](https://redirect.github.com/webpack/webpack/pull/21087)) - Skip import specifiers, `require()` and `import()` calls in dead conditional branches gated by inlined imported constants (`isDEV ? A : B`), evaluated via `getCondition`. (by [@​hai-x](https://redirect.github.com/hai-x) in [#​21136](https://redirect.github.com/webpack/webpack/pull/21136)) - CSS `localIdentName` `[hash]` now resolves to the local ident hash (matching css-loader); use `[modulehash]` for the module hash. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21259](https://redirect.github.com/webpack/webpack/pull/21259)) - Add CSS parser `as` option and resolve `url()` inside HTML `style` attributes. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21157](https://redirect.github.com/webpack/webpack/pull/21157)) - Add dedicated module classes for all built-in module types. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21164](https://redirect.github.com/webpack/webpack/pull/21164)) - Support `.html`/`.css` for the default `./src` entry under the html/css experiments. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21039](https://redirect.github.com/webpack/webpack/pull/21039)) - Add `defineConfig` helper for typed configuration files. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21169](https://redirect.github.com/webpack/webpack/pull/21169)) - Add a `deno` target (with versions, e.g. `deno`, `deno2`, `deno1.40`) that emits ESM, resolves node.js built-ins via the required `node:` specifier, and keeps Deno's own import protocols (`npm:`, `jsr:`, `node:`, `http(s)://`) external. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21247](https://redirect.github.com/webpack/webpack/pull/21247)) - Use `module-import` for electron externals when the target supports ESM. (by [@​alexander-akait](https://redirect.github.com/alexander-akait) in [#​21184](https://redirect.github.com/webpack/webpack/pull/21184)) - Add `output.environment.logicalAssignment` to emit `||=` in runtime code when the target supports logical assignment operators. (by [@​bjohansebas](https://redirect.github.com/bjohansebas) in [#​21219](https://redirect.github.com/webpack/webpack/pull/21219)) - Resolve and rewrite asset URLs inside `<iframe srcdoc="">` in HTML modules. (by [@&#8203;bjohansebas](https://redirect.github.com/bjohansebas) in [#&#8203;21226](https://redirect.github.com/webpack/webpack/pull/21226)) - Add HMR support for HTML modules with body/title DOM patching on update. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21011](https://redirect.github.com/webpack/webpack/pull/21011)) - Add `css-url` html source type extracting `url()` references from CSS-valued attributes. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21250](https://redirect.github.com/webpack/webpack/pull/21250)) - Add `module.parser.html.sources` option to disable or customize URL-attribute extraction for HTML modules, with `script` / `script-module` / `stylesheet` / `stylesheet-inline` types for custom attributes (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21022](https://redirect.github.com/webpack/webpack/pull/21022)) - Add `module.parser.html.template` option to transform HTML module source before parsing. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21055](https://redirect.github.com/webpack/webpack/pull/21055)) - Extract more source URLs in HTML modules (SVG, legacy and obsolete attributes). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21241](https://redirect.github.com/webpack/webpack/pull/21241)) - Inline `export default <const>` when the default-exported value is a primitive constant. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21189](https://redirect.github.com/webpack/webpack/pull/21189)) - Support `optimization.inlineExports` for better tree-shaking. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;20973](https://redirect.github.com/webpack/webpack/pull/20973)) - Re-encode inline hash digests (`[contenthash]`/`[chunkhash]`/`[fullhash]`/`[modulehash]`) from the full content hash, so they carry full entropy and work under `optimization.realContentHash` and in dynamically-loaded chunk filenames; also preserve leading zero bytes in base-N digests. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21267](https://redirect.github.com/webpack/webpack/pull/21267)) - Allow tree-shaking unused calls to `/*#__NO_SIDE_EFFECTS__*/`-annotated (pure) exports across module boundaries. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;20907](https://redirect.github.com/webpack/webpack/pull/20907)) - Defer building unused re-export targets of side-effect-free barrel modules. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21165](https://redirect.github.com/webpack/webpack/pull/21165)) - Keep export mangling enabled for modules whose namespace object is used as a whole value, by materializing a decoupled namespace object that keeps the original export names. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21234](https://redirect.github.com/webpack/webpack/pull/21234)) - Add `output.environment.let` option (paired with target's `let` capability) and emit `let`/`const` instead of `var` in generated runtime code wherever it is safe. Bindings that may be wrapped in runtime-condition `if` blocks (harmony imports, ConcatenatedModule external imports) continue to use `var` to preserve function scoping. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21010](https://redirect.github.com/webpack/webpack/pull/21010)) - Add `output.html` to emit an HTML file per entrypoint, injecting its JS/CSS chunks (including `dependOn` shared chunks). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21215](https://redirect.github.com/webpack/webpack/pull/21215)) - Add `module.parser.javascript.pureFunctions` to mark top-level names as side-effect-free for tree shaking. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21063](https://redirect.github.com/webpack/webpack/pull/21063)) - Add `universal` to `compiler.platform`, true for universal targets (`"universal"` or `["web", "node"]`). (by [@&#8203;bjohansebas](https://redirect.github.com/bjohansebas) in [#&#8203;21252](https://redirect.github.com/webpack/webpack/pull/21252)) - Add `output.strictModuleResolution` to gate the runtime `MODULE_NOT_FOUND` guard. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21067](https://redirect.github.com/webpack/webpack/pull/21067)) - Support an inline digest in hash path placeholders, e.g. `[contenthash:base64:8]`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21259](https://redirect.github.com/webpack/webpack/pull/21259)) - Support `[uniqueName]` and its `[uniquename]` alias in template paths. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21155](https://redirect.github.com/webpack/webpack/pull/21155)) - Support CSS in Node for universal targets, collecting styles for SSR. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21208](https://redirect.github.com/webpack/webpack/pull/21208)) - Improve commonjs, node-commonjs and global externals for universal targets. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21187](https://redirect.github.com/webpack/webpack/pull/21187)) - Add a `universal` target preset (browser + web worker + Node.js + Electron + NW\.js) that always outputs ECMAScript modules. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21214](https://redirect.github.com/webpack/webpack/pull/21214)) - Support `new Worker(new URL(...))` in universal (node + web) targets by resolving the Worker constructor from `worker_threads` when no global `Worker` exists. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21195](https://redirect.github.com/webpack/webpack/pull/21195)) - Add `output.workerChunkFilename` and `entry.worker` for worker chunk filenames. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21128](https://redirect.github.com/webpack/webpack/pull/21128)) ##### Patch Changes - Skip re-parsing the inlined entry module when no renaming is needed. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21167](https://redirect.github.com/webpack/webpack/pull/21167)) - Extend the avoidEntryIife no-parse fast path to multi-entry chunks. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21173](https://redirect.github.com/webpack/webpack/pull/21173)) - Reuse the binary deserialize dispatch table to speed up cache restore. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21175](https://redirect.github.com/webpack/webpack/pull/21175)) - Type `buildInfo` and `buildMeta` per module type with shared common properties. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21172](https://redirect.github.com/webpack/webpack/pull/21172)) - Avoid copying module runtime requirements when ownership is not transferred. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21140](https://redirect.github.com/webpack/webpack/pull/21140)) - Keep all CommonJS exports when an exported function accesses them via `this`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21179](https://redirect.github.com/webpack/webpack/pull/21179)) - Align CLI color-support detection across Node, Deno and Bun. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21257](https://redirect.github.com/webpack/webpack/pull/21257)) - Include the schema origin path in conflicting-schema CLI argument errors. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21087](https://redirect.github.com/webpack/webpack/pull/21087)) - Reject `__proto__`, `constructor` and `prototype` path segments in `cli.processArguments` to prevent prototype pollution. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21057](https://redirect.github.com/webpack/webpack/pull/21057)) - Speed up `Compilation.deleteAsset` and `Compilation.renameAsset` via a lazy reverse index from asset file name to containing chunks. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21035](https://redirect.github.com/webpack/webpack/pull/21035)) - Fix merging of inner modules' top-level declarations in concatenated modules. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21170](https://redirect.github.com/webpack/webpack/pull/21170)) - Reduce allocations in export hashing and concatenation name lookups. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21167](https://redirect.github.com/webpack/webpack/pull/21167)) - Avoid toLowerCase allocations in CSS keyword comparisons. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21109](https://redirect.github.com/webpack/webpack/pull/21109)) - Speed up CSS identifier escaping with a char-class lookup table. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21109](https://redirect.github.com/webpack/webpack/pull/21109)) - Resolve `[fullhash]` in `url()` public paths for inlined CSS export types (`style`/`text`/`css-style-sheet`) at runtime. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21054](https://redirect.github.com/webpack/webpack/pull/21054)) - Avoid quadratic line scan when building CSS module exports source maps. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21109](https://redirect.github.com/webpack/webpack/pull/21109)) - Compute CSS comment source locations lazily. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21109](https://redirect.github.com/webpack/webpack/pull/21109)) - Support inline hash digest and length in CSS module `localIdentName` placeholders. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21259](https://redirect.github.com/webpack/webpack/pull/21259)) - Resolve full CSS escapes (including hex) in CSS-Modules names, so e.g. `\75 rl()` matches `url()`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21196](https://redirect.github.com/webpack/webpack/pull/21196)) - Reduce CSS parser CPU (hoisted per-call regexes, byte-compared `@container` pure-mode keywords) and stop retaining parsed comments on the reused parser instance between modules. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21202](https://redirect.github.com/webpack/webpack/pull/21202)) - Reduce CSS build time and memory usage. Per-export CSS dependencies are consolidated into one dependency per module, and hot-path allocations and lookups in CSS code generation and the module-graph cache are trimmed. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21114](https://redirect.github.com/webpack/webpack/pull/21114)) - Cache CSS public-path placeholder offsets per module source to avoid re-materializing and re-scanning the source on every render. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21054](https://redirect.github.com/webpack/webpack/pull/21054)) - Fix CSS tokenizer infinite loops and dropped tokens on malformed input. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21102](https://redirect.github.com/webpack/webpack/pull/21102)) - Speed up CSS identifier unescaping with bulk run flushing. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21109](https://redirect.github.com/webpack/webpack/pull/21109)) - Skip already-visited symlink targets when resolving context hashes so cyclic symlink graphs no longer overflow the queue. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21088](https://redirect.github.com/webpack/webpack/pull/21088)) - Resolve `DefinePlugin` access to an undefined object member as `undefined`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21040](https://redirect.github.com/webpack/webpack/pull/21040)) - Avoid materializing dependency source locations when sorting, keeping them lazy to reduce build time and memory. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21228](https://redirect.github.com/webpack/webpack/pull/21228)) - Speed up serialization deserialize by replacing a Buffer.isBuffer call with a typeof check. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21203](https://redirect.github.com/webpack/webpack/pull/21203)) - Emit assets with absolute target paths as-is to avoid invalid Windows paths. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21223](https://redirect.github.com/webpack/webpack/pull/21223)) - Add `output.environment.spread`, `output.environment.hasOwn`, and `output.environment.symbol`, and use method shorthand, spread, `Object.hasOwn`, and an unguarded `Symbol` in generated runtime code where the environment supports it. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21188](https://redirect.github.com/webpack/webpack/pull/21188)) - Drop the unused loadScript runtime from ESM hot-update bundles. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21208](https://redirect.github.com/webpack/webpack/pull/21208)) - Extend value binding optimization to export default expressions. (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;21117](https://redirect.github.com/webpack/webpack/pull/21117)) - Reduce ExportInfo memory and cache size for inline-exports metadata. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21171](https://redirect.github.com/webpack/webpack/pull/21171)) - Resolve nested exports info paths iteratively to cut per-level array allocations. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21137](https://redirect.github.com/webpack/webpack/pull/21137)) - Fix stale incremental cache for css, html and asset/source/inline modules. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21108](https://redirect.github.com/webpack/webpack/pull/21108)) - CommonJS tree-shaking no longer drops exports accessed before a deferred require binding. (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;21123](https://redirect.github.com/webpack/webpack/pull/21123)) - Make CSS-referenced asset available in lazy JS chunk during incremental rebuilds. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21100](https://redirect.github.com/webpack/webpack/pull/21100)) - Correct string/template import specifier parsing for filesystem cache build dependencies and fix module-sharing hostname validation. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21232](https://redirect.github.com/webpack/webpack/pull/21232)) - perf: guard isDeferred() behind experiments.deferImport in ConcatenatedModule (by [@&#8203;shashank-u03](https://redirect.github.com/shashank-u03) in [#&#8203;21096](https://redirect.github.com/webpack/webpack/pull/21096)) - Speed up deterministicGrouping and cached comparators on large builds. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21197](https://redirect.github.com/webpack/webpack/pull/21197)) - Reduce allocations on harmony/commonjs dependency hot paths. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21180](https://redirect.github.com/webpack/webpack/pull/21180)) - Force-load a module's new owning chunk during HMR when its only loaded chunk is removed from a runtime, so it keeps receiving updates. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21131](https://redirect.github.com/webpack/webpack/pull/21131)) - Fix HTML parser adoption agency to handle a `nobr` shielded by a marker. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21274](https://redirect.github.com/webpack/webpack/pull/21274)) - Expand HTML parser tag/attribute coverage and decode character references. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21159](https://redirect.github.com/webpack/webpack/pull/21159)) - Speed up and reduce allocations in the experimental HTML parser's tokenizer, tree builder, and entity decoder. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21152](https://redirect.github.com/webpack/webpack/pull/21152)) - Speed up the experimental HTML parser and reduce its memory usage. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21130](https://redirect.github.com/webpack/webpack/pull/21130)) - Avoid redundant HTML module work: reuse the dependency-template render across the JS and HTML code-generation passes, and memoize sentinel resolution/content hashing per source. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21054](https://redirect.github.com/webpack/webpack/pull/21054)) - Release inner-graph state after use and speed up inlined-export checks. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21167](https://redirect.github.com/webpack/webpack/pull/21167)) - Reduce JavascriptParser allocations on the walk hot path to speed up parsing and lower memory usage. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21139](https://redirect.github.com/webpack/webpack/pull/21139)) - Reduce CPU and memory overhead of the lazy barrel optimization. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21213](https://redirect.github.com/webpack/webpack/pull/21213)) - Keep the error message in module build errors on engines whose `Error.stack` omits it. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21239](https://redirect.github.com/webpack/webpack/pull/21239)) - Speed up module concatenation by caching repeated per-module computations. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21115](https://redirect.github.com/webpack/webpack/pull/21115)) - Move the `hot` flag from `Module` to `NormalModule`, where it's actually read and written. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21028](https://redirect.github.com/webpack/webpack/pull/21028)) - Move the `weak` flag from `Dependency` to `ModuleDependency`, where it's actually set. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21111](https://redirect.github.com/webpack/webpack/pull/21111)) - Avoid the entry IIFE for multiple inlined entry modules by renaming collisions. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21151](https://redirect.github.com/webpack/webpack/pull/21151)) - Reject `new import.defer(...)`/`new import.source(...)` with member access as a SyntaxError. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21211](https://redirect.github.com/webpack/webpack/pull/21211)) - Avoid `ProvidePlugin` injection for local CommonJS require bindings that use the same variable name. (by [@&#8203;fireairforce](https://redirect.github.com/fireairforce) in [#&#8203;21041](https://redirect.github.com/webpack/webpack/pull/21041)) - Resolve the global `new Worker(new URL(...))` to `worker_threads` on the `node` target. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21217](https://redirect.github.com/webpack/webpack/pull/21217)) - Use optional chaining in generated runtime code where the environment supports it. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21186](https://redirect.github.com/webpack/webpack/pull/21186)) - Allow output.path to be the filesystem root by treating EISDIR like EEXIST in mkdirp. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21223](https://redirect.github.com/webpack/webpack/pull/21223)) - Reduce memory by not retaining the source location object on every dependency. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21183](https://redirect.github.com/webpack/webpack/pull/21183)) - Keep the full exports object when a `require()` binding is re-exported. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21144](https://redirect.github.com/webpack/webpack/pull/21144)) - Replace glob-to-regexp dependency with watchpack's globToRegExp utility. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21176](https://redirect.github.com/webpack/webpack/pull/21176)) - Shrink the persistent cache: add a NULL\_AND\_I16 binary tier and inline tiny strings instead of larger far back-references. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;21210](https://redirect.github.com/webpack/webpack/pull/21210)) - Type serializer read/write contexts with positional tuples and fix a ProvideSharedDependency version/request swap. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21201](https://redirect.github.com/webpack/webpack/pull/21201)) - Speed up buildChunkGraph by deriving block modules from the first runtime. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21166](https://redirect.github.com/webpack/webpack/pull/21166)) - Cache re-export target resolution in SideEffectsFlagPlugin for faster builds. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21085](https://redirect.github.com/webpack/webpack/pull/21085)) - Skip pure single-star passthrough modules for `export *` re-exports. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21085](https://redirect.github.com/webpack/webpack/pull/21085)) - Skip dependency error/warning reporting for unchanged modules on rebuilds. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21154](https://redirect.github.com/webpack/webpack/pull/21154)) - Use value descriptors instead of getters for const export bindings. (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;21021](https://redirect.github.com/webpack/webpack/pull/21021)) - Apply CSS hot updates on the Node side of a universal target. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21217](https://redirect.github.com/webpack/webpack/pull/21217)) - Guard CSS `style` export-type injection so it no-ops when there is no `document`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21193](https://redirect.github.com/webpack/webpack/pull/21193)) - Avoid building warning stats objects when counting warnings without a filter. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21198](https://redirect.github.com/webpack/webpack/pull/21198)) - Recognize forward-slash Windows absolute paths (e.g. C:/dir) consistently. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21223](https://redirect.github.com/webpack/webpack/pull/21223)) ### [<[inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51072](https://github.com/inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51072)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.107.1...v5.107.2) ##### Patch Changes - Reduce per-file overhead in `ContextModuleFactory.resolveDependencies` by batching `alternativeRequests` hook calls. Previously the hook was invoked once per file in the context (with a single-item array), paying per-call overhead (closure allocation, `resolverFactory.get`, intermediate arrays in `RequireContextPlugin`) for every file. The hook is now invoked once per directory with all matched files in one batch — `RequireContextPlugin`'s tap already iterates the items array, so the output is unchanged. Steady-state rebuild on a 4000-file `require.context` drops a further \~15 ms (after the watch-mode purge fix in the same release). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21020](https://redirect.github.com/webpack/webpack/pull/21020)) - Include each external info's `runtimeCondition` in `ConcatenatedModule#updateHash` so changes to a concatenated external's runtime condition invalidate persistent caches instead of slipping through with the module id alone. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21023](https://redirect.github.com/webpack/webpack/pull/21023)) - Fix HTML `[contenthash]` for referenced asset and inline-style URL changes. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21018](https://redirect.github.com/webpack/webpack/pull/21018)) - Resolve chunk-hash placeholders in chunk URLs embedded into extracted HTML. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21018](https://redirect.github.com/webpack/webpack/pull/21018)) - Remove unnecessary `__webpack_require__` runtime helpers in ESM library output with multi-module chunks. (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;21032](https://redirect.github.com/webpack/webpack/pull/21032)) - Rewrite `NormalModule#getSideEffectsConnectionState` walk as an allocation-light iterative loop instead of a generator trampoline, restoring rebuild performance lost in [#&#8203;20993](https://redirect.github.com/webpack/webpack/issues/20993) while keeping deep import chains stack-safe. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21014](https://redirect.github.com/webpack/webpack/pull/21014)) - Fix runtime `ReferenceError` on the first activation of a lazy-compiled module when `output.library.type` produces a closure-wrapped bundle (`umd`, `umd2`, `amd`, `amd-require`, `system`). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21013](https://redirect.github.com/webpack/webpack/pull/21013)) External modules of these types reference closure-bound identifiers like `__WEBPACK_EXTERNAL_MODULE_react__`, supplied by the library wrapper that is generated once per chunk. When `lazyCompilation` activates an entry or import for the first time, any external dependency the lazily-built module pulls in arrives in a hot-update chunk that lives outside the original wrapper closure, so its factory body cannot resolve the closure identifier and only a manual page refresh recovers. The inactive `LazyCompilationProxyModule` now declares statically-enumerable externals (string and object forms of `externals`) as its own dependencies, so the initial entry chunk's library wrapper already exposes their closure identifiers. When activation later pulls in those externals through the lazily-compiled module, they resolve to the already-installed factories instead of throwing. Function and RegExp externals are not pre-populated because their effective request set isn't knowable up front. - Fill in missing `entryOptions` when an async block joins an existing entrypoint. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21026](https://redirect.github.com/webpack/webpack/pull/21026)) - Release per-child `codeGenerationResults` in `MultiCompiler` and at `Compiler.close` to reduce memory retention. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21015](https://redirect.github.com/webpack/webpack/pull/21015)) - Reduce peak memory of `SourceMapDevToolPlugin` on large builds (closes [#&#8203;20961](https://redirect.github.com/webpack/webpack/issues/20961)). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20963](https://redirect.github.com/webpack/webpack/pull/20963)) - Fix slow `require.context()` / dynamic `import()` rebuilds in watch mode ([#&#8203;13636](https://redirect.github.com/webpack/webpack/issues/13636)). When a file inside a watched context directory changed, `NodeWatchFileSystem` would call `inputFileSystem.purge(contextDir)`. The enhanced-resolve `purge` implementation matches cache keys with `key.startsWith(contextDir)`, so the stat cache of every file under the directory was discarded on every rebuild — `ContextModuleFactory.resolveDependencies` then re-`stat`-ed the whole tree on each rebuild. Single-file rebuilds on a 4000-file context now reuse the warm stat cache, dropping median rebuild from \~1260 ms to \~650 ms in a local reproduction (≈49%). For directory items that are explicitly watched contexts, `purge` is now called with `{ exact: true }` (added in `enhanced-resolve@5.22.0`) so only the directory's own entry is invalidated; file-level changes in the same aggregated event continue to purge file stats and the parent `readdir` as before. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21020](https://redirect.github.com/webpack/webpack/pull/21020)) ### [<[inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51071](https://github.com/inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51071)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.107.0...v5.107.1) ##### Patch Changes - Align the experimental HTML tokenizer with the WHATWG spec: fix offset-range bugs in the script-data, content-mode end-tag, attribute-value, and EOF states; surface tokenizer parse errors to consumers via a new `parseError` callback (`"warning"` when the tokenizer recovers and the emitted token is still well-formed, `"error"` when the offset range is incomplete — e.g. `eof-in-tag`); and add the full WHATWG named character references table so `decodeHtmlEntities` handles all named entities (including legacy bare forms like `&AMP` and multi-code-point entities like `&NotEqualTilde;`) with proper longest-prefix backtracking. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21000](https://redirect.github.com/webpack/webpack/pull/21000)) - Tree-shake CommonJS modules imported through a `const NAME = require(LITERAL)` binding when only static members of `NAME` are read. Previously webpack treated every export of such modules as referenced (because the bare `require()` dependency reports `EXPORTS_OBJECT_REFERENCED`), so unused `exports.x = ...` assignments remained in the bundle even with `usedExports` enabled. The parser now forwards `NAME.x` / `NAME.x()` / `NAME["x"]` accesses to the underlying `CommonJsRequireDependency` as referenced exports, falling back to the full exports object the moment `NAME` is read in any other context (passed by value, destructured later, accessed with a dynamic key, …). This brings the binding form to parity with the existing destructuring form (`const { x } = require(...)`). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21003](https://redirect.github.com/webpack/webpack/pull/21003)) - Fix `RangeError: Maximum call stack size exceeded` thrown from `HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState` on long linear chains of side-effect-free imports. `NormalModule.getSideEffectsConnectionState` previously descended through `HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState` recursively, adding two stack frames per module, which overflowed V8's stack at a few thousand modules deep. The traversal is now iterative. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20993](https://redirect.github.com/webpack/webpack/pull/20993)) - Fix `NormalModuleFactory` parser/generator types: (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20999](https://redirect.github.com/webpack/webpack/pull/20999)) - `module.generator.html` now uses `HtmlGeneratorOptions` instead of `EmptyGeneratorOptions` (the `extract` option was hidden from the `createGenerator` / `generator` hook types). - WebAssembly (`webassembly/async`, `webassembly/sync`) generator hooks now use `EmptyGeneratorOptions` instead of `EmptyParserOptions`. - `NormalModuleFactory#getParser` / `createParser` / `getGenerator` / `createGenerator` are now generic over the module-type string, returning the specific parser/generator class for known types (e.g. `JavascriptParser` for `"javascript/auto"`, `CssGenerator` for `"css"`, etc.) instead of always returning the base `Parser` / `Generator`. - `NormalModuleCreateData` is now generic over the module type so `parser`, `parserOptions`, `generator`, and `generatorOptions` are narrowed to the specific class / options for the given `type`. - Link import bindings used inside `define(...)` callbacks in ES modules. Previously, `HarmonyDetectionParserPlugin` skipped walking the arguments of `define` calls in harmony modules, so references to imported bindings inside an inline AMD `define` factory (e.g. `define(function () { console.log(foo); })`) were not rewritten to their imported references and could cause `ReferenceError` at runtime. Inner graph usage analysis is also fixed for the related pattern `const fn = function () { foo; }; define(fn);`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20990](https://redirect.github.com/webpack/webpack/pull/20990)) - HTML-entry pipeline (`experiments.html` + `experiments.css`): emit `<link rel="stylesheet">` tags for CSS chunks reachable from a `<script src>` entry. Previously when the bundled JS imported CSS, the resulting `.css` file was emitted to disk but never referenced from the extracted HTML (no `<link>` tag), and when `splitChunks` extracted CSS into sibling chunks the HTML cloned the originating `<script>` for each one — producing `<script src="style.js">` pointing at non-existent JS filenames instead of `<link rel="stylesheet" href="style.css">`. CSS chunks are now sorted by the entrypoint's module post-order index so the `<link>` tags also appear in source import order, fixing the cascade ordering issue documented in `html-webpack-plugin#1838` and `webpack/mini-css-extract-plugin#959` for HTML-entry builds. `nonce`/`crossorigin`/`referrerpolicy` are copied from the originating tag onto the emitted `<link>`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21002](https://redirect.github.com/webpack/webpack/pull/21002)) - Allow `devtool` and `SourceMapDevToolPlugin` (or multiple `SourceMapDevToolPlugin` instances) to coexist on the same asset. Previously the second instance would silently skip any asset whose `info.related.sourceMap` had already been set by an earlier instance, and even when it ran the asset had been rewrapped as a `RawSource` so no source map could be recovered — producing an empty `.map` file. The plugin now keeps a per-compilation stash of pristine source maps, namespaces its persistent cache entries by the options that affect output, and appends additional `related.sourceMap` entries instead of overwriting them. The classic workaround of pairing `devtool: 'hidden-source-map'` with a `new webpack.SourceMapDevToolPlugin({ filename: '[file].secondary.map', noSources: true })` now produces both maps in a single build. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21001](https://redirect.github.com/webpack/webpack/pull/21001)) - Narrow `TemplatePathFn` callback types by context. `pathData.chunk` is now non-optional for chunk filename callbacks (`output.filename`, `chunkFilename`, `cssFilename`, `cssChunkFilename`, `htmlFilename`, `htmlChunkFilename`, `optimization.splitChunks.cacheGroups[*].filename`), and `pathData.module` is non-optional for module filename callbacks (`output.assetModuleFilename`, per-module `generator.filename` / `generator.outputPath`, `module.parser.css.localIdentName`). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20987](https://redirect.github.com/webpack/webpack/pull/20987)) - Tighten the `CreateData` typedef in `NormalModuleFactory`. `CreateData` now represents the fully-populated value passed to the `createModule`, `module`, and `createModuleClass` hooks (`NormalModuleCreateData & { settings: ModuleSettings }`), while `ResolveData.createData` is typed as `Partial<CreateData>` to reflect the empty initial state. Plugins tapping those hooks no longer need to cast individual fields away from optional. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20992](https://redirect.github.com/webpack/webpack/pull/20992)) - Stop `webpackPrefetch` / `webpackPreload` magic comments from leaking across `import()` call sites that share a `webpackChunkName`. When two imports targeted the same named chunk and only one of them set `webpackPrefetch: true`, the prefetch directive was applied from every parent chunk that referenced the named chunk. Prefetch and preload orders are now resolved per `import()` call site instead of from the shared chunk group's accumulated options. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20994](https://redirect.github.com/webpack/webpack/pull/20994)) - Fix `[fullhash:N]` and `[hash:N]` (with length suffix) in `output.publicPath` not being interpolated at runtime. The detection regex in `RuntimePlugin` only matched `[fullhash]` / `[hash]` without a length suffix, so the `PublicPathRuntimeModule` was not flagged as a full-hash module and `__webpack_require__.p` was emitted with the placeholder `XXXX` left in place (e.g. `out/XXXX/`) instead of the real hash truncated to the requested length. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;21004](https://redirect.github.com/webpack/webpack/pull/21004)) - Re-export `ModuleNotFoundError` from `webpack/lib/ModuleNotFoundError` for backward compatibility with old plugins that import it from that path. This re-export will be removed in webpack 6. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20988](https://redirect.github.com/webpack/webpack/pull/20988)) ### [<[inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51070](https://github.com/inline_block>0</inline_block>](https://redirect.github.com/webpack/webpack/blob/HEAD/CHANGELOG.md/issues/51070)) [Compare Source](https://redirect.github.com/webpack/webpack/compare/v5.106.2...v5.107.0) ##### Minor Changes - Add `module.generator.javascript.anonymousDefaultExportName` option to control whether webpack sets `.name` to `"default"` for anonymous default export functions and classes per ES spec. Defaults to `true` for applications and `false` for libraries (when `output.library` is set) to avoid unnecessary bundle size overhead. Also extract anonymous default export `.name` fix-up into a shared runtime helper (`__webpack_require__.dn`), replacing repeated inline `Object.defineProperty` / `Object.getOwnPropertyDescriptor` calls with a single short call per module to reduce output size. (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;20894](https://redirect.github.com/webpack/webpack/pull/20894)) - Support module concatenation (scope hoisting) for CSS modules with `text`, `css-style-sheet`, `style`, and `link` export types (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;20851](https://redirect.github.com/webpack/webpack/pull/20851)) - The `generator.exportsConvention` function form for CSS modules now accepts `string[]` in addition to `string`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20914](https://redirect.github.com/webpack/webpack/pull/20914)) - Add `linkInsert` hook to `CssLoadingRuntimeModule.getCompilationHooks(compilation)` so plugin developers can control where stylesheet `<link>` elements are inserted into the document. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20947](https://redirect.github.com/webpack/webpack/pull/20947)) - Add `CssModulesPlugin.getCompilationHooks(compilation).orderModules` hook. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20978](https://redirect.github.com/webpack/webpack/pull/20978)) - Add a `pure` parser option for `css/module` and `css/auto` types matching `postcss-modules-local-by-default`'s pure mode: every selector must contain at least one local class or id, otherwise webpack emits a build error. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20946](https://redirect.github.com/webpack/webpack/pull/20946)) - Support CSS Modules `@value` identifiers as `@import` URLs and inside `url()` functions, e.g. `@value path: "./other.css"; @&#8203;import path;` and `@value bg: "./image.png"; .a { background: url(bg); }` (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20925](https://redirect.github.com/webpack/webpack/pull/20925)) - Add experimental TypeScript support via `experiments.typescript: true` (auto-enabled by `experiments.futureDefaults`). Uses Node.js's built-in `module.stripTypeScriptTypes` (Node.js >= 22.6 with the stable `mode: "strip"` API, including Node.js 26) to transform `.ts`, `.cts`, `.mts`, `data:text/typescript`, and `data:application/typescript` modules — no type checking, only erasable TypeScript (types, generics, `import type`, casts). `.tsx`/JSX and non-erasable syntax (`enum`, `namespace`, parameter-property constructors, decorator metadata) are NOT supported; use a TSX-capable loader (e.g. `ts-loader`, `swc-loader`) for those. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20964](https://redirect.github.com/webpack/webpack/pull/20964)) - Added an `experiments.html` flag that reserves the `html` module type for the first-class HTML entry-point support. (by [@&#8203;aryanraj45](https://redirect.github.com/aryanraj45) in [#&#8203;20902](https://redirect.github.com/webpack/webpack/pull/20902)) - Preserve `defer` / `source` import phase keywords on external dependencies in ESM output, the same way import attributes are preserved. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20934](https://redirect.github.com/webpack/webpack/pull/20934)) - Support the `#__NO_SIDE_EFFECTS__` annotation to mark functions as pure for better tree-shaking. (by [@&#8203;hai-x](https://redirect.github.com/hai-x) in [#&#8203;20775](https://redirect.github.com/webpack/webpack/pull/20775)) - Add `module.generator.html.extract` for HTML modules and the matching `output.htmlFilename` / `output.htmlChunkFilename` filename templates (defaults derived from `output.filename` / `output.chunkFilename` with `.js` swapped for `.html`, mirroring the CSS pipeline). When extraction is on, the parsed and URL-rewritten HTML is emitted as a standalone `.html` output file alongside the module's JavaScript export. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20979](https://redirect.github.com/webpack/webpack/pull/20979)) - Add `"module-sync"` to default `conditionNames` for resolver defaults to align with Node.js, which exposes the `module-sync` community condition for synchronously-loadable ESM. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20933](https://redirect.github.com/webpack/webpack/pull/20933)) ##### Patch Changes - Fix CSS modules `composes` so `composes: foo from "./self.module.css"` from inside `self.module.css` no longer creates a duplicate module instance. Fix CSS modules `composes` parsing so `local()` and `global()` function wrappers are tracked per class name. Fix CSS modules `composes: ... from "<file>"` so the composed files load in an order consistent with every rule's local composes order, instead of source first-appearance order. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20929](https://redirect.github.com/webpack/webpack/pull/20929)) - Avoid emitting the `__webpack_require__` runtime in CSS bundles when all imported CSS modules were concatenated into the same scope. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20936](https://redirect.github.com/webpack/webpack/pull/20936)) - Recompute the CSS chunk's `[contenthash]` and the rendered CSS bytes when an asset referenced by `url()`/`src()`/string in CSS changes its hashed filename. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20938](https://redirect.github.com/webpack/webpack/pull/20938)) - Embed an inline `sourceMappingURL` data URI inside the CSS when the `parser.exportType` option are `text`, `style`, or `css-style-sheet`. Also merge `@import`ed CSS at build time for `text` and `css-style-sheet` exportTypes so the bundle ships a single accurate inline source map covering every contributing file. Map each generated CSS-module class export line in the JS bundle back to its selector position in the original CSS file (e.g. `btn: "..."` → `.btn { ... }`). (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20886](https://redirect.github.com/webpack/webpack/pull/20886)) - Fix CSS modules deduplication so a `.module.<ext>` file imported both directly (JS) and via icss (`composes from` / `:import`) becomes a single module instance. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20929](https://redirect.github.com/webpack/webpack/pull/20929)) - Preserve `@charset` at-rule when CSS modules use `exportType: "text"`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20912](https://redirect.github.com/webpack/webpack/pull/20912)) - Resolve `[hash]`/`[fullhash]` placeholders in `output.publicPath` when generating `url()` references for `experiments.css`. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20879](https://redirect.github.com/webpack/webpack/pull/20879)) - Fix HMR for concatenated CSS modules with `style` exportType by using stable per-module identifiers for injected style elements and tracking inner module IDs of concatenated modules in HMR records (by [@&#8203;xiaoxiaojx](https://redirect.github.com/xiaoxiaojx) in [#&#8203;20911](https://redirect.github.com/webpack/webpack/pull/20911)) - Fix CSS Modules `@value` resolution when the same local name is imported from multiple modules. (by [@&#8203;alexander-akait](https://redirect.github.com/alexander-akait) in [#&#8203;20940](https://redirect.github.com/webpack/webpack/pull/20940)) - Fix `typeof ns.default` / `ns.default instanceof X` on a static `import defer * as ns from "./mod"` for `default-only` and `default-with-named` external modules under `optimization.concatenateModules`. The concatenated-module rewrite was collapsing `ns.default` to the deferred-namespace p > ✂ **Note** > > PR body was truncated to here. </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Paris) - Branch creation - "every weekend" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/e2e-test-quest/uuv). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> </iframe>

Discussion

  • Anonymous

    Anonymous - 2026-04-12
     
  • Anonymous

    Anonymous - 2026-04-12
     

Log in to post a comment.

Auth0 Logo