Update dependency webpack to v5.112.2 #27

Open
renovate wants to merge 1 commit from renovate/webpack-5.x-lockfile into main
Collaborator

This PR contains the following updates:

Package Change Age Confidence
webpack 5.52.0 → 5.112.2 age confidence

Release Notes

webpack/webpack (webpack)

v5.112.2

Compare Source

Patch Changes

v5.112.1

Compare Source

Patch Changes

v5.112.0

Compare Source

Minor Changes
Patch Changes

v5.111.1

Compare Source

Patch Changes

v5.111.0

Compare Source

Minor Changes
Patch Changes

v5.110.3

Compare Source

Patch Changes

v5.110.2

Compare Source

Patch Changes

v5.110.1

Compare Source

Patch Changes

v5.110.0

Compare Source

Minor Changes
  • Wrap concatenated modules in lazy __webpack_require__.cw accessors and inline require(), keeping a wrapped body's names and side effects intact. (by @​hai-x in #​21519)

  • Add performance hints reporting what a build costs: duplicate packages and modules, circular dependencies, broad contexts, large modules and chunks, hotspots, eval, missing PURE annotations, polyfills, redundant dynamic imports, OS-dependent rules, cache effectiveness, how chunks load, what splitting refused, why an optimization was skipped, and rules, defines, externals, aliases and barrel reexports nothing uses. An oversized asset names its largest modules, and an entrypoint carrying the runtime recommends optimization.runtimeChunk. Enable every check not set individually with performance.all, report hints in stats only with performance.hints: "stats", and get them in a stable order that leaves the build hashes unchanged. (by @​alexander-akait in #​21841)

  • Add the descriptionRelativePath module rule condition. (by @​alexander-akait in #​21705)

  • Add OS-independent glob matching to module rules. (by @​alexander-akait in #​21771)

  • Report inner-graph, AMD and bare module bailouts in optimizationBailout. (by @​alexander-akait in #​21740)

  • Allow marking externals as side-effect-free with a sideEffects flag. (by @​alexander-akait in #​21712)

  • Give externals the original request of a context module element. (by @​alexander-akait in #​21780)

  • Add the externalsPresets.nodeModules preset with an allowlist option to externalize installed packages, replacing the webpack-node-externals plugin. (by @​alexander-akait in #​21569)

  • Add output.library.umdAmdContainer for an AMD-style loader branch in UMD. (by @​hai-x in #​21770)

  • Resolve @custom-media values that are true / false or name another custom media. (by @​alexander-akait in #​21624)

  • Add the __webpack_css_server_styles__ module variable to read the CSS collected while rendering without a DOM, and keep that CSS in the order the styles were applied. (by @​alexander-akait in #​21576)

  • Patch the HTML <head> in place on hot update instead of forcing a full reload, including when a <script> that never executed is removed. (by @​alexander-akait in #​21624)

  • Scope counter names in CSS modules; fix the counter() counter-style and animation timeline keywords. (by @​alexander-akait in #​21600)

  • Derive import defer / import source from the target and fix the source phase. (by @​alexander-akait in #​21810)

  • Emit analyzable ESM urls for chunks, assets, styles, workers and wasm. (by @​alexander-akait in #​21788)

  • Tree shake CommonJS: module.exports object literals, exports destructured from a require() binding, unused method requires, and unused side-effect-free require() calls and reexports. (by @​alexander-akait in #​21841)

  • Resolve relative entry baseUri values and bake one side of a hash cycle. (by @​alexander-akait in #​21750)

  • Minify CSS further, only where the document is unchanged: shorthands and box longhands, font-weight, <position> and font-stretch keywords, colors (polar, Lab and hsl() converted to hex), numbers, times, zero units, calc() and every math function the spec names folded over constants, selector lists, An+B, keyframe selectors, media-feature ranges, unicode-range, transition layers, display, transforms, gradients, font families, identical repeated declarations, and rules an identical later one makes dead. Abilities are read off the target browsers, vendorPrefixes adds and drops vendor prefixes for them, and rewriteCustomProperties shortens custom property values. Minification never changes whether a declaration parses, and beautifying keeps every rule. (by @​alexander-akait in #​21841)

  • Safely minify CSS (with source maps) and HTML assets when optimization.minimize is enabled, unless a minimizer is already configured for them, making only transformations an engine cannot tell apart. Every rewrite is named as an option, so it can be switched off. (by @​alexander-akait in #​21841)

  • Minify HTML further where the parsed document is unchanged: drop redundant quotes, whitespace nothing renders, escapes text does not need, implied tags, optional end tags nothing prints behind, empty attributes and nested empty elements; fold enumerated values and casing; normalize each attribute against the element it is on; and rewrite style, token lists, srcset, sizes, URL, integer and boolean attributes, viewport content, inline <style> and a JSON <script> body through their own grammars. Adds the optimization.minimize.html options collapseWhitespace, mergeStyles, minifyConditionalComments, minifySrcdoc, preserveComments, removeEmptyAttributes, removeEmptyElements, removeImpliedTags, removeRedundantAttributes, sortAttributes and sortTokenLists, and keeps an end tag the parent, the next element or the adoption agency would otherwise restructure the tree over. (by @​alexander-akait in #​21841)

  • Suggest the closest name or a casing fix anywhere in a failed request. (by @​alexander-akait in #​21727)

  • Add aggregated shutdown hook to MultiCompiler. (by @​bjohansebas in #​21578)

  • Report which compilers changed on the MultiCompiler done hook. (by @​bjohansebas in #​21580)

  • Add [containedpath]/[containedfile] placeholders, used for [path]/[file] of asset and html modules with experiments.futureDefaults. (by @​alexander-akait in #​21592)

  • Support an object for an entry's html that overrides output.html per option. (by @​alexander-akait in #​21574)

  • Configure or exclude each asset type's minifier via optimization.minimize. (by @​alexander-akait in #​21663)

  • Support printing CSS and HTML beautified as well as minified. (by @​alexander-akait in #​21660)

  • Add renderEmbeddedSource, and minify what it offers out of the box. (by @​alexander-akait in #​21830)

  • Report bindings named eval, arguments or reserved words in ES module output. (by @​alexander-akait in #​21567)

  • Emit no development source map for module libraries, or any with futureDefaults. (by @​alexander-akait in #​21839)

  • Speed up builds and cut memory: faster CSS, HTML and JavaScript parsing and minification, a built-in scope analyzer replacing eslint-scope, faster dependency hot paths, module diagnostics, CommonJS export scanning and concatenated module renaming, runtime modules, parsers, generators and dependencies loaded only when used, one file watcher pool shared between MultiCompiler children, and lower parser, graph and startup memory. (by @​alexander-akait in #​21841)

  • Improve tree-shaking for a namespace reexported as default, and fix import d from "./mod"; d.member reading undefined in that case. (by @​alexander-akait in #​21841)

  • Warn on cross-kind CSS module export conflicts and let the class win. (by @​alexander-akait in #​21538)

  • Add output.resourceHints.dedupe to skip prefetch links for already preloaded/prefetched chunks. (by @​alexander-akait in #​21386)

Patch Changes
  • Let a memory-cache etag mismatch fall through to the file cache instead of reporting a miss. (by @​alexander-akait in #​21624)

  • Determine provided exports in dependency order, so a build's module hashes no longer depend on what the persistent cache held. (by @​alexander-akait in #​21630)

  • Emit no dead module and no failing require for an asset-url external. (by @​alexander-akait in #​21713)

  • Fix names, hidden devtools and cache reuse for CSS maps inlined into JS. (by @​alexander-akait in #​21558)

  • Follow the HTML spec more closely when parsing and printing: frameset content, quirks paragraphs and selects, <![CDATA[ outside foreign content as a bogus comment, <?target data?> as a processing instruction, </> dropped, comment data and DOCTYPE identifiers read from the tokenizer states, attributes merged from a repeated <html>/<body> tag, legacy JavaScript script types, void keygen and font format detection — and hand back the tree a parsed document was built from when printing it. (by @​alexander-akait in #​21841)

  • Clear a Watching's blocked flag when its build starts, so it reports only a child actually waiting for its MultiCompiler parent. (by @​bjohansebas in #​21639)

  • Fix AMD define() output using the wrong module and exports argument names. (by @​hai-x in #​21814)

  • Fix ReferenceError from import.meta.main using the wrong module argument. (by @​hai-x in #​21620)

  • Leave a @namespace URI alone instead of resolving and rewriting it as an asset. (by @​alexander-akait in #​21658)

  • Resolve escaped CSS names, and scope a grid area cell name as one name. (by @​alexander-akait in #​21665)

  • Track exports usage of side-effect-free modules an active import() evaluates. (by @​hai-x in #​21623)

  • Resolve absolute symlink targets and treat an unreadable context as missing. (by @​alexander-akait in #​21647)

  • Fix corrupted icon URLs in a .webmanifest with a BOM or non-ASCII text. (by @​alexander-akait in #​21655)

  • Respect strictThisContextOnImports for require() member calls. (by @​hai-x in #​21601)

  • Fix import.meta, [object Object] asset urls and crashes in build-time executed modules. (by @​alexander-akait in #​21841)

  • Inherit sideEffects past a type-only nested package.json for files under node_modules. (by @​xiaoxiaojx in #​21686)

  • Do not fail directory creation when the file system reports it already exists. (by @​alexander-akait in #​21698)

  • Fix top-level using and await using declarations in modules. (by @​alexander-akait in #​21557)

  • Fix DefinePlugin optional chains reading an undefined object member. (by @​lazerg in #​21823)

  • Fix MultiCompiler: compute the common outputPath by whole path segments, run again after a dependency validation failure, and recover watch mode from a fatal child error without leaking watchings. (by @​alexander-akait in #​21841)

  • Keep a nested bundle's runtime tables separate when bundling webpack output. (by @​alexander-akait in #​21568)

  • Keep the runtime out of strict mode when output.globalObject reads this. (by @​alexander-akait in #​21715)

  • Run an even-priority __webpack_require__.O handler without waiting. (by @​alexander-akait in #​21803)

  • Treat top-level this in a classic worker entry as its global scope. (by @​alexander-akait in #​21720)

  • Rehash runtime modules whose code changes under a content-named filename. (by @​alexander-akait in #​21828)

  • Fix namespace object reexports and string export names in module library output and emit a CommonJS entry's default as export default. (by @​alexander-akait in #​21589)

  • Keep tree-shaken JSON arrays as arrays when a prototype property is read. (by @​hai-x in #​21599)

  • Generate every CSS and HTML lookup table into lib/{css,html}/data.js from mdn-data, color-name and the spec IDL — including the value-type facts read out of the CSS value-definition grammars — leaving both syntax.js files algorithm only. (by @​alexander-akait in #​21841)

  • Support UNC paths in module and context replacement plugins. (by @​avivkeller in #​21645)

  • Emit less runtime code: shorter syntax where output.environment allows, no IIFE for a RuntimeModule without locals, no unread __webpack_esm_id__ and exports.id chunk exports, and an ESM entry chunk installing its own modules from its local bindings instead of importing itself. (by @​alexander-akait in #​21841)

  • Release the compilation and file system caches retained after compiler.close(). (by @​alexander-akait in #​21603)

v5.109.2

Compare Source

Patch Changes
  • Resolve aliases pointing at a package directory whose name ends with .js again. (by @​alexander-akait in #​21542)

  • Name CSS sources in source maps by their resource path, without the css prefix. (by @​bjohansebas in #​21536)

  • Delete no longer referenced files from the filesystem cache directory after storing the cache, age them by recorded time so restored caches are cleaned too, and collect every fully expired pack in one store instead of one per build. (by @​bjohansebas in #​21528)

  • Report "universal" as the loader context target for the universal target. (by @​alexander-akait in #​21540)

  • Skip require().prop in dead branches gated by inlined imported constants. (by @​hai-x in #​21517)

  • Annotate configuration options and public hooks in the generated types with the @since JSDoc tag. (by @​bjohansebas in #​21473)

v5.109.1

Compare Source

Patch Changes
  • Fix stray semicolon emitted before an imported call following a parenthesized sequence element. (by @​alexander-akait in #​21533)

  • Make require(esm) module.exports re-export analysis independent of module processing order. (by @​alexander-akait in #​21521)

  • Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so compiler.close() succeeds on Bun. (by @​alexander-akait in #​21521)

  • Name the failing key when DefinePlugin fails to evaluate a typeof value. (by @​alexander-akait in #​21503)

  • Improve Deno compatibility: guard setNoDelay and force-close connections on lazy-compilation backend dispose, and return a real ArrayBuffer from the Node async/sync wasm loader so WebAssembly.instantiate accepts it. (by @​alexander-akait in #​21524)

  • Speed up the HTML parser and cut its peak memory: module-scope helpers/state and tokenizer callbacks, plus exact AST column pre-sizing. (by @​alexander-akait in #​21492)

  • Track CommonJS build dependencies by parsing sources when require.cache children are unavailable (e.g. Bun). (by @​alexander-akait in #​21531)

  • Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers. (by @​alexander-akait in #​21500)

  • Build the CSS parseA* AST on the SoA store instead of node classes, cutting parse memory and time. (by @​alexander-akait in #​21498)

  • Speed up and cut memory of the experimental CSS and HTML parsers: drop two derivable AST node columns, and scan long string, url, comment, and plaintext token bodies natively. (by @​alexander-akait in #​21504)

  • Speed up non-modules CSS parsing: skip redundant token re-reads, drop selector-prelude tokens without materializing nodes, allocate rule preludes lazily, and fast-path empty list seals. (by @​alexander-akait in #​21511)

  • Speed up stats generation and cut its peak memory: reuse cached sort comparators instead of thrashing the comparator caches on every sort, and drop redundant module-graph lookups and allocations in the extractors. (by @​alexander-akait in #​21506)

  • Speed up CSS parsing: byte-range function-name checks, indexed sibling lookahead. (by @​bjohansebas in #​21520)

  • Reduce allocations and redundant work across the code-generation, module-concatenation, exports/usage-analysis, hashing, and chunk-splitting hot paths. (by @​alexander-akait in #​21516)

  • Enable the Node.js compile cache in the webpack CLI entry point. (by @​bjohansebas in #​21523)

  • Encode the persistent cache with V8's value serializer. (by @​avivkeller in #​21514)

  • Speed up SplitChunksPlugin: reject non-subset chunk sets with 64-bit signatures, cache unnamed entry keys, and drop per-module closures. (by @​avivkeller in #​21529)

  • Initialize NormalModule._ast in the constructor so each instance keeps a single hidden-class shape. (by @​alexander-akait in #​21515)

  • Reduce allocations in the binary serialization hot paths. (by @​alexander-akait in #​21526)

  • Deduplicate and simplify several lib modules and speed up AggressiveMergingPlugin. (by @​alexander-akait in #​21525)

  • Rename nested const/let __webpack_require__ and __webpack_exports__ declarations in bundled webpack output. (by @​hai-x in #​21508)

v5.109.0

Compare Source

Minor Changes
  • Default experiments.typescript to "auto", enabling built-in TypeScript support on Node.js >= 22.6 when no TypeScript loader is registered. (by @​alexander-akait in #​21398)

  • Default experiments.css, experiments.html and experiments.asyncWebAssembly to "auto", enabling built-in support unless a loader is registered for those files; modules with inline or hook-injected loaders (e.g. html-webpack-plugin templates) keep being parsed as JavaScript. (by @​alexander-akait in #​21365)

  • Add output.resourceHints to emit resource hints (preload/prefetch/modulepreload/preconnect), on by default for ESM output, plus module.parser.<type>.urlHints, css.fontPreload and javascript.dynamicImportCssPreload. (by @​alexander-akait in #​21408)

  • Add built-in build progress via infrastructureLogging.progress, plus estimatedTime, phaseTimings, progress bar width and progressBar: "auto" on ProgressPlugin. (by @​alexander-akait in #​21352)

  • Concatenate CommonJS modules with statically analyzable exports; opt out via optimization.concatenateModules: { commonjs: false }. (by @​alexander-akait in #​21417)

  • Wrap "weird" CommonJS modules into module concatenation instead of bailing out. (by @​alexander-akait in #​21436)

  • Add output.html.inline (true | "script" | "style") and the webpackInline magic comment to inline chunk content into HTML. (by @​alexander-akait in #​21260)

  • Add output.html.inject to control where chunk tags are injected. (by @​alexander-akait in #​21383)

  • Add output.html.title, output.html.meta and output.html.base options for head generation. (by @​alexander-akait in #​21394)

  • Support per-icon link attributes (sizes, media, color, type, crossorigin) and arrays in output.html.favicon. (by @​alexander-akait in #​21487)

  • Add output.html.manifest to generate and link a web app manifest with hashed icons. (by @​alexander-akait in #​21487)

  • Add output.html.csp to inject a Content-Security-Policy meta with inline-content hashes and an optional nonce. (by @​alexander-akait in #​21487)

  • Add the output.html injectTags compilation hook to inject tags (script/link/meta/…) with injectTo placement. (by @​alexander-akait in #​21487)

  • Add the output.html transformTags compilation hook to mutate, remove, or move (between <head> and <body>) a page's existing <script>/<link>/<style>/<meta> tags. (by @​alexander-akait in #​21487)

  • Extend the HTML pipeline with html link sources (bundled as their own emitted page) and rel="preload"/"prefetch" links bundled as chunks. (by @​alexander-akait in #​21346)

  • Recognize more asset-bearing HTML sources: the twitter:player:stream meta, legacy SVG references, and Web App Manifest icons/screenshots/shortcuts URLs. (by @​alexander-akait in #​21355)

  • Add module.parser.html.as to parse HTML as a document or an element fragment. (by @​alexander-akait in #​21441)

  • Allow disabling a built-in HTML parser source via type: false in sources. (by @​alexander-akait in #​21441)

  • Export webpack.html.HtmlModulesPlugin with transformHtml/htmlEmitted compilation hooks. (by @​alexander-akait in #​21487)

  • Resolve @custom-media (including media-type values) and @custom-selector in native CSS. (by @​alexander-akait in #​21442)

  • Scope view-transition-name/-group/-class names and ::view-transition-*() pseudo references in CSS modules under customIdents. (by @​alexander-akait in #​21486)

  • Add import.meta.glob support, with a caseSensitive option and consistent hidden/node_modules matching. (by @​alexander-akait in #​21385)

  • Resolve import.meta.resolve("./asset") to the emitted asset URL via the importMeta.resolve parser option. (by @​alexander-akait in #​21415)

  • Add import.meta.env defaults: MODE, DEV, PROD, SSR and BASE_URL. (by @​alexander-akait in #​21440)

  • Add fine-grained import.meta parser options. (by @​alexander-akait in #​21327)

  • Deprecate the importMetaContext parser option in favor of importMeta.webpackContext. (by @​alexander-akait in #​21360)

  • Emit analyzable new URL(…, import.meta.url), worker/worklet URL and import() references with literal specifiers for ESM module output. (by @​alexander-akait in #​21194)

  • Compile async modules to generators for targets without async/await. (by @​alexander-akait in #​21410)

  • Evaluate and validate the second argument of dynamic import(specifier, options). (by @​alexander-akait in #​21446)

  • Add module.parser.javascript.worklet to bundle Worklet addModule() entries. (by @​alexander-akait in #​21384)

  • Add ?raw, ?url, ?inline and ?no-inline asset query suffixes under experiments.futureDefaults. (by @​alexander-akait in #​21379)

  • Add an interop ("default" | "esModule") hint for object externals to control default-export interop. (by @​alexander-akait in #​21371)

  • Add an amd-async externals type that loads AMD externals without an AMD library wrapper. (by @​alexander-akait in #​21340)

  • Support cache.compression: "zstd" for the filesystem cache. (by @​alexander-akait in #​21438)

  • Warn on strict-mode-only syntax and semantic hazards in ES module output, configurable via the strictModeViolations parser option. (by @​alexander-akait in #​21387)

  • Support parsers without location APIs: locations derive from node offsets and AST nodes no longer carry loc. (by @​alexander-akait in #​21451)

  • Attach the original DOM event to ChunkLoadError and ScriptExternalLoadError as error.event. (by @​alexander-akait in #​21388)

  • Add output.wasmStreamingFallback for wasm fallback on a wrong MIME type. (by @​alexander-akait in #​21299)

  • Show why a module was marked as not cacheable in stats output. (by @​alexander-akait in #​21403)

  • Expose the active MultiWatching on MultiCompiler.watching. (by @​alexander-akait in #​21469)

  • Resolve git merge conflicts when parsing the build-http lockfile. (by @​alexander-akait in #​21397)

Patch Changes

v5.108.4

Compare Source

Patch Changes

v5.108.3

Compare Source

Patch Changes

v5.108.2

Compare Source

Patch Changes

v5.108.1

Compare Source

Patch Changes
  • Fix invalid property access for escaped namespace imports with multi-character mangled export names. (by @​xiaoxiaojx in #​21280)

  • Add frames to ProfilingPlugin TracingStartedInBrowser event so the trace loads in Chrome DevTools. (by @​alexander-akait in #​21269)

v5.108.0

Compare Source

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 in #​21218)

  • Add a bun target that emits ESM and externalizes bun:* and node.js built-in modules. (by @​alexander-akait in #​21248)

  • Support CommonJS reexports via Object.defineProperty value and getter descriptors. (by @​alexander-akait in #​21129)

  • Support JSON Schema const when generating CLI flags from a schema. (by @​alexander-akait in #​21087)

  • Support JSON Schema if/then/else when generating CLI flags from a schema. (by @​alexander-akait in #​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 in #​21136)

  • CSS localIdentName [hash] now resolves to the local ident hash (matching css-loader); use [modulehash] for the module hash. (by @​alexander-akait in #​21259)

  • Add CSS parser as option and resolve url() inside HTML style attributes. (by @​alexander-akait in #​21157)

  • Add dedicated module classes for all built-in module types. (by @​alexander-akait in #​21164)

  • Support .html/.css for the default ./src entry under the html/css experiments. (by @​alexander-akait in #​21039)

  • Add defineConfig helper for typed configuration files. (by @​alexander-akait in #​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 in #​21247)

  • Use module-import for electron externals when the target supports ESM. (by @​alexander-akait in #​21184)

  • Add output.environment.logicalAssignment to emit ||= in runtime code when the target supports logical assignment operators. (by @​bjohansebas in #​21219)

  • Resolve and rewrite asset URLs inside <iframe srcdoc> in HTML modules. (by @​bjohansebas in #​21226)

  • Add HMR support for HTML modules with body/title DOM patching on update. (by @​alexander-akait in #​21011)

  • Add css-url html source type extracting url() references from CSS-valued attributes. (by @​alexander-akait in #​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 @​alexander-akait in #​21022)

  • Add module.parser.html.template option to transform HTML module source before parsing. (by @​alexander-akait in #​21055)

  • Extract more source URLs in HTML modules (SVG, legacy and obsolete attributes). (by @​alexander-akait in #​21241)

  • Inline export default <const> when the default-exported value is a primitive constant. (by @​hai-x in #​21189)

  • Support optimization.inlineExports for better tree-shaking. (by @​hai-x in #​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 @​alexander-akait in #​21267)

  • Allow tree-shaking unused calls to /*#__NO_SIDE_EFFECTS__*/-annotated (pure) exports across module boundaries. (by @​hai-x in #​20907)

  • Defer building unused re-export targets of side-effect-free barrel modules. (by @​hai-x in #​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 @​alexander-akait in #​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 @​alexander-akait in #​21010)

  • Add output.html to emit an HTML file per entrypoint, injecting its JS/CSS chunks (including dependOn shared chunks). (by @​alexander-akait in #​21215)

  • Add module.parser.javascript.pureFunctions to mark top-level names as side-effect-free for tree shaking. (by @​hai-x in #​21063)

  • Add universal to compiler.platform, true for universal targets ("universal" or ["web", "node"]). (by @​bjohansebas in #​21252)

  • Add output.strictModuleResolution to gate the runtime MODULE_NOT_FOUND guard. (by @​hai-x in #​21067)

  • Support an inline digest in hash path placeholders, e.g. [contenthash:base64:8]. (by @​alexander-akait in #​21259)

  • Support [uniqueName] and its [uniquename] alias in template paths. (by @​alexander-akait in #​21155)

  • Support CSS in Node for universal targets, collecting styles for SSR. (by @​alexander-akait in #​21208)

  • Improve commonjs, node-commonjs and global externals for universal targets. (by @​alexander-akait in #​21187)

  • Add a universal target preset (browser + web worker + Node.js + Electron + NW.js) that always outputs ECMAScript modules. (by @​alexander-akait in #​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 @​alexander-akait in #​21195)

  • Add output.workerChunkFilename and entry.worker for worker chunk filenames. (by @​alexander-akait in #​21128)

Patch Changes

v5.107.2

Compare Source

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 @​alexander-akait in #​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 @​alexander-akait in #​21023)

  • Fix HTML [contenthash] for referenced asset and inline-style URL changes. (by @​alexander-akait in #​21018)

  • Resolve chunk-hash placeholders in chunk URLs embedded into extracted HTML. (by @​alexander-akait in #​21018)

  • Remove unnecessary __webpack_require__ runtime helpers in ESM library output with multi-module chunks. (by @​xiaoxiaojx in #​21032)

  • Rewrite NormalModule#getSideEffectsConnectionState walk as an allocation-light iterative loop instead of a generator trampoline, restoring rebuild performance lost in #​20993 while keeping deep import chains stack-safe. (by @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​21026)

  • Release per-child codeGenerationResults in MultiCompiler and at Compiler.close to reduce memory retention. (by @​alexander-akait in #​21015)

  • Reduce peak memory of SourceMapDevToolPlugin on large builds (closes #​20961). (by @​alexander-akait in #​20963)

  • Fix slow require.context() / dynamic import() rebuilds in watch mode (#​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 @​alexander-akait in #​21020)

v5.107.1

Compare Source

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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​20993)

  • Fix NormalModuleFactory parser/generator types: (by @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​20988)

v5.107.0

Compare Source

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 @​xiaoxiaojx in #​20894)

  • Support module concatenation (scope hoisting) for CSS modules with text, css-style-sheet, style, and link export types (by @​xiaoxiaojx in #​20851)

  • The generator.exportsConvention function form for CSS modules now accepts string[] in addition to string. (by @​alexander-akait in #​20914)

  • Add linkInsert hook to CssLoadingRuntimeModule.getCompilationHooks(compilation) so plugin developers can control where stylesheet <link> elements are inserted into the document. (by @​alexander-akait in #​20947)

  • Add CssModulesPlugin.getCompilationHooks(compilation).orderModules hook. (by @​alexander-akait in #​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 @​alexander-akait in #​20946)

  • Support CSS Modules @value identifiers as @import URLs and inside url() functions, e.g. @value path: "./other.css"; @import path; and @value bg: "./image.png"; .a { background: url(bg); } (by @​alexander-akait in #​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 @​alexander-akait in #​20964)

  • Added an experiments.html flag that reserves the html module type for the first-class HTML entry-point support. (by @​aryanraj45 in #​20902)

  • Preserve defer / source import phase keywords on external dependencies in ESM output, the same way import attributes are preserved. (by @​alexander-akait in #​20934)

  • Support the #__NO_SIDE_EFFECTS__ annotation to mark functions as pure for better tree-shaking. (by @​hai-x in #​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 @​alexander-akait in #​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 @​alexander-akait in #​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 @​alexander-akait in #​20929)

  • Avoid emitting the __webpack_require__ runtime in CSS bundles when all imported CSS modules were concatenated into the same scope. (by @​alexander-akait in #​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 @​alexander-akait in #​20938)

  • Embed an inline sourceMappingURL data URI inside the CSS when the parser.exportType option are text, style, or css-style-sheet. Also merge @imported 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 @​alexander-akait in #​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 @​alexander-akait in #​20929)

  • Preserve @charset at-rule when CSS modules use exportType: "text". (by @​alexander-akait in #​20912)

  • Resolve [hash]/[fullhash] placeholders in output.publicPath when generating url() references for experiments.css. (by @​alexander-akait in #​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 @​xiaoxiaojx in #​20911)

  • Fix CSS Modules @value resolution when the same local name is imported from multiple modules. (by @​alexander-akait in #​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 proxy itself instead of routing through the optimized .a getter (which lazily evaluates the module and returns its default value), so typeof ns.default observed "object" (the proxy) rather than the type of the default. The dynamic exportsType already used .a correctly; default-only and default-with-named now match. (by @​alexander-akait in #​20910)

  • Make import defer * as ns more spec-compliant: ns.x = value no longer triggers module evaluation (per the TC39 import-defer [[Set]] algorithm), and the deferred namespace is now a distinct object from the eager namespace, with the same Deferred Module Namespace Exotic Object shared across defer-import call sites for the same module. (by @​alexander-akait in #​20913)

  • Fixed spec deviations in the deferred namespace object returned by __webpack_require__.z (import defer * as ns / import.defer(...)). (by @​alexander-akait in #​20910)

  • Drop the __webpack_require__, __webpack_require__.d, and __webpack_require__.o runtime helpers from library: { type: "module" } bundles when the on-demand exports source they were emitted for ends up dropped (e.g. a single concatenated entry without an IIFE). (by @​alexander-akait in #​20901)

  • Resolve the static specifier of a dynamic import() whose argument is a side-effect-free SequenceExpression, e.g. import((1, 0, "./mod.js")) is now treated the same as import("./mod.js") instead of being rejected as unresolvable. (by @​alexander-akait in #​20917)

  • Stable shared module ids and runtime-chunk emission order. (by @​imccausl in #​20860)

  • Fix snapshot validity check for context dependencies in watch mode by treating watchpack's existence-only entries ({}) as cache misses. (by @​alexander-akait in #​20916)

  • Support no-expression template literals in computed member access (e.g. import.meta[`url`]). (by @​alexander-akait in #​20889)

  • Improve tree-shaking in isPure: handle more expression types (ArrayExpression, ObjectExpression, NewExpression, ChainExpression, UnaryExpression (safe operators), MetaProperty, TaggedTemplateExpression, BinaryExpression (strict equality)), prevent /*#__PURE__*/ comments from leaking across ObjectExpression properties, and detect PURE comments inside TemplateLiteral interpolations. (by @​alexander-akait in #​20723)

  • Reject new import.defer(...) and new import.source(...) as a parse-time SyntaxError, matching the spec — ImportCall is a CallExpression and is not a valid operand of new. Parenthesized forms (new (import.defer(...))) remain valid and continue to throw TypeError at runtime as before. (by @​alexander-akait in #​20917)

  • Escape # characters that appear inside a path-shaped request's directory portion before passing the request to the resolver, so projects located in directories like /home/user/proj#1 (and tools like webpack-dev-server that build entry requests with query strings) resolve correctly. The escape only kicks in when the request contains both a # in the path portion and a ? query string — paths without a query keep their existing semantics. (by @​alexander-akait in #​20980)

  • Silence unhandled rejection from the prefetch trigger when chunk loading fails. The ensureChunkHandlers.prefetch runtime created Promise.all(promises).then(...) whose result is discarded by __webpack_require__.e. If chunk loading rejected (e.g. chunkLoadTimeout), that dangling chain produced an unhandled rejection. Prefetch is best-effort, so a no-op rejection handler is now attached. (by @​alexander-akait in #​20898)

  • Align require() of an ES module with Node.js's require(esm) "module.exports" named-export convention. When CommonJS require() resolves to an ES module that exports a binding with the literal string name "module.exports" (e.g. export { value as "module.exports" }), require() now returns the value of that export instead of the module's namespace object — matching Node.js v22.12+/v23+ behavior and easing migration of dual ESM/CJS libraries that rely on module.exports = …. The unwrap applies to plain require(), require().foo, calls (require()(…)), destructuring, and to CJS wrappers like module.exports = require(esm) / exports.x = require(esm). (by @​alexander-akait in #​20981)

  • Remove outdated @types/eslint-scope package from dependencies. (by @​alexander-akait in #​20869)

  • Fix export * resolution when a star-reexported module re-exports a name back to the importer cyclically. Previously, in a graph where a does export * from "./b"; export * from "./c"; and b does export { foo } from "./a"; while c provides the actual foo binding, webpack hoisted foo from b into a's namespace without per-name cycle detection — emitting a getter chain (a.foo → b.foo → a.foo) that threw "Maximum call stack size exceeded" at runtime. The TC39 ResolveExport algorithm requires the cyclic branch to return null and the star loop to fall through to the non-cyclic source. (by @​alexander-akait in #​20959)

  • Preserve using declaration initializers when the inner graph optimization is enabled. (by @​hai-x in #​20906)

  • Fixed typescript types. (by @​alexander-akait in #​20880)

  • Bump webpack-sources to ^3.4.1 and feed asset bytes into hashes via the new Source.prototype.buffers() API. For large ConcatSource/ReplaceSource outputs this avoids the intermediate Buffer.concat that source.buffer() performs, removing a peak-memory spike equal to the source's total size on each hashed asset (AssetGenerator.getFullContentHash, CssIcssExportDependency content hashing, and RealContentHashPlugin). A small benchmark on a 64 MiB ConcatSource shows ~64 MiB lower peak external memory and ~45% faster hashing. (by @​alexander-akait in #​20897)

v5.106.2

Compare Source

Patch Changes
  • CSS @​import now inherits the parent module's exportType, so a file configured as "text" correctly creates a style tag when @​imported by a "style" parent. (by @​xiaoxiaojx in #​20838)

  • Make asset modules available in JS context when referenced from both CSS and a lazily compiled JS chunk. (by @​xiaoxiaojx in #​20801)

  • Include missing generator options in hash to ensure persistent cache invalidation when configuration changes (CssGenerator exportsOnly, JsonGenerator JSONParse, WebAssemblyGenerator mangleImports). (by @​xiaoxiaojx in #​20821)

  • Fix || default value handling in ProgressPlugin and ManifestPlugin that incorrectly overrode user-provided falsy values (e.g. modules: false, entries: false, entrypoints: false). (by @​xiaoxiaojx in #​20823)

  • Migrate from mime-types to mime-db. (by @​alexander-akait in #​20812)

  • Handle @charset at-rules in CSS modules. (by @​alexander-akait in #​20831)

  • Marked all experimental options in types. (by @​alexander-akait in #​20814)

v5.106.1

Compare Source

Patch Changes
  • Fix two ES5-environment regressions in the anonymous default export .name fix-up: the generated code referenced an undeclared __WEBPACK_DEFAULT_EXPORT__ binding causing ReferenceError, and used Reflect.defineProperty which is not available in pre-ES2015 runtimes. The fix-up now references the real assignment target and uses Object.defineProperty / Object.getOwnPropertyDescriptor. (by @​xiaoxiaojx in #​20796)

  • Prevent !important from being renamed as a local identifier in CSS modules. (by @​xiaoxiaojx in #​20798)

  • Use compiler context instead of module context for CSS modules local ident hashing to avoid hash collisions when files with the same name exist in different directories. (by @​xiaoxiaojx in #​20799)

v5.106.0

Compare Source

Minor Changes
  • Add exportType: "style" for CSS modules to inject styles into DOM via HTMLStyleElement, similar to style-loader functionality. (by @​xiaoxiaojx in #​20579)

  • Add context option support for VirtualUrlPlugin (by @​xiaoxiaojx in #​20449)

    • The context for the virtual module. A string path. Defaults to 'auto', which will try to resolve the context from the module id.
    • Support custom context path for resolving relative imports in virtual modules
    • Add examples demonstrating context usage and filename customization
  • Generate different CssModule instances for different exportType values. (by @​xiaoxiaojx in #​20590)

  • Added the localIdentHashFunction option to configure the hash function to be used for hashing. (by @​alexander-akait in #​20694)
    Additionally, the localIdentName option can now be a function.

  • Added support for destructuring assignment require in cjs, allowing for tree shaking. (by @​ahabhgk in #​20548)

  • Added the validate option to enable/disable validation in webpack/plugins/loaders, also implemented API to make it inside plugins. (by @​xiaoxiaojx in #​20275)

  • Added source support for async WASM modules. (by @​magic-akari in #​20364)

Patch Changes
  • Add a static getSourceBasicTypes method to the Module class to prevent errors across multiple versions. (by @​xiaoxiaojx in #​20614)

  • Included fragment groups in the conflicting order warning for CSS. (by @​aryanraj45 in #​20660)

  • Avoid rendering unused top-level __webpack_exports__ declaration when output ECMA module library. (by @​hai-x in #​20669)

  • Fixed resolving in CSS modules. (by @​alexander-akait in #​20771)

  • Allow external modules place in async chunks when output ECMA module. (by @​hai-x in #​20662)

  • Implement deprecate flag in schema for better TypeScript support to show which options are already deprecated by the configuration (by @​bjohansebas in #​20432)

  • Set .name to "default" for anonymous default export functions and classes per ES spec (by @​xiaoxiaojx in #​20773)

  • Hash entry chunks after runtime chunks to prevent stale content hash references in watch mode (by @​xiaoxiaojx in #​20724)

  • Fix multiple bugs and optimizations in CSS modules: correct third code point position in walkCssTokens number detection, fix multiline CSS comment regex, fix swapped :import/:export error message, fix comma callback incorrectly popping balanced stack, fix cache comparison missing array length check, fix match.index mutation side effect, move publicPathAutoRegex to module scope, precompute merged callbacks in consumeUntil, simplify redundant ternary in CssGenerator, fix typo GRID_TEMPLATE_ARES, remove duplicate grid-column-start, and merge duplicate getCompilationHooks calls. (by @​xiaoxiaojx in #​20648)

  • Correct url() path resolution and preserve source maps for non-link CSS export types (style, text, css-style-sheet) (by @​xiaoxiaojx in #​20717)

  • Emit error when proxy server returns non-200 status code in HttpUriPlugin instead of silently failing. (by @​xiaoxiaojx in #​20646)

  • import.meta as standalone expression now returns a complete object with known properties (url, webpack, main, env) instead of an empty object ({}), and hoists it as a module-level variable to ensure import.meta === import.meta identity. In preserve-unknown mode (ESM output), the hoisted object merges runtime import.meta properties via Object.assign. (by @​xiaoxiaojx in #​20658)

  • Fix incorrect condition in FileSystemInfo that always evaluated to false, preventing trailing slash removal from directory paths during build dependency resolution. (by @​xiaoxiaojx in #​20649)

  • fix: VirtualUrlPlugin absolute path virtual module IDs getting concatenated with compiler context (by @​xiaoxiaojx in #​20656)

    When a virtual module ID is an absolute path (e.g. virtual:C:/project/user.js), the auto-derived context was incorrectly joined with compiler.context, producing a concatenated path like C:\cwd\C:\project. Now absolute-path contexts are used directly.

  • All deprecated methods and options now have @deprecated flag in types. (by @​alexander-akait in #​20707)

  • Fix CompatibilityPlugin to correctly rename __webpack_require__ when it appears as an arrow function parameter (e.g. (__webpack_module, __webpack_exports, __webpack_require__) => { ... }). (by @​hai-x in #​20661)

v5.105.4

Compare Source

Patch Changes

v5.105.3

Compare Source

Patch Changes
  • Context modules now handle rejections correctly. (by @​alexander-akait in #​20455)

  • Only mark asset modules as side-effect-free when experimental.futureDefaults is set to true, so asset-copying use cases (e.g. import "./x.png") won’t break unless the option is enabled. (by @​hai-x in #​20535)

  • Add the missing webpack_exports declaration in certain cases when bundling a JS entry together with non-JS entries (e.g., CSS entry or asset module entry). (by @​hai-x in #​20463)

  • Fixed HMR failure for CSS modules with @​import when exportType !== "link". When exportType is not "link", CSS modules now behave like JavaScript modules and don't require special HMR handling, allowing @​import CSS to work correctly during hot module replacement. (by @​xiaoxiaojx in #​20514)

  • Fixed an issue where empty JavaScript files were generated for CSS-only entry points. The code now correctly checks if entry modules have JavaScript source types before determining whether to generate a JS file. (by @​xiaoxiaojx in #​20454)

  • Do not crash when a referenced chunk is not a runtime chunk. (by @​alexander-akait in #​20461)

  • Fix some types. (by @​alexander-akait in #​20412)

  • Ensure that missing module error are thrown after the interception handler (if present), allowing module interception to customize the module factory. (by @​hai-x in #​20510)

  • Added createRequire support for ECMA modules. (by @​stefanbinoj in #​20497)

  • Added category for CJS reexport dependency to fix issues with ECMA modules. (by @​hai-x in #​20444)

  • Implement immutable bytes for bytes import attribute to match tc39 spec. (by @​alexander-akait in #​20481)

  • Fixed deterministic search for graph roots regardless of edge order. (by @​veeceey in #​20452)

v5.105.2

Compare Source

Patch Changes

v5.105.1

Compare Source

Patch Changes
  • Fix VirtualUrlPlugin Windows compatibility by sanitizing cache keys and filenames. Cache keys now use toSafePath to replace colons (:) with double underscores (__) and sanitize other invalid characters, ensuring compatibility with Windows filesystem restrictions. (by @​xiaoxiaojx in #​20424)

  • Revert part of the createRequire generation behavior for require("node:...") to keep compatibility with those modules exports, e.g. const EventEmitter = require("node:events");. (by @​hai-x in #​20433)

  • Skip guard collection when exports-presence mode is disabled to improve parsing performance. (by @​hai-x in #​20433)

v5.105.0

Compare Source

Minor Changes
  • Allow resolving worker module by export condition name when using new Worker() (by @​hai-x in #​20353)

  • Detect conditional imports to avoid compile-time linking errors for non-existent exports. (by @​hai-x in #​20320)

  • Added the tsconfig option for the resolver options (replacement for tsconfig-paths-webpack-plugin). Can be false (disabled), true (use the default tsconfig.json file to search for it), a string path to tsconfig.json, or an object with configFile and references options. (by @​alexander-akait in #​20400)

  • Support import.defer() for context modules. (by @​ahabhgk in #​20399)

  • Added support for array values ​​to the devtool option. (by @​hai-x in #​20191)

  • Improve rendering node built-in modules for ECMA module output. (by @​hai-x in #​20255)

  • Unknown import.meta properties are now determined at runtime instead of being statically analyzed at compile time. (by @​xiaoxiaojx in #​20312)

Patch Changes
  • Fixed ESM default export handling for .mjs files in Module Federation (by @​y-okt in #​20189)

  • Optimized import.meta.env handling in destructuring assignments by using cached stringified environment definitions. (by @​xiaoxiaojx in #​20313)

  • Respect the stats.errorStack option in stats output. (by @​samarthsinh2660 in #​20258)

  • Fixed a bug where declaring a module variable in module scope would conflict with the default moduleArgument. (by @​xiaoxiaojx in #​20265)

  • Fix VirtualUrlPlugin to set resourceData.context for proper module resolution. Previously, when context was not set, it would fallback to the virtual scheme path (e.g., virtual:routes), which is not a valid filesystem path, causing subsequent resolve operations to fail. (by @​xiaoxiaojx in #​20390)

  • Fixed Worker self-import handling to support various URL patterns (e.g., import.meta.url, new URL(import.meta.url), new URL(import.meta.url, import.meta.url), new URL("./index.js", import.meta.url)). Workers that resolve to the same module are now properly deduplicated, regardless of the URL syntax used. (by @​xiaoxiaojx in #​20381)

  • Reuse the same async entrypoint for the same Worker URL within a module to avoid circular dependency warnings when multiple Workers reference the same resource. (by @​xiaoxiaojx in #​20345)

  • Fixed a bug where a self-referencing dependency would have an unused export name when imported inside a web worker. (by @​samarthsinh2660 in #​20251)

  • Fix missing export generation when concatenated modules in different chunks share the same runtime in module library bundles. (by @​hai-x in #​20346)

  • Fixed import.meta.env.xxx behavior: when accessing a non-existent property, it now returns empty object instead of full object at runtime. (by @​xiaoxiaojx in #​20289)

  • Improved parsing error reporting by adding a link to the loader documentation. (by @​gaurav10gg in #​20244)

  • Fix typescript types. (by @​alexander-akait in #​20305)

  • Add declaration for unused harmony import specifier. (by @​hai-x in #​20286)

  • Fix compressibility of modules while retaining portability. (by @​dmichon-msft in #​20287)

  • Optimize source map generation: only include ignoreList property when it has content, avoiding empty arrays in source maps. (by @​xiaoxiaojx in #​20319)

  • Preserve star exports for dependencies in ECMA module output. (by @​hai-x in #​20293)

  • Consider asset modulem to be side-effect free. (by @​hai-x in #​20352)

  • Avoid generating JavaScript modules for CSS exports that are not used, reducing unnecessary output and bundle size. (by @​xiaoxiaojx in #​20337)

v5.104.1

Compare Source

Patch Changes
  • 2efd21b: Reexports runtime calculation should not accessing WEBPACK_IMPORT_KEY decl with var.
  • c510070: Fixed a user information bypass vulnerability in the HttpUriPlugin plugin.

v5.104.0

Compare Source

Minor Changes
  • d3dd841: Use method shorthand to render module content in __webpack_modules__ object.
  • d3dd841: Enhance import.meta.env to support object access.
  • 4baab4e: Optimize dependency sorting in updateParent: sort each module only once by deferring to finishUpdateParent(), and reduce traversal count in sortWithSourceOrder by caching WeakMap values upfront.
  • 04cd530: Handle more at-rules for CSS modules.
  • cafae23: Added options to control the renaming of at-rules and various identifiers in CSS modules.
  • d3dd841: Added base64url, base62, base58, base52, base49, base36, base32 and base25 digests.
  • 5983843: Provide a stable runtime function variable __webpack_global__.
  • d3dd841: Improved localIdentName hashing for CSS.
Patch Changes
  • 22c48fb: Added module existence check for informative error message in development mode.
  • 50689e1: Use the fully qualified class name (or export name) for [fullhash] placeholder in CSS modules.
  • d3dd841: Support universal lazy compilation.
  • d3dd841: Fixed module library export definitions when multiple runtimes.
  • d3dd841: Fixed CSS nesting and CSS custom properties parsing.
  • d3dd841: Don't write fragment from URL to filename and apply fragment to module URL.
  • aab1da9: Fixed bugs for css/global type.
  • d3dd841: Compatibility import.meta.filename and import.meta.dirname with eval devtools.
  • d3dd841: Handle nested __webpack_require__.
  • 728ddb7: The speed of identifier parsing has been improved.
  • 0f8b31b: Improve types.
  • d3dd841: Don't corrupt debugId injection when hidden-source-map is used.
  • 2179fdb: Re-validate HttpUriPlugin redirects against allowedUris, restrict to http(s) and add a conservative redirect limit to prevent SSRF and untrusted content inclusion. Redirects failing policy are rejected before caching/lockfile writes.
  • d3dd841: Serialize HookWebpackError.
  • d3dd841: Added ability to use built-in properties in dotenv and define plugin.
  • 3c4319f: Optimizing the regular expression character class by specifying ranges for runtime code.
  • d3dd841: Reduce collision for local indent name in CSS.
  • d3dd841: Remove CSS link tags when CSS imports are removed.

v5.103.0

Compare Source

Features
  • Added DotenvPlugin and top level dotenv option to enable this plugin
  • Added WebpackManifestPlugin
  • Added support the ignoreList option in devtool plugins
  • Allow to use custom javascript parse function
  • Added import.meta.env support for environment variables
  • Added support for import.meta.dirname and import.meta.filename
  • Added support import.defer() for statistical path
  • Handle import.meta.main
  • Added suport to setup named exports for JSON modules and disable usage named export for import file from "./file.json" with { type: "json" }
  • Added support __dirname/__filename/import.meta.dirname/import.meta.filename for universal target
  • [CSS] Added the exportType option with link (by default), "text" and css-style-sheet values
  • [CSS] Added support for composes properties
Fixes
  • The dependOn chunk must be loaded before the common chunk
  • Return to namespace import when the external request includes a specific export
  • No runtime extra runtime code for module libraries
  • Delay HMR accept dependencies to preserve import attributes
  • Properly handle external presets for universal target
  • Fixed incorrect identifier of import binding for module externals
  • Fixed when defer import and dynamic default export mixed
  • Reduce generated output when globalThis supported
  • Fixed loading async modules in defer import
  • Reexport module for default import when no used exports for systemjs library
  • Rename HarmonyExportDependencyParserPlugin exported id to CompatibilityPlugin tagged id
  • Handle __dirname and __filename for ES modules
  • Rename single nested __webpack_export__ and __webpack_require__ in already bundled code
  • [Types] webpack function type
  • [Types] NormalModule type
  • [Types] Multi compiler configuration type
  • [Types] Fixed regression in custom hashDigest type
  • [CSS] No extra runtime for initial chunk
  • [CSS] Fixed a lot of CSS modules bugs

v5.102.1

Compare Source

Fixes
  • Supported extends with env for browserslist
  • Supported JSONP fragment format for web workers.
  • Fixed dynamic import support in workers using browserslist.
  • Fixed default defer import mangling.
  • Fixed default import of commonjs externals for SystemJS format.
  • Fixed context modules to the same file with different import attributes.
  • Fixed typescript types.
  • Improved import.meta warning messages to be more clear when used directly.
  • [CSS] Fixed CC_UPPER_U parsing (E -> U) in tokenizer.

v5.102.0

Compare Source

Features
  • Added static analyze for dynamic imports
  • Added support for import file from "./file.ext" with { type: "bytes" } to get the content as Uint8Array (look at example)
  • Added support for import file from "./file.ext" with { type: "text" } to get the content as text (look at example)
  • Added the snapshot.contextModule to configure snapshots options for context modules
  • Added the extractSourceMap option to implement the capabilities of loading source maps by comment, you don't need source-map-loader (look at example)
  • The topLevelAwait experiment is now stable (you can remove experiments.topLevelAwait from your webpack.config.js)
  • The layers experiment is now stable (you can remove experiments.layers from your webpack.config.js)
  • Added function matcher support in rule options
Fixes
  • Fixed conflicts caused by multiple concatenate modules
  • Ignore import failure during HMR update with ES modules output
  • Keep render module order consistent
  • Prevent inlining modules that have this exports
  • Removed unused timeout attribute of script tag
  • Supported UMD chunk format to work in web workers
  • Improved CommonJs bundle to ES module library
  • Use es-lexer for mjs files for build dependencies
  • Fixed support __non_webpack_require__ for ES modules
  • Properly handle external modules for CSS
  • AssetsByChunkName included assets from chunk.auxiliaryFiles
  • Use createRequire only when output is ES module and target is node
  • Typescript types
Performance Improvements
  • Avoid extra calls for snapshot
  • A avoid extra jobs for build dependencies
  • Move import attributes to own dependencies

v5.101.3

Compare Source

Fixes
  • Fixed resolve execution order issue from extra await in async modules
  • Avoid empty block for unused statement
  • Collect only specific expressions for destructuring assignment

v5.101.2

Compare Source

Fixes
  • Fixed syntax error when comment is on the last line
  • Handle var declaration for createRequire
  • Distinguish free variable and tagged variable

v5.101.1

Compare Source

Fixes
  • Filter deleted assets in processAdditionalAssets hook
  • HMR failure in defer module
  • Emit assets even if invalidation occurs again
  • Export types for serialization and deserialization in plugins and export the ModuleFactory class
  • Fixed the failure export of internal function for ES module chunk format
  • Fixed GetChunkFilename failure caused by dependOn entry
  • Fixed the import of missing dependency chunks
  • Fixed when entry chunk depends on the runtime chunk hash
  • Fixed module.exports bundle to ESM library
  • Adjusted the time of adding a group depending on the fragment of execution time
  • Fixed circle dependencies when require RawModule and condition of isDeferred
  • Tree-shakable module library should align preconditions of allowInlineStartup

v5.101.0

Compare Source

Fixes
  • Fixed concatenate optimization for ESM that caused undefined export
  • Respect the output.environment.nodePrefixForCoreModules option everywhere
  • Respect the output.importMetaName option everywhere
  • Fixed await async dependencies when accepting them during HMR
  • Better typescript types
Features
  • Added colors helpers for CLI
  • Enable tree-shaking for ESM external modules with named imports
  • Added the deferImport option to parser options
Performance Improvements
  • Fixed a regression in module concatenation after implementing deferred import support
  • Fixed a potential performance issue in CleanPlugin
  • Avoid extra require in some places

v5.100.2

Compare Source

Fixes
  • Keep consistent CSS order
  • Dependency without the source order attribute must keep their original index
  • Keep module traversal consistent across reexport scenarios
Performance Improvements
  • Extend importPhasesPlugin only when enable deferImport (#​19689)

v5.100.1

Compare Source

Fixes
  • Tree-shaking unused ignored modules
  • [Types] Compatibility with old Node.js versions

v5.100.0

Compare Source

Fixes
  • Fixed the case where an ES modules entry chunk depends on the runtime chunk hash
  • Handle function exports in webpack module wrapper
  • Ensure dependent chunks are imported before startup & fix duplicate export of 'default'
  • Generate lose closing brace when exports are unprovided
  • CleanPlugin doesn't unlink same file twice
  • Fixed unexpected error codes from fs.unlink on Windows
  • Typescript types
Features
  • HMR support for ES modules output
  • ES module output mode now fully supports splitChunks when external variables and runtimeChunk are not set.
  • Added support using keyword
  • Implemented tc39 Defer Module Evaluation (experiment)
  • Support dynamic template literals expressions for new URL(...)
  • Enable ES modules worker chunk loading for Node.js targets
  • Improved support for destructing in DefinePlugin
  • Added VirtualUrlPlugin to support virtual: scheme
Performance Improvements
  • Remove useless startup entrypoint runtime for ES modules output
  • Cache new URL(...) evaluate expression

v5.99.9

Compare Source

Fixes
  • HMR might fail if there are new initial chunks
  • Destructuring namespace import with default
  • Destructuring namespace import with computed-property
  • Generate valid code for es export generation for multiple module entries
  • Fixed public path issue for ES modules
  • Asset modules work when lazy compilation used
  • Eliminate unused statements in certain scenarios
  • Fixed regression with location and order of dependencies
  • Fixed typescript types

v5.99.8

Compare Source

Fixes
  • Fixed type error with latest @types/node
  • Fixed typescript types

v5.99.7

Compare Source

Fixes
  • Don't skip export generation for default reexport (#​19463)
  • Fixed module library export generation for reexport (#​19459)
  • Avoid module concatenation in child compilation for module library (#​19457)
  • Ensure HMR recover gracefully when CSS module with error
  • Respect cause of any errors and errors of AggregateError in stats output
  • Added missing @types/json-schema in types

v5.99.6

Compare Source

Fixes
  • Respect public path for ES modules
  • Fixed generation of module for module library when mixing commonjs and esm modules
  • Always apply FlagDependencyExportsPlugin for libraries where it required
  • Faster logic for dead control flow
  • Typescript types

v5.99.5

Compare Source

Fixes
  • Control dead flow for labeled and blockless statements

v5.99.4

Compare Source

Fixes
  • Fixed terminated state for if/else

v5.99.3

Compare Source

Fixes
  • Fixed dead control flow with deep nested if/else

v5.99.2

Compare Source

Fixes
  • Dead control flow for exotic cases

v5.99.1

Compare Source

Fixes
  • Dead control flow for many cases

v5.99.0

Compare Source

Fixes
  • Fixed a lot of types
  • Fixed runtime error when using asset module as entrypoint and runtimeChunk
  • JSON generator now preserves __proto__ property
  • Fixed when entry module isn't executed when targeting webworker with a runtime chunk
  • Do not duplicate modules with import attributes and reexport
  • The module and module ESM libraries have been union and code generation has been improved
  • Use a valid output path for errored asset modules
  • Remove BOM from JavaScript and CSS files when loader was not used
  • Create export for externals for module/modern-module library
  • Export unprovided variables for commonjs-static library
  • Forward semicolons from meta.webpackAST
  • Use xxhash64 for cache.hashAlgorithm when experiments.futureDefaults enabled
  • [CSS] Fixed profiling plugin for CSS
  • [CSS] Avoid extra module.export output for CSS module
Features
  • Add dead control flow check
  • Handle new Worker(import.meta.url) and new Worker(new URL(import.meta.url)) syntax
  • Added ability to generate custom error content for generators
Performance Improvements
  • Fixed excessive calls of getAllReferences
  • Optimize loc for monomorphic inline caching
Chores
  • Switch on strict types for typescript

v5.98.0

Compare Source

Fixes
Performance Improvements
Chores
Features
Continuous Integration

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.97.1...v5.98.0

v5.97.1

Compare Source

Bug Fixes

  • Performance regression
  • Sub define key should't be renamed when it's a defined variable

v5.97.0

Compare Source

Bug Fixes

  • Don't crash with filesystem cache and unknown scheme
  • Generate a valid code when output.iife is true and output.library.type is umd
  • Fixed conflict variable name with concatenate modules and runtime code
  • Merge duplicate chunks before
  • Collisions in ESM library
  • Use recursive search for versions of shared dependencies
  • [WASM] Don't crash WebAssembly with Reference Types (sync and async)
  • [WASM] Fixed wasm loading for sync and async webassembly
  • [CSS] Don't add [uniqueName] to localIdentName when it is empty
  • [CSS] Parsing strings on Windows
  • [CSS] Fixed CSS local escaping

New Features

  • Added support for injecting debug IDs
  • Export the MergeDuplicateChunks plugin
  • Added universal loading for JS chunks and JS worker chunks (only ES modules)
  • [WASM] Added universal loading for WebAssembly chunks (only for async WebAssembly)
  • [CSS] Allow initial CSS chunks to be placed anywhere - the output.cssHeadDataCompression option was deleted
  • [CSS] Added universal loading for CSS chunks
  • [CSS] Parse ICSS @value at-rules in CSS modules
  • [CSS] Parse ICSS :import rules in CSS modules
  • [CSS] Added the url and import options for CSS
  • [CSS] Allow to import custom properties in CSS modules

Performance

  • Faster Queue implementation, also fixed queue iterator state in dequeue method to ensure correct behavior after item removal

v5.96.1

Compare Source

Bug Fixes

  • [Types] Add @types/eslint-scope to dependencieS
  • [Types] Fixed regression in validate

v5.96.0

Compare Source

Bug Fixes

  • Fixed Module Federation should track all referenced chunks
  • Handle Data URI without base64 word
  • HotUpdateChunk have correct runtime when modified with new runtime
  • Order of chunks ids in generated chunk code
  • No extra Javascript chunks when using asset module as an entrypoint
  • Use optimistically logic for output.environment.dynamicImport to determine chunk format when no browserslist or target
  • Collision with global variables for optimization.avoidEntryIife
  • Avoid through variables in inlined module
  • Allow chunk template strings in output.devtoolNamespace
  • No extra runtime for get javascript/css chunk filename
  • No extra runtime for prefetch and preload in JS runtime when it was unsed in CSS
  • Avoid cache invalidation using ProgressPlugin
  • Increase parallelism when using importModule on the execution stage
  • Correctly parsing string in export and import
  • Typescript types
  • [CSS] css/auto considers a module depending on its filename as css (pure CSS) or css/local, before it was css/global and css/local
  • [CSS] Always interpolate classes even if they are not involved in export
  • [CSS] No extra runtime in Javascript runtime chunks for asset modules used in CSS
  • [CSS] No extra runtime in Javascript runtime chunks for external asset modules used in CSS
  • [CSS] No extra runtime for the node target
  • [CSS] Fixed url()s and @import parsing
  • [CSS] Fixed - emit a warning on broken :local and :global

New Features

  • Export CSS and ESM runtime modules
  • Single Runtime Chunk and Federation eager module hoisting
  • [CSS] Support /* webpackIgnore: true */ for CSS files
  • [CSS] Support src() support
  • [CSS] CSS nesting in CSS modules

v5.95.0

Compare Source

Bug Fixes

  • Fixed hanging when attempting to read a symlink-like file that it can't read
  • Handle default for import context element dependency
  • Merge duplicate chunks call after split chunks
  • Generate correctly code for dynamically importing the same file twice and destructuring
  • Use content hash as [base] and [name] for extracted DataURI's
  • Distinguish module and import in module-import for externals import's
  • [Types] Make EnvironmentPlugin default values types less strict
  • [Types] Typescript 5.6 compatibility

New Features

  • Add new optimization.avoidEntryIife option (true by default for the production mode)
  • Pass output.hash* options to loader context

Performance

  • Avoid unneeded re-visit in build chunk graph

v5.94.0

Compare Source

Bug Fixes

  • Added runtime condition for harmony reexport checked
  • Handle properly data/http/https protocols in source maps
  • Make bigint optimistic when browserslist not found
  • Move @​types/eslint-scope to dev deps
  • Related in asset stats is now always an array when no related found
  • Handle ASI for export declarations
  • Mangle destruction incorrect with export named default properly
  • Fixed unexpected asi generation with sequence expression
  • Fixed a lot of types

New Features

  • Added new external type "module-import"
  • Support webpackIgnore for new URL() construction
  • [CSS] @import pathinfo support

Security

  • Fixed DOM clobbering in auto public path

v5.93.0

Compare Source

Bug Fixes

  • Generate correct relative path to runtime chunks
  • Makes DefinePlugin quieter under default log level
  • Fixed mangle destructuring default in namespace import
  • Fixed consumption of eager shared modules for module federation
  • Strip slash for pretty regexp
  • Calculate correct contenthash for CSS generator options

New Features

  • Added the binary generator option for asset modules to explicitly keep source maps produced by loaders
  • Added the modern-module library value for tree shakable output
  • Added the overrideStrict option to override strict or non-strict mode for javascript modules

v5.92.1

Compare Source

Bug Fixes

  • Doesn't crash with an error when the css experiment is enabled and contenthash is used

v5.92.0

Compare Source

Bug Fixes

  • Correct tidle range's comutation for module federation
  • Consider runtime for pure expression dependency update hash
  • Return value in the subtractRuntime function for runtime logic
  • Fixed failed to resolve promise when eager import a dynamic cjs
  • Avoid generation extra code for external modules when remapping is not required
  • The css/global type now handles the exports name
  • Avoid hashing for @keyframe and @property at-rules in css/global type
  • Fixed mangle with destructuring for JSON modules
  • The stats.hasWarnings() method now respects the ignoreWarnings option
  • Fixed ArrayQueue iterator
  • Correct behavior of __webpack_exports_info__.a.b.canMangle
  • Changed to the correct plugin name for the CommonJsChunkFormatPlugin plugin
  • Set the chunkLoading option to the import when environment is unknown and output is module
  • Fixed when runtimeChunk has no exports when module chunkFormat used
  • [CSS] Fixed parsing minimized CSS import
  • [CSS] URLs in CSS files now have correct public path
  • [CSS] The css module type should not allow parser to switch mode
  • [Types] Improved context module types

New Features

  • Added platform target properties to compiler
  • Improved multi compiler cache location and validating it
  • Support import attributes spec (with keyword)
  • Support node: prefix for Node.js core modules in runtime code
  • Support prefetch/preload for module chunk format
  • Support "..." in the importsFields option for resolver
  • Root module is less prone to be wrapped in IIFE
  • Export InitFragment class for plugins
  • Export compileBooleanMatcher util for plugins
  • Export InputFileSystem and OutputFileSystem types
  • [CSS] Support the esModule generator option for CSS modules
  • [CSS] Support CSS when chunk format is module

v5.91.0

Compare Source

Bug Fixes

  • Deserializer for ignored modules doesn't crash
  • Allow the unsafeCache option to be a proxy object
  • Normalize the snapshot.unmanagedPaths option
  • Fixed fs types
  • Fixed resolve's plugins types
  • Fixed wrongly calculate postOrderIndex
  • Fixed watching types
  • Output import attrbiutes/import assertions for external JS imports
  • Throw an error when DllPlugin needs to generate multiple manifest files, but the path is the same
  • [CSS] Output layer/supports/media for external CSS imports

New Features

  • Allow to customize the stage of BannerPlugin
  • [CSS] Support CSS exports convention
  • [CSS] support CSS local ident name
  • [CSS] Support __webpack_nonce__ for CSS chunks
  • [CSS] Support fetchPriority for CSS chunks
  • [CSS] Allow to use LZW to compress css head meta (enabled in the production mode by default)
  • [CSS] Support prefetch/preload for CSS chunks

v5.90.3

Compare Source

Bug Fixes

  • don't mangle when destructuring a reexport
  • types for Stats.toJson() and Stats.toString()
  • many internal types
  • [CSS] clean up export css local vars

Perf

  • simplify and optimize chunk graph creation

v5.90.2

Compare Source

Bug Fixes

  • use Math.imul in fnv1a32 to avoid loss of precision, directly hash UTF16 values
  • the setStatus() of the HMR module should not return an array, which may cause infinite recursion
  • __webpack_exports_info__.xxx.canMangle shouldn't always same as default
  • mangle export with destructuring
  • use new runtime to reconsider skipped connections activeState
  • make dynamic import optional in try/catch
  • improve auto publicPath detection

Dependencies & Maintenance

  • improve CI setup and include Node.js@​21

v5.90.1

Compare Source

Bug Fixes

  • set unmanagedPaths in defaults
  • correct preOrderIndex and postOrderIndex
  • add fallback for MIME mismatch error in async wasm loading
  • browsers versions of ECMA features

Performance

  • optimize compareStringsNumeric
  • optimize numberHash using 32-bit FNV1a for small ranges, 64-bit for larger
  • reuse VM context across webpack magic comments

v5.90.0

Compare Source

Bug Fixes

  • Fixed inner graph for classes
  • Optimized RemoveParentModulesPlugin via bigint arithmetic
  • Fixed worklet detection in production mode
  • Fixed an error for cyclic importModule
  • Fixed types for Server and Dirent
  • Added the fetchPriority to hmr runtime's ensureChunk function
  • Don't warn about dynamic import for build dependencies
  • External module generation respects the output.environment.arrowFunction option
  • Fixed consumimng shared runtime module logic
  • Fixed a runtime logic of multiple chunks
  • Fixed destructing assignment of dynamic import json file
  • Passing errors array for a module hash
  • Added /*#__PURE__*/ to generated JSON.parse()
  • Generated a library manifest after clean plugin
  • Fixed non amd externals and amd library
  • Fixed a bug in SideEffectsFlagPlugin with namespace re-exports
  • Fixed an error message for condition or
  • The strictModuleErrorHandling is now working
  • Clean up child compilation chunk graph to avoid memory leak
  • [CSS] - Fixed CSS import prefer relative resolution
  • [CSS] - Fixed CSS runtime chunk loading error message

New Features

  • Allow to set false for dev server in webpack.config.js
  • Added a warning for async external when not supported
  • Added a warning for async module when not supported
  • Added the node-module option for the node.__filename/__dirname and enable it by default for ESM target
  • Added the snapshot.unmanagedPaths option
  • Exposed the MultiCompilerOptions type
  • [CSS] - Added CSS parser options to enable/disable named exports
  • [CSS] - Moved CSS the exportsOnly option to CSS generator options

Dependencies & Maintenance

  • use node.js LTS version for lint
  • bump actions/cache from 3 to 4
  • bump prettier from 3.2.1 to 3.2.3
  • bump assemblyscript
  • bump actions/checkout from 3 to 4

Full Changelog: https://github.com/webpack/webpack/compare/v5.89.0...v5.90.0

v5.89.0

Compare Source

New Features

Dependencies & Maintenance

Full Changelog: https://github.com/webpack/webpack/compare/v5.88.2...v5.89.0

v5.88.2

Compare Source

Bug Fixes

Full Changelog: https://github.com/webpack/webpack/compare/v5.88.1...v5.88.2

v5.88.1

Compare Source

Developer Experience

Full Changelog: https://github.com/webpack/webpack/compare/v5.88.0...v5.88.1

v5.88.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.87.0...v5.88.0

v5.87.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

New Contributors

@​aboktor made their first contribution in #​16991 #​16989
@​silverwind made their first contribution in #​17339 via #​17329

Full Changelog: https://github.com/webpack/webpack/compare/v5.86.0...v5.87.0

v5.86.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.85.1...v5.86.0

v5.85.1

Compare Source

Bug Fixes

  • Fix bug in handling barrel imports (#​17305) by @​bworline in #​17307 - NOTE: An internal API BasicEvaluatedExpression.getMemberRangeStarts has been changed to BasicEvaluatedExpression.getMemberRanges, please see type definition changes and the pull request for more information.

Dependencies & Maintenance

Full Changelog: https://github.com/webpack/webpack/compare/v5.85.0...v5.85.1

v5.85.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

Full Changelog: https://github.com/webpack/webpack/compare/v5.84.1...v5.85.0

v5.84.1

Compare Source

Bug Fixes

Dependencies & Maintenance

Full Changelog: https://github.com/webpack/webpack/compare/v5.84.0...v5.84.1

v5.84.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.83.1...v5.84.0

v5.83.1

Compare Source

Bug Fixes

Full Changelog: https://github.com/webpack/webpack/compare/v5.83.0...v5.83.1

v5.83.0

Compare Source

New Features

Bug Fixes

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.82.1...v5.83.0

v5.82.1

Compare Source

Bug Fixes

Developer Experience

  • Improve module type strictness for Module.prototype.type expand ModuleTypeConstants by @​TheLarkInn in #​17136

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.82.0...v5.82.1

v5.82.0

Compare Source

New Features

Bug Fixes

Tests & Contributor Experience

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.81.0...v5.82.0

v5.81.0

Compare Source

New Features

Bug Fixes

Tests & Contributor Experience

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.80.0...v5.81.0

v5.80.0

Compare Source

New Features

Bug Fixes

Tests & Contributor Experience

Developer Experience

Dependencies & Maintenance

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.79.0...v5.80.0

v5.79.0

Compare Source

New Features

  • webpack will now support simple destructuring scenarios for treeshaking namespaced imports and DefinePlugin by @​vankop in #​16941

Bugfixes

Developer Experience

Contributor Experience

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.78.0...v5.79.0

v5.78.0

Compare Source

Features

Bugfixes

Performance

Contributor Experience

Open in GitHub Codespaces

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.77.0...v5.78.0

v5.77.0

Compare Source

New Features

Developer Experience

  • Improve resolve.extensions error message to suggest when "." is missing before the extension by @​snitin315 in #​16807

Contributor Experience

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0

v5.76.3

Compare Source

Bugfixes

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.76.2...v5.76.3

v5.76.2

Compare Source

Bugfixes

  • Fix bug where a missing semicolon in generated bundle output for publicPathRuntime would cause concatenated runtime errors by @​snitin315 in #​16811
  • Remove redundant semicolons generated in bundle runtime code after onScriptComplete function by @​ahaoboy in #​16347
  • Fix bug where RealContentHashPlugin was not respecting output.hashSalt's ability to cause a force recalculation of [contenthash] for emitted assets by @​dmichon-msft #​16789

Performance

  • Improve memory and runtime performance of sourcemaps via hoisting Regular Expression literals to stored variables by @​TheLarkInn in #​15722
  • Correct v8 deoptimization in ModuleGraph due to instance property declarations occurring outside of constructor by @​snitin315 in #​16830

Developer Experience

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.76.1...v5.76.2

v5.76.1

Compare Source

Fixed

  • Added assert/strict built-in to NodeTargetPlugin

Revert

v5.76.0

Compare Source

Bugfixes

Features

Security

Repo Changes

New Contributors

Full Changelog: https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0

v5.75.0

Compare Source

Bugfixes

  • experiments.* normalize to false 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

Compare Source

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")
  • 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 for ModuleFederationPlugin
  • 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

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

Features

  • choose smarter default for uniqueName when using a output.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 returns null
  • 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

Compare Source

Features

  • update node.js version constraints for ESM support
  • add baseUri to entry options to configure a static base uri (the base of new 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 to require.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 and loaderContext.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

Compare Source

Revert

  • revert "handle multiple alternative directories (e. g. due to resolve.alias or resolve.modules) when creating an context module"

v5.69.0

Compare Source

Features

  • automatically switch to an ESM compatible environment when enabling ESM output mode
  • handle multiple alternative directories (e. g. due to resolve.alias or resolve.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

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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 without requiredVersion 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 and ResolvePluginInstance

Preparations for the future

  • hashDigestLength will default to 16 in webpack 6 (experiments.futureDefaults)

v5.64.4

Compare Source

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

Compare Source

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

Compare Source

Bugfixes

  • avoid double initial compilation due to invalid dependencies with managedPaths

v5.64.1

Compare Source

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 in require.ensure
  • fix cleaning of symlinks in output.clean: true
  • fix change detection with unsafeCache within managedPaths (node_modules)
  • bump webpack-sources for Stack Overflow bugfix

v5.64.0

Compare Source

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

Compare Source

Features

  • allow passing chunkLoading: false to disable on-demand loading

Bugfixes

  • fix import 'single-quote' in esm build dependencies

v5.62.2

Compare Source

Bugfixes

  • fix __system_context__ injection when using the library option on entrypoint
  • enable exportsPresence: "error" by default in futureDefaults
  • 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

Compare Source

Bugfix

  • fix invalid generated code when omitting ;

v5.62.0

Compare Source

Features

  • add options to configure export presence checking
    • parser.javascript.reexportExportsPresence: false allows to disable warnings for non-existing exports during the migration from export ... from "..." to export 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 for splitChunks.fallbackCacheGroup.maxSize too
  • fix schema of listen option, allow to omit port
  • 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

v5.61.0

Compare Source

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

Compare Source

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 in beforeLoaders hook

v5.59.1

Compare Source

Bugfixes

  • fix regexp in managedPaths
  • fix hanging when trying to write lockfile for experiments.buildHttp

v5.59.0

Compare Source

Features

  • add /*#__PURE__*/ for Object() 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

Compare Source

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

v5.58.1

Compare Source

Bugfixes

  • fix .webpack[] suffix to not execute rules
  • revert performance optimization that has too large memory usage in large builds

v5.58.0

Compare Source

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

Compare Source

Bugfix

  • fix experiments.cacheUnaffected which broke by last release

v5.57.0

Compare Source

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

Compare Source

Bugfix

  • DefinePlugin: fix conflict with older variants of the plugin

v5.56.0

Compare Source

Performance

  • make DefinePlugin rebuild check more efficient performance and memory wise

v5.55.1

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

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

Compare Source

Performance

  • split fresh created persistent cache files by time to avoid creating very large files

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [webpack](https://github.com/webpack/webpack) | [`5.52.0` → `5.112.2`](https://renovatebot.com/diffs/npm/webpack/5.52.0/5.112.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/webpack/5.112.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/webpack/5.52.0/5.112.2?slim=true) | --- ### Release Notes <details> <summary>webpack/webpack (webpack)</summary> ### [`v5.112.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51122) [Compare Source](https://github.com/webpack/webpack/compare/v5.112.1...v5.112.2) ##### Patch Changes - Reduce repeated scans when concatenating imported modules. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22865](https://github.com/webpack/webpack/pull/22865)) - Avoid allocating CSS module sets for single-group chunks. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22866](https://github.com/webpack/webpack/pull/22866)) - Return the value of every module type loaded with `importModule()`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22869](https://github.com/webpack/webpack/pull/22869)) ### [`v5.112.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51121) [Compare Source](https://github.com/webpack/webpack/compare/v5.112.0...v5.112.1) ##### Patch Changes - Rebuild a lazy barrel in watch when what it defers changes, and keep the imports and re-exports it still runs. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22699](https://github.com/webpack/webpack/pull/22699)) - Rebuild under `cacheUnaffected` a module whose re-export target goes or returns. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22749](https://github.com/webpack/webpack/pull/22749)) - Fix "Self-reference dependency has unused export name" for CommonJS namespace re-exports. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22791](https://github.com/webpack/webpack/pull/22791)) - Fix `exportType: "style"` CSS modules throwing outside the runtime chunk. (by [@&#8203;lazerg](https://github.com/lazerg) in [#&#8203;22833](https://github.com/webpack/webpack/pull/22833)) - Fix crash when a CSS module with `exportType: "style"` imports an ignored stylesheet. (by [@&#8203;codeXsidd](https://github.com/codeXsidd) in [#&#8203;22846](https://github.com/webpack/webpack/pull/22846)) - Keep empty process environment variables that `.env` files don't define in `DotenvPlugin`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22794](https://github.com/webpack/webpack/pull/22794)) - Rehash an ESM entry chunk when a chunk it imports by file name changes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22804](https://github.com/webpack/webpack/pull/22804)) - Handle a NUL inside an HTML CDATA section the way the parsing spec does. (by [@&#8203;dependabot](https://github.com/apps/dependabot) in [#&#8203;22811](https://github.com/webpack/webpack/pull/22811)) - Keep module exports live across chunks, runtimes, HMR and eval, sparing globals. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22733](https://github.com/webpack/webpack/pull/22733)) - Await asynchronous modules that `ProvidePlugin` injects into ES modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22728](https://github.com/webpack/webpack/pull/22728)) - Keep a resolve that ends after the compiler closed from throwing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22795](https://github.com/webpack/webpack/pull/22795)) - Preserve string names passed to SharedWorker constructors. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22770](https://github.com/webpack/webpack/pull/22770)) - Preserve string contents when extracting source map comments. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22768](https://github.com/webpack/webpack/pull/22768)) - Scope strict-mode, async and generator block function declarations to their block. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22800](https://github.com/webpack/webpack/pull/22800)) - Preserve raw dotenv values when reusing cached environment files. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22787](https://github.com/webpack/webpack/pull/22787)) - Preserve assigned or patched built-ins, conversions and pattern targets. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22761](https://github.com/webpack/webpack/pull/22761)) - Keep globals a `globalThis` write replaces, and `slice` on a patched array. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22862](https://github.com/webpack/webpack/pull/22862)) - Skip HTML script tags for shared chunks that emit no JavaScript. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22779](https://github.com/webpack/webpack/pull/22779)) - Keep the digits Firefox lays out a minified CSS percentage with. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22718](https://github.com/webpack/webpack/pull/22718)) - Reject a second `srcset` descriptor after a `0x` density descriptor. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22741](https://github.com/webpack/webpack/pull/22741)) - Minify JavaScript faster, folding string methods on constants and `x -= 1`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22823](https://github.com/webpack/webpack/pull/22823)) - Shorten minified JavaScript, and keep it running like its source. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22717](https://github.com/webpack/webpack/pull/22717)) - Drop more unused functions, arguments, calls, global reads and variable copies when minifying JavaScript. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22789](https://github.com/webpack/webpack/pull/22789)) - Minify JavaScript smaller where swc does, and fold a function's `length` right. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22826](https://github.com/webpack/webpack/pull/22826)) - Reduce JavaScript output size where oxc or swc produce smaller output. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22829](https://github.com/webpack/webpack/pull/22829)) - Update watchpack to 2.6.3 and rebuild on a `node_modules` created mid-build. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22743](https://github.com/webpack/webpack/pull/22743)) - Support `concatenateModules` with `cacheUnaffected`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22746](https://github.com/webpack/webpack/pull/22746)) - Update schema-utils to 4.8.1. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22774](https://github.com/webpack/webpack/pull/22774)) - Keep CSS fallbacks, vendor overrides, `oklch()` hues and HTML elements. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22753](https://github.com/webpack/webpack/pull/22753)) - Validate `CleanPlugin` and `DotenvPlugin` options with a precompiled check, so valid options no longer compile their schema at startup. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22758](https://github.com/webpack/webpack/pull/22758)) - Speed up startup and CSS minification, sharing the compile cache with workers. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22706](https://github.com/webpack/webpack/pull/22706)) - Use precise, generic types for modules, parsers, generators, stats and loaders. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22731](https://github.com/webpack/webpack/pull/22731)) ### [`v5.112.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51120) [Compare Source](https://github.com/webpack/webpack/compare/v5.111.1...v5.112.0) ##### Minor Changes - Apply `plugins` set on a multi-configuration array to the `MultiCompiler`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22702](https://github.com/webpack/webpack/pull/22702)) - Add `optimization.minimize.css.dropOverriddenDeclarations`, dropping a declaration a later one overrides where no target is named. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22175](https://github.com/webpack/webpack/pull/22175)) - Export more plugins under their scope, move eleven loose exports under theirs, deprecate the old, and expose `template.DependencyTemplate`, `module.NullFactory` and `util.makeSerializable`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22261](https://github.com/webpack/webpack/pull/22261)) - Let `util.makeSerializable` take several requests, current one first. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22340](https://github.com/webpack/webpack/pull/22340)) - Emit the source map `scopes` field, so a debugger resolves imported ESM bindings by name. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21999](https://github.com/webpack/webpack/pull/21999)) - Add `library.entryExports: "all"` to expose the exports of every entry module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22235](https://github.com/webpack/webpack/pull/22235)) - Recognize a required `const` binding assigned to `exports` as a re-export. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22276](https://github.com/webpack/webpack/pull/22276)) - Accept glob patterns in more path, module and file filter options. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22422](https://github.com/webpack/webpack/pull/22422)) - Bundle a run of inline `<script>` tags into one chunk the page can inline. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22188](https://github.com/webpack/webpack/pull/22188)) - Add `module.parser.javascript.topLevelThis` for classic-script `this` semantics. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22193](https://github.com/webpack/webpack/pull/22193)) - Add `module.parser.html.chunkName` and a `webpackChunkName` comment for tags. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22200](https://github.com/webpack/webpack/pull/22200)) - Add `include`/`exclude` version and request filters to shared modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22297](https://github.com/webpack/webpack/pull/22297)) - Keep module side-effect information in ESM output as PURE annotations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21789](https://github.com/webpack/webpack/pull/21789)) - Add `optimization.splitChunks.dedupDepth` to discover chunk intersections. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22240](https://github.com/webpack/webpack/pull/22240)) - Add `optimization.minimizeOptions.json`, on by default with `futureDefaults`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22286](https://github.com/webpack/webpack/pull/22286)) - Add `SSRManifestPlugin` and fix server-rendered CSS collection and adoption. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21913](https://github.com/webpack/webpack/pull/21913)) - Add an `ignore` hook to `output.copy` and keep unfollowed `from` symlinks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22216](https://github.com/webpack/webpack/pull/22216)) - Add `optimization.minimize.css.convertApproximateColors`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22157](https://github.com/webpack/webpack/pull/22157)) - Add XML parsing and SVG/XML minification with data URLs and attribute sorting. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22269](https://github.com/webpack/webpack/pull/22269)) - Extract CSS/HTML license comments like JS and safely shorten CSS gradients. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22408](https://github.com/webpack/webpack/pull/22408)) - Resolve an async `DefinePlugin.runtimeValue` over an async `beforeParse` hook. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22210](https://github.com/webpack/webpack/pull/22210)) - Add CSS `customMedia`/`customSelectors` minimize options; resolve chained names. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22360](https://github.com/webpack/webpack/pull/22360)) - Rename the `Harmony*` names to `ESM*` and deprecate the old spellings. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22283](https://github.com/webpack/webpack/pull/22283)) - Reduce `css.syntax`/`html.syntax` to `parser`, `printer`, `SourceProcessor` with one node path. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22233](https://github.com/webpack/webpack/pull/22233)) - Add a JavaScript `SyntaxTree` read like the CSS one, and `toEstreeObject`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22608](https://github.com/webpack/webpack/pull/22608)) - Fix minified code that threw, and add `pure_conversions` and `pure_heritage`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22473](https://github.com/webpack/webpack/pull/22473)) - Shorten more CSS values and selectors, fold longhands, order declarations and gather layer blocks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22442](https://github.com/webpack/webpack/pull/22442)) - Add `optimization.minimize.css.charset`; `false` drops `@charset` for UTF-8 CSS. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22632](https://github.com/webpack/webpack/pull/22632)) ##### Patch Changes - Join rules a gathered `@layer` leaves adjacent, and an at-rule with a later one (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22204](https://github.com/webpack/webpack/pull/22204)) stating the same condition; read what a condition declares. - Read escaped CSS names and functions as spelled, and minify them unescaped. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22262](https://github.com/webpack/webpack/pull/22262)) - Minify JavaScript, CSS and HTML assets whose names carry a `#fragment`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22277](https://github.com/webpack/webpack/pull/22277)) - Require `minimizer-webpack-plugin` 5.12, so inline scripts in HTML minify again. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22296](https://github.com/webpack/webpack/pull/22296)) - Minify the attributes of an HTML tag without rewriting the template in it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22166](https://github.com/webpack/webpack/pull/22166)) - Order joined at-rule selector lists and gather a repeated large `@layer` block. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22224](https://github.com/webpack/webpack/pull/22224)) - Preserve case-sensitive template identifiers when minifying HTML tag attributes. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22177](https://github.com/webpack/webpack/pull/22177)) - Match Acorn's strict directives, Unicode identifiers and expression validation. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22185](https://github.com/webpack/webpack/pull/22185)) - Skip concatenating modules when `optimization.providedExports` is disabled. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22410](https://github.com/webpack/webpack/pull/22410)) - Join rules a nesting lowering or duplicate drop left for a second pass. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22268](https://github.com/webpack/webpack/pull/22268)) - Write U+00A0 in a minified HTML attribute as the character, not `&nbsp;`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22208](https://github.com/webpack/webpack/pull/22208)) - Escape a foreign `<script>` or `<style>` body, which is character data. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22233](https://github.com/webpack/webpack/pull/22233)) - Name the runtime module whose generation fails while hashing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22203](https://github.com/webpack/webpack/pull/22203)) - Rebuild a module in watch when its missing unused dependencies swap. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22693](https://github.com/webpack/webpack/pull/22693)) - Rebuild in watch mode when a file is deleted while a build is running. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22650](https://github.com/webpack/webpack/pull/22650)) - Take out the declaration a lowered shorthand writes over, which its source spelling made look like a fallback. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22270](https://github.com/webpack/webpack/pull/22270)) - Read a foreign `<script>` or `<style>` body as character data, not as raw text. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22258](https://github.com/webpack/webpack/pull/22258)) - Keep an inline `<style>` body as written when rebuilding a page webpack emitted. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22265](https://github.com/webpack/webpack/pull/22265)) - Fix minified HTML for `style` spellings, CSS quotes, `<noscript>` and a BOM. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22370](https://github.com/webpack/webpack/pull/22370)) - Record a build dependency required through a spread on Bun. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22230](https://github.com/webpack/webpack/pull/22230)) - Write a nested selector opening on a combinator against its parent the way the printer writes one. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22271](https://github.com/webpack/webpack/pull/22271)) - Fix missing async stylesheets with a shared runtime. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22659](https://github.com/webpack/webpack/pull/22659)) - Support deferred imports introduced by hot updates. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22668](https://github.com/webpack/webpack/pull/22668)) - Fix trailing commas in `require.resolve()` and `require.resolveWeak()` calls. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22658](https://github.com/webpack/webpack/pull/22658)) - Keep regular expressions, functions and plugins distinct in resolver caches. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22667](https://github.com/webpack/webpack/pull/22667)) - Order the list a lowered nested selector lands in on what is written, not on what was. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22287](https://github.com/webpack/webpack/pull/22287)) - Hoist a vendor-prefixed nested rule for a target that reads no nesting. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22308](https://github.com/webpack/webpack/pull/22308)) - Name a hoisted nested rule in the dark-scheme copy it writes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22318](https://github.com/webpack/webpack/pull/22318)) - Minify data: URL payloads in HTML attributes and `new URL`, and web manifests. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22300](https://github.com/webpack/webpack/pull/22300)) - fold a fallback's colors over the author's arguments, and print with (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22314](https://github.com/webpack/webpack/pull/22314)) `recurseBlocks: false` rather than throwing - Read a regular expression repeating a capture group name in linear time. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22187](https://github.com/webpack/webpack/pull/22187)) - Make lazy barrels defer import declarations and keep no deferral across compilations. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22359](https://github.com/webpack/webpack/pull/22359)) - Invalidate unaffected caches when connection activity or async status changes. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22431](https://github.com/webpack/webpack/pull/22431)) - Order concatenated re-exports deterministically when their source order ties. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22697](https://github.com/webpack/webpack/pull/22697)) - Regenerate a module's exports when a require() cycle forms or breaks around it. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22644](https://github.com/webpack/webpack/pull/22644)) - Recompute re-exports, code and warnings when a module goes missing or returns. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22432](https://github.com/webpack/webpack/pull/22432)) - Preserve loader resolution dependencies across cached rebuilds. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22430](https://github.com/webpack/webpack/pull/22430)) - Read unwatched changes afresh and wait for restarted watch compilers to finish. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22646](https://github.com/webpack/webpack/pull/22646)) - Parse loader output for `.wasm` as JavaScript when async wasm is auto-enabled. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22556](https://github.com/webpack/webpack/pull/22556)) - Remove modules an async chunk inherits from a named parent chunk grown later. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22555](https://github.com/webpack/webpack/pull/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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22352](https://github.com/webpack/webpack/pull/22352)) - Preserve the source phase of dynamic WebAssembly import contexts. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22604](https://github.com/webpack/webpack/pull/22604)) - Await every async entry before resolving an ESM library import. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22617](https://github.com/webpack/webpack/pull/22617)) - Keep unknown `import.meta` properties per module, alike for aliases and direct use. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22618](https://github.com/webpack/webpack/pull/22618)) - Return WebAssembly modules directly from eager and weak source imports. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22606](https://github.com/webpack/webpack/pull/22606)) - Handle missing ESM hot update manifests in Node.js without failing HMR checks. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22613](https://github.com/webpack/webpack/pull/22613)) - Speed up JavaScript parsing: comment lookup, the tokenizer and the grammar. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22179](https://github.com/webpack/webpack/pull/22179)) - Name a core module external by its key whichever spelling the code uses. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22565](https://github.com/webpack/webpack/pull/22565)) - Prefix and drop 2009 flexbox names, keeping them where a box lays out by them. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22320](https://github.com/webpack/webpack/pull/22320)) - Keep `initial` where Gecko or WebKit reads the property's keyword apart. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22176](https://github.com/webpack/webpack/pull/22176)) - Fold `calc()` as lightningcss does, keeping it where a bare value is refused. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22205](https://github.com/webpack/webpack/pull/22205)) - Keep a `color-mix()` whose hue rests on a gray's conversion residue. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22198](https://github.com/webpack/webpack/pull/22198)) - Keep a shorthand's initial keyword where it parts two keywords of another slot. (by [@&#8203;dependabot](https://github.com/apps/dependabot) in [#&#8203;22518](https://github.com/webpack/webpack/pull/22518)) - Group `lib/` and `lib/dependencies/` sources into directories. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22118](https://github.com/webpack/webpack/pull/22118)) - Treat a browserslist target given at a bare major version (e.g. `safari 10`) as `<major>.0` when a feature's first supported version is a `[major, minor]` pair, so it is no longer reported as unsupported. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22280](https://github.com/webpack/webpack/pull/22280)) - Keep the last HMR update with `output.clean`; stop rechecking removed files. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22339](https://github.com/webpack/webpack/pull/22339)) - Read and print a CSS backslash as the spec does, and a NUL as U+FFFD. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22201](https://github.com/webpack/webpack/pull/22201)) - Make minified CSS and HTML stable on a second pass, even for truncated input. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22290](https://github.com/webpack/webpack/pull/22290)) - Minify a merged `<style>` run as one sheet, closing each where its input ended. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22302](https://github.com/webpack/webpack/pull/22302)) - Minify JavaScript with webpack's printer under `futureDefaults`, `terser` otherwise. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22217](https://github.com/webpack/webpack/pull/22217)) - Preserve `wrappedContextRegExp` flags when rebuilding context request matchers. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22303](https://github.com/webpack/webpack/pull/22303)) - Minify CSS `@supports`, `@import` and `@custom-media` conditions, and exponent numbers. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22347](https://github.com/webpack/webpack/pull/22347)) - Fold unitless `hsl()`/`hwb()` channels, and only where the separators are valid. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22242](https://github.com/webpack/webpack/pull/22242)) - Split `@value` imports on the `from` keyword, not a substring in the path. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22306](https://github.com/webpack/webpack/pull/22306)) - Destructure a dotted `DefinePlugin` key whose value is falsy or a runtimeValue. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22215](https://github.com/webpack/webpack/pull/22215)) - Make `Stats.hasErrors()` read errors through the `processErrors` hook (via `getErrors()`), matching `hasWarnings()`, so a plugin that filters errors out of the hook is no longer contradicted by `hasErrors()`. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22281](https://github.com/webpack/webpack/pull/22281)) - Allow wrapping an external concatenated module, now asked of the module itself, and re-exporting a JSON or asset `default` as a namespace object. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22226](https://github.com/webpack/webpack/pull/22226)) - Match `urlHints` rules written with `and`, `or`, `not` and `glob` conditions; profile hook map taps, such as resolver and parser hooks, in `ProfilingPlugin`; report `import.meta` option errors inside `require.ensure` callbacks, not crash; and replace `any`, `object` and `Function` with precise types in the type definitions. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22681](https://github.com/webpack/webpack/pull/22681)) - Reduce CSS and HTML build time and memory allocation. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22135](https://github.com/webpack/webpack/pull/22135)) - Reuse free names instead of re-parsing modules for the entry IIFE rename. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22206](https://github.com/webpack/webpack/pull/22206)) - Release each module's ast once scope-analysed, and encode each export path once. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22241](https://github.com/webpack/webpack/pull/22241)) - Export a module library entry's default expression as its own binding, and keep (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22227](https://github.com/webpack/webpack/pull/22227)) the export helpers where the entry is not inlined. - Give a wrapped concatenated body the same function header as a module factory. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22254](https://github.com/webpack/webpack/pull/22254)) - Skip reading every asset when no content hash is named. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22256](https://github.com/webpack/webpack/pull/22256)) - Cut graph, cached set, lazy barrel and ESM import memory and allocations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22289](https://github.com/webpack/webpack/pull/22289)) - Stop a module source from being held as both a string and a buffer. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22294](https://github.com/webpack/webpack/pull/22294)) - Read the browserslist data and options schema only when a build needs them. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22324](https://github.com/webpack/webpack/pull/22324)) - Release the eval devtool's cached module sources after wrapping them. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22358](https://github.com/webpack/webpack/pull/22358)) - Release the rendered module sources after emitting the chunks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22365](https://github.com/webpack/webpack/pull/22365)) - Cut the peak memory and time of minifying through webpack's printer. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22368](https://github.com/webpack/webpack/pull/22368)) - Shrink minified JS: unwrap IIFEs, fold calls, drop dead code, split arrays. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22393](https://github.com/webpack/webpack/pull/22393)) - Cut JavaScript minifier time and memory; keep token positions in large inputs. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22329](https://github.com/webpack/webpack/pull/22329)) - Keep the `calc()` around a `steps()` count `jump-none` would reject bare. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22168](https://github.com/webpack/webpack/pull/22168)) - Split the CSS syntax module into a parser file and a printer file. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22222](https://github.com/webpack/webpack/pull/22222)) - Update enhanced-resolve to 5.26.0. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22358](https://github.com/webpack/webpack/pull/22358)) - Update watchpack to 2.6.1. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22670](https://github.com/webpack/webpack/pull/22670)) - Split the HTML syntax module into a parser file and a printer file. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22223](https://github.com/webpack/webpack/pull/22223)) - Rename classes in `lib/` so each says what it does and no two share a name. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22361](https://github.com/webpack/webpack/pull/22361)) - Keep the remote fallback index aligned with registered container externals when an `internal ` external precedes a real one. (by [@&#8203;Eshiv-Pandey](https://github.com/Eshiv-Pandey) in [#&#8203;22362](https://github.com/webpack/webpack/pull/22362)) - Stop a minified inlined chunk leaving a doubled `;` in its `<script>`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22370](https://github.com/webpack/webpack/pull/22370)) - Stop `mergeDistantRules` mangling rules or reordering `all`, and merge more. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22370](https://github.com/webpack/webpack/pull/22370)) - Minify by parsing with webpack's own parser rather than terser's. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22397](https://github.com/webpack/webpack/pull/22397)) - Read JavaScript with webpack's parser alone when minifying, refusing early errors. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22397](https://github.com/webpack/webpack/pull/22397)) - Parse an `assert(...)` call after an import with no semicolon, and a regular expression after `yield` in a generator method. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22406](https://github.com/webpack/webpack/pull/22406)) - Keep the private names a direct `eval` reads when mangling. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22412](https://github.com/webpack/webpack/pull/22412)) - Keep a class dropped for its effects where they read a private name it declares. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22421](https://github.com/webpack/webpack/pull/22421)) - Parenthesize the right side of a private `in`, a `yield`, `await`, private `in` or optional chain tagging a template, and a `let` or `async` starting a statement or loop head, where the minifier printed code that no longer parsed or read otherwise. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22437](https://github.com/webpack/webpack/pull/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 [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22439](https://github.com/webpack/webpack/pull/22439)) - Scope and export a CSS Modules `@value` the same way whether local or imported. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22443](https://github.com/webpack/webpack/pull/22443)) - Keep CSS `border: none` and gradient fallbacks for units a target cannot read. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22567](https://github.com/webpack/webpack/pull/22567)) - Keep minified CSS safe for older browsers; drop dead fallbacks and overrides. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22696](https://github.com/webpack/webpack/pull/22696)) - Keep CSS rules apart from a neighbor whose selector no browser parses. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22634](https://github.com/webpack/webpack/pull/22634)) - Keep an `:nth-*()` argument with a space after its sign as written. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22700](https://github.com/webpack/webpack/pull/22700)) - Keep minified CSS readable by browsers the compat data does not cover. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22701](https://github.com/webpack/webpack/pull/22701)) - Keep a module its chunk still needs after `compilation.rebuildModule()`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22705](https://github.com/webpack/webpack/pull/22705)) - Keep a CSS rule nested under a selector opening on a combinator when lowering. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22707](https://github.com/webpack/webpack/pull/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 [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22309](https://github.com/webpack/webpack/pull/22309)) - Keep stats from an earlier build readable after a later build no longer has one of their modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22695](https://github.com/webpack/webpack/pull/22695)) ### [`v5.111.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51111) [Compare Source](https://github.com/webpack/webpack/compare/v5.111.0...v5.111.1) ##### Patch Changes - Throw on a write to an imported binding without losing concatenation. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22141](https://github.com/webpack/webpack/pull/22141)) - Keep the `</html>` a page was written with, whatever opened the element. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22103](https://github.com/webpack/webpack/pull/22103)) - Look an attribute up by what its value decodes to, not how it was spelled. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22107](https://github.com/webpack/webpack/pull/22107)) - Minify HTML by what a value says rather than how it was spelled. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22154](https://github.com/webpack/webpack/pull/22154)) - Follow HTML template form and frameset rules during tree construction. (by [@&#8203;dependabot](https://github.com/apps/dependabot) in [#&#8203;22129](https://github.com/webpack/webpack/pull/22129)) - Keep the whitespace `calc()` needs around `+` and `-` in a custom property. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22150](https://github.com/webpack/webpack/pull/22150)) - Keep an attribute's delimiter and spell its value back where quoting is frozen. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22119](https://github.com/webpack/webpack/pull/22119)) - Rewrite an attribute value the source spelled with character references. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22110](https://github.com/webpack/webpack/pull/22110)) - Unquote an HTML attribute value carrying a vertical tab. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22162](https://github.com/webpack/webpack/pull/22162)) - Keep a shadow's spread and canonicalize a merged selector list. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22101](https://github.com/webpack/webpack/pull/22101)) - Leave out an implied tag and merge adjacent runs on the first pass. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22121](https://github.com/webpack/webpack/pull/22121)) - Minify in one pass what a second pass of the CSS minifier used to find. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22106](https://github.com/webpack/webpack/pull/22106)) - Cover the CSS lookup tables no stylesheet in the corpus reaches. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22126](https://github.com/webpack/webpack/pull/22126)) - Keep `initial` where an engine reads the property's initial keyword apart. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22128](https://github.com/webpack/webpack/pull/22128)) - Join the CSS rules a cut leaves adjacent, and keep a value an escape ate. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22108](https://github.com/webpack/webpack/pull/22108)) - Drop the dead CSS a cut leaves, and join more of the blocks that print alike. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22111](https://github.com/webpack/webpack/pull/22111)) - Run the printer equivalence suite against Firefox as well as Chrome. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22151](https://github.com/webpack/webpack/pull/22151)) - Finish in one CSS pass the joins, drops and collapses left to a second. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22117](https://github.com/webpack/webpack/pull/22117)) - Move the context module sources into `lib/context/`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22115](https://github.com/webpack/webpack/pull/22115)) - Declare loader context types in JSDoc instead of hand-written `.d.ts` files. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22116](https://github.com/webpack/webpack/pull/22116)) - Emit a failing module's stack relative, and name what a tap failed with. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22122](https://github.com/webpack/webpack/pull/22122)) - Finish in one CSS pass the drops, layer gathers and joins left to a second. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22120](https://github.com/webpack/webpack/pull/22120)) - Speed up CSS parsing by stepping over dropped selector preludes in bytes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22142](https://github.com/webpack/webpack/pull/22142)) - Record hoisted, module and block declarations while parsing, not by re-walking. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22147](https://github.com/webpack/webpack/pull/22147)) - Fold more enumerated attribute values and drop those naming no keyword. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22148](https://github.com/webpack/webpack/pull/22148)) - Halve the CSS minifier's browser-version tables by narrowing their element type. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22140](https://github.com/webpack/webpack/pull/22140)) - Make each `optimization.minimize.css` switch govern its own rewrite alone. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22140](https://github.com/webpack/webpack/pull/22140)) - Join the rules a top-level `@layer` gather leaves meeting at the seam. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22140](https://github.com/webpack/webpack/pull/22140)) - Gather a CSS layer past a rule that writes only a different one. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22154](https://github.com/webpack/webpack/pull/22154)) - Order HTML attributes by what reaches the output, and read values decoded. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22146](https://github.com/webpack/webpack/pull/22146)) - Drop a fallback declaration every `browserslist` target reads past. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22158](https://github.com/webpack/webpack/pull/22158)) - Fix module library exports lost under cache or missing behind a re-export. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22114](https://github.com/webpack/webpack/pull/22114)) ### [`v5.111.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51110) [Compare Source](https://github.com/webpack/webpack/compare/v5.110.3...v5.111.0) ##### Minor Changes - Enable `output.module` by default with `futureDefaults` on ESM-capable targets. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22088](https://github.com/webpack/webpack/pull/22088)) - Remove `experiments.outputModule`, set `output.module` to emit ESM instead. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22011](https://github.com/webpack/webpack/pull/22011)) - Add `output.copy` to copy files and directories into the output directory. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21938](https://github.com/webpack/webpack/pull/21938)) - Accept a file URL in any spelling Node reads where an absolute path is taken. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22012](https://github.com/webpack/webpack/pull/22012)) - Minify inline CSS and JSON via `renderEmbeddedSource`, exporting webpack's own. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21993](https://github.com/webpack/webpack/pull/21993)) - Export `cssMinify` and `htmlMinify` on `css.syntax` and `html.syntax`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21953](https://github.com/webpack/webpack/pull/21953)) - Make `processResult` async and let a tap rename the asset it rewrote. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21854](https://github.com/webpack/webpack/pull/21854)) - Lower a CSS spelling a target cannot read and write a color fallback before one. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21926](https://github.com/webpack/webpack/pull/21926)) - Allow optional filesystem cache build dependencies. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21849](https://github.com/webpack/webpack/pull/21849)) - Add `output.environment.topLevelAwait` and await every async ESM entry. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21915](https://github.com/webpack/webpack/pull/21915)) - Add `unusedSymbols` and `pseudoClasses`, and evaluate a CSS color function. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21927](https://github.com/webpack/webpack/pull/21927)) - Drop an implied shorthand slot, fold a math function, tighten color conversion. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21929](https://github.com/webpack/webpack/pull/21929)) - Add `module.parser.javascript.specNamespaceObject` for spec namespace objects. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22049](https://github.com/webpack/webpack/pull/22049)) - Drop what is already said or only a gone engine reads, add `lowerUnsupported`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21931](https://github.com/webpack/webpack/pull/21931)) - Add `normalizeUrlAttributes`, `mergeScripts`, boolean and token switches. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21960](https://github.com/webpack/webpack/pull/21960)) - Minify an event handler attribute, and name the production each script body is. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21968](https://github.com/webpack/webpack/pull/21968)) - Add source-map, asset, module, bailout, federation hints; group config checks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21961](https://github.com/webpack/webpack/pull/21961)) - Lower CSS nesting, `:dir()` and custom at-rules; gate case folding and escapes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21950](https://github.com/webpack/webpack/pull/21950)) - Add `optimization.minimize.css.mergeDistantRules` to join rules across a gap. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21969](https://github.com/webpack/webpack/pull/21969)) ##### Patch Changes - Minify an embedded body through the embedded path, dropping three html options. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21936](https://github.com/webpack/webpack/pull/21936)) - Take a minified `style` attribute's answer whatever quoting it needs. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21936](https://github.com/webpack/webpack/pull/21936)) - Name chunk imports in the chunk loader, not at each import site. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22076](https://github.com/webpack/webpack/pull/22076)) - Repair hashed names; under HMR bake hashed url maps and reload moved css names. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21916](https://github.com/webpack/webpack/pull/21916)) - Enable `output.module` for `module` and `modern-module` library types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22071](https://github.com/webpack/webpack/pull/22071)) - Name an anonymous `export default class` before its static initializers run. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21910](https://github.com/webpack/webpack/pull/21910)) - Throw on a non-optional read past an undefined `DefinePlugin` member. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22017](https://github.com/webpack/webpack/pull/22017)) - Reject a fulfilled async cycle member with the cycle's evaluation error. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21921](https://github.com/webpack/webpack/pull/21921)) - Escape external requests in generated ESM imports and star reexports. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22078](https://github.com/webpack/webpack/pull/22078)) - Fix stack overflows in ESM library star reexport cycles with externals. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22080](https://github.com/webpack/webpack/pull/22080)) - Preserve live bindings when reexporting external ESM exports. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22082](https://github.com/webpack/webpack/pull/22082)) - Use configured external requests in ESM star reexports; reject property paths. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22079](https://github.com/webpack/webpack/pull/22079)) - Preserve import attributes on ESM library star reexports of externals. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;22081](https://github.com/webpack/webpack/pull/22081)) - Fail the build when a runtime module's code generation throws while hashing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22034](https://github.com/webpack/webpack/pull/22034)) - Settle a css chunk load without a DOM where its stylesheet cannot be read. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21970](https://github.com/webpack/webpack/pull/21970)) - Await a deferred import's async dependency that is evaluating-async. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21934](https://github.com/webpack/webpack/pull/21934)) - Keep a color the CSS minifier would round where its channels are read back. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21923](https://github.com/webpack/webpack/pull/21923)) - Refresh a cached module's `resolveOptions` from the factory, not the pack. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21945](https://github.com/webpack/webpack/pull/21945)) - Read a `<script type>` decoded, so a reference-spelled type is minified. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21933](https://github.com/webpack/webpack/pull/21933)) - Read the extension out of a path-scoped rule's alternation, class or braces. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21946](https://github.com/webpack/webpack/pull/21946)) - Keep an HTML attribute name or list token holding a foreign template delimiter. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22018](https://github.com/webpack/webpack/pull/22018)) - Answer a name a module does not export from the spec namespace. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22092](https://github.com/webpack/webpack/pull/22092)) - Give a deferred namespace the spec's exotic shape when the exports are known. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21939](https://github.com/webpack/webpack/pull/21939)) - Give a JSON, text or CommonJS namespace the spec's exotic shape and identity. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22087](https://github.com/webpack/webpack/pull/22087)) - Report a missing asset instead of a code generation deadlock. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21992](https://github.com/webpack/webpack/pull/21992)) - Keep a concatenated CommonJS reference a separate statement, guarding it once. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21962](https://github.com/webpack/webpack/pull/21962)) - Keep CSS module exports for a direct loader `importModule()` call. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22047](https://github.com/webpack/webpack/pull/22047)) - Fix `import.meta` and `require.main`, and scope-hoist `import.meta.main`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21973](https://github.com/webpack/webpack/pull/21973)) - Honor `resolve.fileSystem` and say where `module.exprContextCritical` moved. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22091](https://github.com/webpack/webpack/pull/22091)) - Release stale compilation data from nested children and idle watch builds. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22096](https://github.com/webpack/webpack/pull/22096)) - Resolve a `@value` once and then localize it, wherever it names an identifier. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22036](https://github.com/webpack/webpack/pull/22036)) - Release the printed-text store's text when the CSS printer drops it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21958](https://github.com/webpack/webpack/pull/21958)) - Skip a foreign dependency whose `isLazy` is a flag when walking a lazy barrel. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21998](https://github.com/webpack/webpack/pull/21998)) - Move diagnostics to `buildInfo.diagnostics`, persisting parse-time bailouts. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;22055](https://github.com/webpack/webpack/pull/22055)) - Invalidate consumer codegen when an inlined export value changes. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22020](https://github.com/webpack/webpack/pull/22020)) - Rebuild DelegatedModule when DLL manifest metadata changes. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22028](https://github.com/webpack/webpack/pull/22028)) - Keep a CSS layer's blocks in order where one of them streams. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22044](https://github.com/webpack/webpack/pull/22044)) - Refuse inlining const exports across sync cycles with binding reads. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;22085](https://github.com/webpack/webpack/pull/22085)) - Escape a text run ending in `</`, which the tag after it made a comment of. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22086](https://github.com/webpack/webpack/pull/22086)) - Skip JS render sentinel scans on chunks without HTML. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21974](https://github.com/webpack/webpack/pull/21974)) - Minify an attribute by what its value says, not by how the source spelled it. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;22095](https://github.com/webpack/webpack/pull/22095)) - Cut allocation and scanning in the CSS and HTML printers, output unchanged. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21997](https://github.com/webpack/webpack/pull/21997)) - Emit less chunk-loading runtime. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22094](https://github.com/webpack/webpack/pull/22094)) - Recognize the reflected attributes of `frame`, `frameset`, `marquee` and `dir`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22003](https://github.com/webpack/webpack/pull/22003)) - Drop the `neo-async` dependency in favor of a faster built-in async helper. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21959](https://github.com/webpack/webpack/pull/21959)) - Speed up cache serialization by cutting per-object lookups and call frames. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21994](https://github.com/webpack/webpack/pull/21994)) - Update dependencies and match the `ReadFileSync` type to Node.js typings. (by [@&#8203;dependabot](https://github.com/apps/dependabot) in [#&#8203;21919](https://github.com/webpack/webpack/pull/21919)) - Match acorn on `**` arrows, LS/PS cooking, string export names, `program` reuse. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21666](https://github.com/webpack/webpack/pull/21666)) - Parse a regexp literal the running engine cannot build, and keep locations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22009](https://github.com/webpack/webpack/pull/22009)) - Parse without acorn, serialize parse-error locations, trim walker allocations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21667](https://github.com/webpack/webpack/pull/21667)) - Drop the `acorn` dependency in favor of webpack's own JavaScript parser. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22042](https://github.com/webpack/webpack/pull/22042)) - Name HTML chunks after their tags' urls, drop the JS copy, type `text/html`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;22008](https://github.com/webpack/webpack/pull/22008)) ### [`v5.110.3`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51103) [Compare Source](https://github.com/webpack/webpack/compare/v5.110.2...v5.110.3) ##### Patch Changes - Fix `import()` options, circular reexport severity and namespace writes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21867](https://github.com/webpack/webpack/pull/21867)) - Skip ESM interop when require() targets a module outside the concatenation. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21884](https://github.com/webpack/webpack/pull/21884)) - Fix concatenated `require()` in a `require.ensure` callback or a computed request. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21907](https://github.com/webpack/webpack/pull/21907)) - Keep `optimization.minimize` a boolean; its options move to `minimizeOptions`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21886](https://github.com/webpack/webpack/pull/21886)) - Fix mangled exports read through require() and a leaked internal reference. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21905](https://github.com/webpack/webpack/pull/21905)) - Fix `new` on a default import of a wrapped CommonJS module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21876](https://github.com/webpack/webpack/pull/21876)) - Throw when a deferred namespace of an async module is forced while it evaluates. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21871](https://github.com/webpack/webpack/pull/21871)) - Do not report a missing export for a name a side-effect-free barrel defers. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21874](https://github.com/webpack/webpack/pull/21874)) - Fix queue, URL scheme, dotenv, HTTP module and persistent cache edge cases. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21901](https://github.com/webpack/webpack/pull/21901)) - Evaluate a deferred import's async dependencies where the import sits. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21902](https://github.com/webpack/webpack/pull/21902)) - Omit ambiguous `export *` names from the module namespace. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21878](https://github.com/webpack/webpack/pull/21878)) ### [`v5.110.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51102) [Compare Source](https://github.com/webpack/webpack/compare/v5.110.1...v5.110.2) ##### Patch Changes - Fix analyzable ESM baking around cycles, mixed-served wasm and style url maps. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21851](https://github.com/webpack/webpack/pull/21851)) - Minify more HTML and CSS shorthands, and cut two costs off printing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21842](https://github.com/webpack/webpack/pull/21842)) - Report a named import that is never read when it names a missing export. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21856](https://github.com/webpack/webpack/pull/21856)) - Fix ESM circular reexports, cyclic const TDZ, and defer evaluation order. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21852](https://github.com/webpack/webpack/pull/21852)) - Stop `output.html` emitting an unused JS chunk for each generated page. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21859](https://github.com/webpack/webpack/pull/21859)) - Stop emitting the CSS chunk loading runtime when every CSS chunk is initial. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21862](https://github.com/webpack/webpack/pull/21862)) - Strip a BOM a loader put on a string, and shift a source map that counted it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21857](https://github.com/webpack/webpack/pull/21857)) ### [`v5.110.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51101) [Compare Source](https://github.com/webpack/webpack/compare/v5.110.0...v5.110.1) ##### Patch Changes - Fix a capture-group-less `snapshot.managedPaths` RegExp; speed up cache writes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21843](https://github.com/webpack/webpack/pull/21843)) - Throw `SyntaxError`, or `WebAssembly.CompileError`, from an unparsable module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21847](https://github.com/webpack/webpack/pull/21847)) - Accept the `optimization.minimize: true` shorthand set by a plugin in `apply()`. (by [@&#8203;AgentEnder](https://github.com/AgentEnder) in [#&#8203;21845](https://github.com/webpack/webpack/pull/21845)) ### [`v5.110.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51100) [Compare Source](https://github.com/webpack/webpack/compare/v5.109.2...v5.110.0) ##### Minor Changes - Wrap concatenated modules in lazy `__webpack_require__.cw` accessors and inline `require()`, keeping a wrapped body's names and side effects intact. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21519](https://github.com/webpack/webpack/pull/21519)) - Add performance hints reporting what a build costs: duplicate packages and modules, circular dependencies, broad contexts, large modules and chunks, hotspots, `eval`, missing PURE annotations, polyfills, redundant dynamic imports, OS-dependent rules, cache effectiveness, how chunks load, what splitting refused, why an optimization was skipped, and rules, defines, externals, aliases and barrel reexports nothing uses. An oversized asset names its largest modules, and an entrypoint carrying the runtime recommends `optimization.runtimeChunk`. Enable every check not set individually with `performance.all`, report hints in stats only with `performance.hints: "stats"`, and get them in a stable order that leaves the build hashes unchanged. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Add the `descriptionRelativePath` module rule condition. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21705](https://github.com/webpack/webpack/pull/21705)) - Add OS-independent `glob` matching to module rules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21771](https://github.com/webpack/webpack/pull/21771)) - Report inner-graph, AMD and bare `module` bailouts in `optimizationBailout`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21740](https://github.com/webpack/webpack/pull/21740)) - Allow marking externals as side-effect-free with a `sideEffects` flag. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21712](https://github.com/webpack/webpack/pull/21712)) - Give externals the original request of a context module element. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21780](https://github.com/webpack/webpack/pull/21780)) - Add the `externalsPresets.nodeModules` preset with an `allowlist` option to externalize installed packages, replacing the `webpack-node-externals` plugin. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21569](https://github.com/webpack/webpack/pull/21569)) - Add `output.library.umdAmdContainer` for an AMD-style loader branch in UMD. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21770](https://github.com/webpack/webpack/pull/21770)) - Resolve `@custom-media` values that are `true` / `false` or name another custom media. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21624](https://github.com/webpack/webpack/pull/21624)) - Add the `__webpack_css_server_styles__` module variable to read the CSS collected while rendering without a DOM, and keep that CSS in the order the styles were applied. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21576](https://github.com/webpack/webpack/pull/21576)) - Patch the HTML `<head>` in place on hot update instead of forcing a full reload, including when a `<script>` that never executed is removed. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21624](https://github.com/webpack/webpack/pull/21624)) - Scope counter names in CSS modules; fix the `counter()` counter-style and `animation` timeline keywords. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21600](https://github.com/webpack/webpack/pull/21600)) - Derive `import defer` / `import source` from the target and fix the source phase. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21810](https://github.com/webpack/webpack/pull/21810)) - Emit analyzable ESM urls for chunks, assets, styles, workers and wasm. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21788](https://github.com/webpack/webpack/pull/21788)) - Tree shake CommonJS: `module.exports` object literals, exports destructured from a `require()` binding, unused method requires, and unused side-effect-free `require()` calls and reexports. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Resolve relative entry `baseUri` values and bake one side of a hash cycle. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21750](https://github.com/webpack/webpack/pull/21750)) - Minify CSS further, only where the document is unchanged: shorthands and box longhands, `font-weight`, `<position>` and `font-stretch` keywords, colors (polar, Lab and `hsl()` converted to hex), numbers, times, zero units, `calc()` and every math function the spec names folded over constants, selector lists, An+B, keyframe selectors, media-feature ranges, `unicode-range`, `transition` layers, `display`, transforms, gradients, font families, identical repeated declarations, and rules an identical later one makes dead. Abilities are read off the target browsers, `vendorPrefixes` adds and drops vendor prefixes for them, and `rewriteCustomProperties` shortens custom property values. Minification never changes whether a declaration parses, and beautifying keeps every rule. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Safely minify CSS (with source maps) and HTML assets when `optimization.minimize` is enabled, unless a minimizer is already configured for them, making only transformations an engine cannot tell apart. Every rewrite is named as an option, so it can be switched off. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Minify HTML further where the parsed document is unchanged: drop redundant quotes, whitespace nothing renders, escapes text does not need, implied tags, optional end tags nothing prints behind, empty attributes and nested empty elements; fold enumerated values and casing; normalize each attribute against the element it is on; and rewrite `style`, token lists, `srcset`, `sizes`, URL, integer and boolean attributes, viewport `content`, inline `<style>` and a JSON `<script>` body through their own grammars. Adds the `optimization.minimize.html` options `collapseWhitespace`, `mergeStyles`, `minifyConditionalComments`, `minifySrcdoc`, `preserveComments`, `removeEmptyAttributes`, `removeEmptyElements`, `removeImpliedTags`, `removeRedundantAttributes`, `sortAttributes` and `sortTokenLists`, and keeps an end tag the parent, the next element or the adoption agency would otherwise restructure the tree over. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Suggest the closest name or a casing fix anywhere in a failed request. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21727](https://github.com/webpack/webpack/pull/21727)) - Add aggregated `shutdown` hook to `MultiCompiler`. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21578](https://github.com/webpack/webpack/pull/21578)) - Report which compilers changed on the MultiCompiler `done` hook. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21580](https://github.com/webpack/webpack/pull/21580)) - Add `[containedpath]`/`[containedfile]` placeholders, used for `[path]`/`[file]` of asset and html modules with `experiments.futureDefaults`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21592](https://github.com/webpack/webpack/pull/21592)) - Support an object for an entry's `html` that overrides `output.html` per option. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21574](https://github.com/webpack/webpack/pull/21574)) - Configure or exclude each asset type's minifier via `optimization.minimize`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21663](https://github.com/webpack/webpack/pull/21663)) - Support printing CSS and HTML beautified as well as minified. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21660](https://github.com/webpack/webpack/pull/21660)) - Add `renderEmbeddedSource`, and minify what it offers out of the box. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21830](https://github.com/webpack/webpack/pull/21830)) - Report bindings named `eval`, `arguments` or reserved words in ES module output. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21567](https://github.com/webpack/webpack/pull/21567)) - Emit no development source map for module libraries, or any with futureDefaults. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21839](https://github.com/webpack/webpack/pull/21839)) - Speed up builds and cut memory: faster CSS, HTML and JavaScript parsing and minification, a built-in scope analyzer replacing `eslint-scope`, faster dependency hot paths, module diagnostics, CommonJS export scanning and concatenated module renaming, runtime modules, parsers, generators and dependencies loaded only when used, one file watcher pool shared between MultiCompiler children, and lower parser, graph and startup memory. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Improve tree-shaking for a namespace reexported as default, and fix `import d from "./mod"; d.member` reading `undefined` in that case. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Warn on cross-kind CSS module export conflicts and let the class win. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21538](https://github.com/webpack/webpack/pull/21538)) - Add `output.resourceHints.dedupe` to skip prefetch links for already preloaded/prefetched chunks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21386](https://github.com/webpack/webpack/pull/21386)) ##### Patch Changes - Let a memory-cache etag mismatch fall through to the file cache instead of reporting a miss. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21624](https://github.com/webpack/webpack/pull/21624)) - Determine provided exports in dependency order, so a build's module hashes no longer depend on what the persistent cache held. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21630](https://github.com/webpack/webpack/pull/21630)) - Emit no dead module and no failing require for an `asset-url` external. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21713](https://github.com/webpack/webpack/pull/21713)) - Fix names, hidden devtools and cache reuse for CSS maps inlined into JS. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21558](https://github.com/webpack/webpack/pull/21558)) - Follow the HTML spec more closely when parsing and printing: frameset content, quirks paragraphs and selects, `<![CDATA[` outside foreign content as a bogus comment, `<?target data?>` as a processing instruction, `</>` dropped, comment data and DOCTYPE identifiers read from the tokenizer states, attributes merged from a repeated `<html>`/`<body>` tag, legacy JavaScript script types, void `keygen` and font format detection — and hand back the tree a parsed document was built from when printing it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Clear a `Watching`'s `blocked` flag when its build starts, so it reports only a child actually waiting for its MultiCompiler parent. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21639](https://github.com/webpack/webpack/pull/21639)) - Fix AMD `define()` output using the wrong module and exports argument names. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21814](https://github.com/webpack/webpack/pull/21814)) - Fix `ReferenceError` from `import.meta.main` using the wrong module argument. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21620](https://github.com/webpack/webpack/pull/21620)) - Leave a `@namespace` URI alone instead of resolving and rewriting it as an asset. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21658](https://github.com/webpack/webpack/pull/21658)) - Resolve escaped CSS names, and scope a grid area cell name as one name. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21665](https://github.com/webpack/webpack/pull/21665)) - Track exports usage of side-effect-free modules an active import() evaluates. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21623](https://github.com/webpack/webpack/pull/21623)) - Resolve absolute symlink targets and treat an unreadable context as missing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21647](https://github.com/webpack/webpack/pull/21647)) - Fix corrupted icon URLs in a `.webmanifest` with a BOM or non-ASCII text. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21655](https://github.com/webpack/webpack/pull/21655)) - Respect `strictThisContextOnImports` for `require()` member calls. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21601](https://github.com/webpack/webpack/pull/21601)) - Fix `import.meta`, `[object Object]` asset urls and crashes in build-time executed modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Inherit sideEffects past a type-only nested package.json for files under node_modules. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21686](https://github.com/webpack/webpack/pull/21686)) - Do not fail directory creation when the file system reports it already exists. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21698](https://github.com/webpack/webpack/pull/21698)) - Fix top-level `using` and `await using` declarations in modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21557](https://github.com/webpack/webpack/pull/21557)) - Fix `DefinePlugin` optional chains reading an undefined object member. (by [@&#8203;lazerg](https://github.com/lazerg) in [#&#8203;21823](https://github.com/webpack/webpack/pull/21823)) - Fix MultiCompiler: compute the common `outputPath` by whole path segments, run again after a dependency validation failure, and recover watch mode from a fatal child error without leaking watchings. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Keep a nested bundle's runtime tables separate when bundling webpack output. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21568](https://github.com/webpack/webpack/pull/21568)) - Keep the runtime out of strict mode when `output.globalObject` reads `this`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21715](https://github.com/webpack/webpack/pull/21715)) - Run an even-priority `__webpack_require__.O` handler without waiting. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21803](https://github.com/webpack/webpack/pull/21803)) - Treat top-level `this` in a classic worker entry as its global scope. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21720](https://github.com/webpack/webpack/pull/21720)) - Rehash runtime modules whose code changes under a content-named filename. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21828](https://github.com/webpack/webpack/pull/21828)) - Fix namespace object reexports and string export names in module library output and emit a CommonJS entry's default as `export default`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21589](https://github.com/webpack/webpack/pull/21589)) - Keep tree-shaken JSON arrays as arrays when a prototype property is read. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21599](https://github.com/webpack/webpack/pull/21599)) - Generate every CSS and HTML lookup table into `lib/{css,html}/data.js` from `mdn-data`, `color-name` and the spec IDL — including the value-type facts read out of the CSS value-definition grammars — leaving both `syntax.js` files algorithm only. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Support UNC paths in module and context replacement plugins. (by [@&#8203;avivkeller](https://github.com/avivkeller) in [#&#8203;21645](https://github.com/webpack/webpack/pull/21645)) - Emit less runtime code: shorter syntax where `output.environment` allows, no IIFE for a `RuntimeModule` without locals, no unread `__webpack_esm_id__` and `exports.id` chunk exports, and an ESM entry chunk installing its own modules from its local bindings instead of importing itself. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21841](https://github.com/webpack/webpack/pull/21841)) - Release the compilation and file system caches retained after `compiler.close()`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21603](https://github.com/webpack/webpack/pull/21603)) ### [`v5.109.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51092) [Compare Source](https://github.com/webpack/webpack/compare/v5.109.1...v5.109.2) ##### Patch Changes - Resolve aliases pointing at a package directory whose name ends with `.js` again. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21542](https://github.com/webpack/webpack/pull/21542)) - Name CSS sources in source maps by their resource path, without the `css ` prefix. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21536](https://github.com/webpack/webpack/pull/21536)) - Delete no longer referenced files from the filesystem cache directory after storing the cache, age them by recorded time so restored caches are cleaned too, and collect every fully expired pack in one store instead of one per build. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21528](https://github.com/webpack/webpack/pull/21528)) - Report `"universal"` as the loader context target for the universal target. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21540](https://github.com/webpack/webpack/pull/21540)) - Skip `require().prop` in dead branches gated by inlined imported constants. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21517](https://github.com/webpack/webpack/pull/21517)) - Annotate configuration options and public hooks in the generated types with the `@since` JSDoc tag. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21473](https://github.com/webpack/webpack/pull/21473)) ### [`v5.109.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51091) [Compare Source](https://github.com/webpack/webpack/compare/v5.109.0...v5.109.1) ##### Patch Changes - Fix stray semicolon emitted before an imported call following a parenthesized sequence element. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21533](https://github.com/webpack/webpack/pull/21533)) - Make `require(esm)` `module.exports` re-export analysis independent of module processing order. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21521](https://github.com/webpack/webpack/pull/21521)) - Ignore ERR_SERVER_NOT_RUNNING on lazy-compilation backend dispose so `compiler.close()` succeeds on Bun. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21521](https://github.com/webpack/webpack/pull/21521)) - Name the failing key when DefinePlugin fails to evaluate a `typeof` value. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21503](https://github.com/webpack/webpack/pull/21503)) - Improve Deno compatibility: guard `setNoDelay` and force-close connections on lazy-compilation backend dispose, and return a real `ArrayBuffer` from the Node async/sync wasm loader so `WebAssembly.instantiate` accepts it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21524](https://github.com/webpack/webpack/pull/21524)) - Speed up the HTML parser and cut its peak memory: module-scope helpers/state and tokenizer callbacks, plus exact AST column pre-sizing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21492](https://github.com/webpack/webpack/pull/21492)) - Track CommonJS build dependencies by parsing sources when `require.cache` children are unavailable (e.g. Bun). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21531](https://github.com/webpack/webpack/pull/21531)) - Cook common string-literal escapes on the JS parser fast path and own the tokenizer's cold-path readers. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21500](https://github.com/webpack/webpack/pull/21500)) - Build the CSS `parseA*` AST on the SoA store instead of node classes, cutting parse memory and time. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21498](https://github.com/webpack/webpack/pull/21498)) - Speed up and cut memory of the experimental CSS and HTML parsers: drop two derivable AST node columns, and scan long string, url, comment, and plaintext token bodies natively. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21504](https://github.com/webpack/webpack/pull/21504)) - Speed up non-modules CSS parsing: skip redundant token re-reads, drop selector-prelude tokens without materializing nodes, allocate rule preludes lazily, and fast-path empty list seals. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21511](https://github.com/webpack/webpack/pull/21511)) - Speed up stats generation and cut its peak memory: reuse cached sort comparators instead of thrashing the comparator caches on every sort, and drop redundant module-graph lookups and allocations in the extractors. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21506](https://github.com/webpack/webpack/pull/21506)) - Speed up CSS parsing: byte-range function-name checks, indexed sibling lookahead. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21520](https://github.com/webpack/webpack/pull/21520)) - Reduce allocations and redundant work across the code-generation, module-concatenation, exports/usage-analysis, hashing, and chunk-splitting hot paths. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21516](https://github.com/webpack/webpack/pull/21516)) - Enable the Node.js compile cache in the webpack CLI entry point. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21523](https://github.com/webpack/webpack/pull/21523)) - Encode the persistent cache with V8's value serializer. (by [@&#8203;avivkeller](https://github.com/avivkeller) in [#&#8203;21514](https://github.com/webpack/webpack/pull/21514)) - Speed up SplitChunksPlugin: reject non-subset chunk sets with 64-bit signatures, cache unnamed entry keys, and drop per-module closures. (by [@&#8203;avivkeller](https://github.com/avivkeller) in [#&#8203;21529](https://github.com/webpack/webpack/pull/21529)) - Initialize `NormalModule._ast` in the constructor so each instance keeps a single hidden-class shape. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21515](https://github.com/webpack/webpack/pull/21515)) - Reduce allocations in the binary serialization hot paths. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21526](https://github.com/webpack/webpack/pull/21526)) - Deduplicate and simplify several lib modules and speed up AggressiveMergingPlugin. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21525](https://github.com/webpack/webpack/pull/21525)) - Rename nested `const`/`let __webpack_require__` and `__webpack_exports__` declarations in bundled webpack output. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21508](https://github.com/webpack/webpack/pull/21508)) ### [`v5.109.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51090) [Compare Source](https://github.com/webpack/webpack/compare/v5.108.4...v5.109.0) ##### Minor Changes - Default `experiments.typescript` to `"auto"`, enabling built-in TypeScript support on Node.js >= 22.6 when no TypeScript loader is registered. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21398](https://github.com/webpack/webpack/pull/21398)) - Default `experiments.css`, `experiments.html` and `experiments.asyncWebAssembly` to `"auto"`, enabling built-in support unless a loader is registered for those files; modules with inline or hook-injected loaders (e.g. html-webpack-plugin templates) keep being parsed as JavaScript. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21365](https://github.com/webpack/webpack/pull/21365)) - Add `output.resourceHints` to emit resource hints (`preload`/`prefetch`/`modulepreload`/`preconnect`), on by default for ESM output, plus `module.parser.<type>.urlHints`, `css.fontPreload` and `javascript.dynamicImportCssPreload`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21408](https://github.com/webpack/webpack/pull/21408)) - Add built-in build progress via `infrastructureLogging.progress`, plus `estimatedTime`, `phaseTimings`, progress bar `width` and `progressBar: "auto"` on `ProgressPlugin`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21352](https://github.com/webpack/webpack/pull/21352)) - Concatenate CommonJS modules with statically analyzable exports; opt out via `optimization.concatenateModules: { commonjs: false }`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21417](https://github.com/webpack/webpack/pull/21417)) - Wrap "weird" CommonJS modules into module concatenation instead of bailing out. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21436](https://github.com/webpack/webpack/pull/21436)) - Add `output.html.inline` (`true | "script" | "style"`) and the `webpackInline` magic comment to inline chunk content into HTML. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21260](https://github.com/webpack/webpack/pull/21260)) - Add `output.html.inject` to control where chunk tags are injected. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21383](https://github.com/webpack/webpack/pull/21383)) - Add `output.html.title`, `output.html.meta` and `output.html.base` options for head generation. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21394](https://github.com/webpack/webpack/pull/21394)) - Support per-icon link attributes (`sizes`, `media`, `color`, `type`, `crossorigin`) and arrays in `output.html.favicon`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Add `output.html.manifest` to generate and link a web app manifest with hashed icons. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Add `output.html.csp` to inject a Content-Security-Policy meta with inline-content hashes and an optional nonce. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Add the `output.html` `injectTags` compilation hook to inject tags (script/link/meta/…) with `injectTo` placement. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Add the `output.html` `transformTags` compilation hook to mutate, remove, or move (between `<head>` and `<body>`) a page's existing `<script>`/`<link>`/`<style>`/`<meta>` tags. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Extend the HTML pipeline with `html` link sources (bundled as their own emitted page) and `rel="preload"`/`"prefetch"` links bundled as chunks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21346](https://github.com/webpack/webpack/pull/21346)) - Recognize more asset-bearing HTML sources: the `twitter:player:stream` meta, legacy SVG references, and Web App Manifest `icons`/`screenshots`/`shortcuts` URLs. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21355](https://github.com/webpack/webpack/pull/21355)) - Add `module.parser.html.as` to parse HTML as a document or an element fragment. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21441](https://github.com/webpack/webpack/pull/21441)) - Allow disabling a built-in HTML parser source via `type: false` in `sources`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21441](https://github.com/webpack/webpack/pull/21441)) - Export `webpack.html.HtmlModulesPlugin` with `transformHtml`/`htmlEmitted` compilation hooks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21487](https://github.com/webpack/webpack/pull/21487)) - Resolve `@custom-media` (including media-type values) and `@custom-selector` in native CSS. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21442](https://github.com/webpack/webpack/pull/21442)) - Scope `view-transition-name`/`-group`/`-class` names and `::view-transition-*()` pseudo references in CSS modules under `customIdents`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21486](https://github.com/webpack/webpack/pull/21486)) - Add `import.meta.glob` support, with a `caseSensitive` option and consistent hidden/`node_modules` matching. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21385](https://github.com/webpack/webpack/pull/21385)) - Resolve `import.meta.resolve("./asset")` to the emitted asset URL via the `importMeta.resolve` parser option. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21415](https://github.com/webpack/webpack/pull/21415)) - Add `import.meta.env` defaults: `MODE`, `DEV`, `PROD`, `SSR` and `BASE_URL`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21440](https://github.com/webpack/webpack/pull/21440)) - Add fine-grained `import.meta` parser options. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21327](https://github.com/webpack/webpack/pull/21327)) - Deprecate the `importMetaContext` parser option in favor of `importMeta.webpackContext`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21360](https://github.com/webpack/webpack/pull/21360)) - Emit analyzable `new URL(…, import.meta.url)`, worker/worklet URL and `import()` references with literal specifiers for ESM module output. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21194](https://github.com/webpack/webpack/pull/21194)) - Compile async modules to generators for targets without async/await. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21410](https://github.com/webpack/webpack/pull/21410)) - Evaluate and validate the second argument of dynamic `import(specifier, options)`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21446](https://github.com/webpack/webpack/pull/21446)) - Add `module.parser.javascript.worklet` to bundle Worklet `addModule()` entries. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21384](https://github.com/webpack/webpack/pull/21384)) - Add `?raw`, `?url`, `?inline` and `?no-inline` asset query suffixes under `experiments.futureDefaults`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21379](https://github.com/webpack/webpack/pull/21379)) - Add an `interop` (`"default" | "esModule"`) hint for object externals to control default-export interop. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21371](https://github.com/webpack/webpack/pull/21371)) - Add an `amd-async` externals type that loads AMD externals without an AMD library wrapper. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21340](https://github.com/webpack/webpack/pull/21340)) - Support `cache.compression: "zstd"` for the filesystem cache. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21438](https://github.com/webpack/webpack/pull/21438)) - Warn on strict-mode-only syntax and semantic hazards in ES module output, configurable via the `strictModeViolations` parser option. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21387](https://github.com/webpack/webpack/pull/21387)) - Support parsers without location APIs: locations derive from node offsets and AST nodes no longer carry `loc`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21451](https://github.com/webpack/webpack/pull/21451)) - Attach the original DOM event to `ChunkLoadError` and `ScriptExternalLoadError` as `error.event`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21388](https://github.com/webpack/webpack/pull/21388)) - Add `output.wasmStreamingFallback` for wasm fallback on a wrong MIME type. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21299](https://github.com/webpack/webpack/pull/21299)) - Show why a module was marked as not cacheable in stats output. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21403](https://github.com/webpack/webpack/pull/21403)) - Expose the active `MultiWatching` on `MultiCompiler.watching`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21469](https://github.com/webpack/webpack/pull/21469)) - Resolve git merge conflicts when parsing the build-http lockfile. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21397](https://github.com/webpack/webpack/pull/21397)) ##### Patch Changes - Fix broken HMR with `output.module` and non-`import` chunk loading by emitting a plain-JSON hot-update manifest. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21460](https://github.com/webpack/webpack/pull/21460)) - Fix unused CSS module exports leaking into the JS wrapper. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21301](https://github.com/webpack/webpack/pull/21301)) - Fix deferred import evaluation: re-throw cached errors, guard forcing a still-evaluating module, keep re-exported deferred namespaces identical, and evaluate initial-chunk deferred context imports lazily. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21446](https://github.com/webpack/webpack/pull/21446)) - Keep ESM live bindings for a module library's entry exports, including when the runtime is emitted as a separate chunk. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21349](https://github.com/webpack/webpack/pull/21349)) - Fix SplitChunks merging undersized modules into the wrong result group. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21356](https://github.com/webpack/webpack/pull/21356)) - Fix named id assignment reusing an already-used numbered suffix, which could produce duplicate module/chunk ids. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Fix inlined non-binary asset modules with `encoding: false` emitting "undefined" instead of their content. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Decode non-base64 data URIs as UTF-8 so multi-byte characters are preserved. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21366](https://github.com/webpack/webpack/pull/21366)) - Keep required JSON data intact when a prototype method (e.g. `arr.includes()`) is called on it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21433](https://github.com/webpack/webpack/pull/21433)) - Recognize modern RegExp flags (`d`, `s`, `u`, `v`) when statically evaluating `new RegExp(...)`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21366](https://github.com/webpack/webpack/pull/21366)) - Merge object-form and dotted DefinePlugin definitions so `import.meta.env`/`process.env` are consistent across direct, whole-object and destructured access. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21419](https://github.com/webpack/webpack/pull/21419)) - Emit an error when an object external has no entry for the used externals type. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21340](https://github.com/webpack/webpack/pull/21340)) - Fix a persistent cache restore crash when a content section starts exactly on a content-buffer boundary. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Restore missing `internalSerializables` entries (webpack/lib/Module and cold filesystem cache). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21391](https://github.com/webpack/webpack/pull/21391)) - Fix watch rebuild crash when context symlink targets lack `timestampHash`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21381](https://github.com/webpack/webpack/pull/21381)) - Fix lazy compilation backend leaking idle module entries and hanging on exit. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21468](https://github.com/webpack/webpack/pull/21468)) - Stop logging benign ECONNRESET client errors from the lazy compilation server. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Accept compilations from another webpack copy in `getCompilationHooks` again. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21407](https://github.com/webpack/webpack/pull/21407)) - Fix `output.html` injection edge cases: escaping, head detection, duplicate meta tags, resource-hint/entry-tag retention with `inject: false`, and stylesheet placement. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21416](https://github.com/webpack/webpack/pull/21416)) - Ignore a `<base>` inside an inert `<template>` when resolving HTML URLs. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21441](https://github.com/webpack/webpack/pull/21441)) - Bust an HTML page's `[contenthash]` when its inlined chunk content changes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21441](https://github.com/webpack/webpack/pull/21441)) - Fix a dangling stylesheet `<link>` for a JS-only chunk in an HTML entry. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21441](https://github.com/webpack/webpack/pull/21441)) - Fix a malformed HTML magic comment leaking a pending `webpackInline` directive onto the next element. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Fix off-by-one dropping the last character of an unterminated `url(...)` at end-of-input. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Consume the trailing whitespace of a CSS hex escape when unescaping identifiers. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21366](https://github.com/webpack/webpack/pull/21366)) - Fix `[fullhash]` in `output.webassemblyModuleFilename` by dropping a stray brace and requesting the `getFullHash` runtime module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Fix duplicated errors/warnings in stats output when detail-less entries exceed `errorsSpace`/`warningsSpace`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21406](https://github.com/webpack/webpack/pull/21406)) - Improve module parse errors with a babel-style code frame and the module type. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21485](https://github.com/webpack/webpack/pull/21485)) - Fix `formatSize` rendering sizes of 1 TiB or larger as "undefined". (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21366](https://github.com/webpack/webpack/pull/21366)) - Skip the anonymous default export `.name` fix-up when `name` is non-configurable, instead of throwing on pre-ES2015 engines. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21370](https://github.com/webpack/webpack/pull/21370)) - Escape `?` and `#` in context module regexp identifiers so source map names are not truncated. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21422](https://github.com/webpack/webpack/pull/21422)) - Resolve directory requests to their index module in scoped `DllReferencePlugin`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21437](https://github.com/webpack/webpack/pull/21437)) - Skip the `hasSymbol` check in the async module runtime when `environment.symbol` is set. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21423](https://github.com/webpack/webpack/pull/21423)) - Use a shared `__webpack_require__.cjs` helper for wrapped CommonJS modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21464](https://github.com/webpack/webpack/pull/21464)) - Derive ASI positions from source text instead of acorn's `onInsertedSemicolon`, so custom parsers need not collect semicolons. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21453](https://github.com/webpack/webpack/pull/21453)) - Avoid a second full parse for `auto` source type by downgrading module to script in place on a top-level return. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21455](https://github.com/webpack/webpack/pull/21455)) - Fix exponential-time side-effects analysis on cyclic module graphs by memoizing cycle-free results via Tarjan lowlink. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21373](https://github.com/webpack/webpack/pull/21373)) - Speed up JavaScript parsing and AST walking and reduce parser memory usage. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21373](https://github.com/webpack/webpack/pull/21373)) - Speed up CSS and HTML parsing and code generation and reduce parser memory usage. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21332](https://github.com/webpack/webpack/pull/21332)) - Speed up snapshot creation and reduce its memory usage. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21401](https://github.com/webpack/webpack/pull/21401)) - Reduce allocations in JS codegen, concatenation, queues and parser setup. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21341](https://github.com/webpack/webpack/pull/21341)) - Speed up stats generation on large builds by reusing the item context across array items. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21425](https://github.com/webpack/webpack/pull/21425)) - Memoize loader resolution per compilation to avoid re-resolving the same loader for every matching module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21435](https://github.com/webpack/webpack/pull/21435)) - Reuse and harden webpack's shared resource parser in the loader runner. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21392](https://github.com/webpack/webpack/pull/21392)) - Update webpack-sources to 3.5.1 and enhanced-resolve to 5.24.2 to cut peak memory. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21344](https://github.com/webpack/webpack/pull/21344)) - Inline the loader-runner package into core. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21249](https://github.com/webpack/webpack/pull/21249)) - Fix context hash crash on unsupported directory entries like FIFOs and sockets. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21484](https://github.com/webpack/webpack/pull/21484)) - Verify internalSerializables in lint:special and regenerate it in fix:special. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21476](https://github.com/webpack/webpack/pull/21476)) ### [`v5.108.4`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51084) [Compare Source](https://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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21324](https://github.com/webpack/webpack/pull/21324)) - Speed up non-CSS-Modules CSS parsing by dropping value tokens nothing reads. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21324](https://github.com/webpack/webpack/pull/21324)) - Resolve HTML asset URLs against the document `<base href>`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21329](https://github.com/webpack/webpack/pull/21329)) - Add HTML integration tests: generateError output, ignored src, null-char parse. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;21328](https://github.com/webpack/webpack/pull/21328)) - Reduce CPU and memory overhead of HTML and CSS parsing and code generation. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21332](https://github.com/webpack/webpack/pull/21332)) - Reduce HTML parser memory and CPU by skipping unused AST nodes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21323](https://github.com/webpack/webpack/pull/21323)) - Reduce HTML parser memory by storing the AST in struct-of-arrays form. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21331](https://github.com/webpack/webpack/pull/21331)) - Key the provided-exports cache on a lazy barrel's still-lazy re-export targets. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21326](https://github.com/webpack/webpack/pull/21326)) - Default `output.globalObject` to `globalThis` for universal targets. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21314](https://github.com/webpack/webpack/pull/21314)) - Pass through `new URL(...)` directory references instead of resolving them. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21312](https://github.com/webpack/webpack/pull/21312)) ### [`v5.108.3`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51083) [Compare Source](https://github.com/webpack/webpack/compare/v5.108.2...v5.108.3) ##### Patch Changes - Speed up CSS parsing and reduce CSS AST node memory. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21285](https://github.com/webpack/webpack/pull/21285)) - Fix HMR codegen crash for harmony accept with unresolved imports. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21302](https://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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21303](https://github.com/webpack/webpack/pull/21303)) ### [`v5.108.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51082) [Compare Source](https://github.com/webpack/webpack/compare/v5.108.1...v5.108.2) ##### Patch Changes - Fix lazy barrel deferral of ungrouped side-effect imports. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21291](https://github.com/webpack/webpack/pull/21291)) - Respect the `node:` prefix for node.js core modules used as externals. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21286](https://github.com/webpack/webpack/pull/21286)) ### [`v5.108.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51081) [Compare Source](https://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 [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21280](https://github.com/webpack/webpack/pull/21280)) - Add frames to ProfilingPlugin TracingStartedInBrowser event so the trace loads in Chrome DevTools. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21269](https://github.com/webpack/webpack/pull/21269)) ### [`v5.108.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51080) [Compare Source](https://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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21218](https://github.com/webpack/webpack/pull/21218)) - Add a `bun` target that emits ESM and externalizes `bun:*` and node.js built-in modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21248](https://github.com/webpack/webpack/pull/21248)) - Support CommonJS reexports via `Object.defineProperty` value and getter descriptors. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21129](https://github.com/webpack/webpack/pull/21129)) - Support JSON Schema `const` when generating CLI flags from a schema. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21087](https://github.com/webpack/webpack/pull/21087)) - Support JSON Schema `if`/`then`/`else` when generating CLI flags from a schema. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21087](https://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 [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21136](https://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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21259](https://github.com/webpack/webpack/pull/21259)) - Add CSS parser `as` option and resolve `url()` inside HTML `style` attributes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21157](https://github.com/webpack/webpack/pull/21157)) - Add dedicated module classes for all built-in module types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21164](https://github.com/webpack/webpack/pull/21164)) - Support `.html`/`.css` for the default `./src` entry under the html/css experiments. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21039](https://github.com/webpack/webpack/pull/21039)) - Add `defineConfig` helper for typed configuration files. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21169](https://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 [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21247](https://github.com/webpack/webpack/pull/21247)) - Use `module-import` for electron externals when the target supports ESM. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21184](https://github.com/webpack/webpack/pull/21184)) - Add `output.environment.logicalAssignment` to emit `||=` in runtime code when the target supports logical assignment operators. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21219](https://github.com/webpack/webpack/pull/21219)) - Resolve and rewrite asset URLs inside `<iframe srcdoc>` in HTML modules. (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21226](https://github.com/webpack/webpack/pull/21226)) - Add HMR support for HTML modules with body/title DOM patching on update. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21011](https://github.com/webpack/webpack/pull/21011)) - Add `css-url` html source type extracting `url()` references from CSS-valued attributes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21250](https://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://github.com/alexander-akait) in [#&#8203;21022](https://github.com/webpack/webpack/pull/21022)) - Add `module.parser.html.template` option to transform HTML module source before parsing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21055](https://github.com/webpack/webpack/pull/21055)) - Extract more source URLs in HTML modules (SVG, legacy and obsolete attributes). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21241](https://github.com/webpack/webpack/pull/21241)) - Inline `export default <const>` when the default-exported value is a primitive constant. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21189](https://github.com/webpack/webpack/pull/21189)) - Support `optimization.inlineExports` for better tree-shaking. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20973](https://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://github.com/alexander-akait) in [#&#8203;21267](https://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://github.com/hai-x) in [#&#8203;20907](https://github.com/webpack/webpack/pull/20907)) - Defer building unused re-export targets of side-effect-free barrel modules. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21165](https://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://github.com/alexander-akait) in [#&#8203;21234](https://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://github.com/alexander-akait) in [#&#8203;21010](https://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://github.com/alexander-akait) in [#&#8203;21215](https://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://github.com/hai-x) in [#&#8203;21063](https://github.com/webpack/webpack/pull/21063)) - Add `universal` to `compiler.platform`, true for universal targets (`"universal"` or `["web", "node"]`). (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;21252](https://github.com/webpack/webpack/pull/21252)) - Add `output.strictModuleResolution` to gate the runtime `MODULE_NOT_FOUND` guard. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21067](https://github.com/webpack/webpack/pull/21067)) - Support an inline digest in hash path placeholders, e.g. `[contenthash:base64:8]`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21259](https://github.com/webpack/webpack/pull/21259)) - Support `[uniqueName]` and its `[uniquename]` alias in template paths. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21155](https://github.com/webpack/webpack/pull/21155)) - Support CSS in Node for universal targets, collecting styles for SSR. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21208](https://github.com/webpack/webpack/pull/21208)) - Improve commonjs, node-commonjs and global externals for universal targets. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21187](https://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://github.com/alexander-akait) in [#&#8203;21214](https://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://github.com/alexander-akait) in [#&#8203;21195](https://github.com/webpack/webpack/pull/21195)) - Add `output.workerChunkFilename` and `entry.worker` for worker chunk filenames. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21128](https://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://github.com/alexander-akait) in [#&#8203;21167](https://github.com/webpack/webpack/pull/21167)) - Extend the avoidEntryIife no-parse fast path to multi-entry chunks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21173](https://github.com/webpack/webpack/pull/21173)) - Reuse the binary deserialize dispatch table to speed up cache restore. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21175](https://github.com/webpack/webpack/pull/21175)) - Type `buildInfo` and `buildMeta` per module type with shared common properties. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21172](https://github.com/webpack/webpack/pull/21172)) - Avoid copying module runtime requirements when ownership is not transferred. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21140](https://github.com/webpack/webpack/pull/21140)) - Keep all CommonJS exports when an exported function accesses them via `this`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21179](https://github.com/webpack/webpack/pull/21179)) - Align CLI color-support detection across Node, Deno and Bun. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21257](https://github.com/webpack/webpack/pull/21257)) - Include the schema origin path in conflicting-schema CLI argument errors. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21087](https://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://github.com/alexander-akait) in [#&#8203;21057](https://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://github.com/alexander-akait) in [#&#8203;21035](https://github.com/webpack/webpack/pull/21035)) - Fix merging of inner modules' top-level declarations in concatenated modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21170](https://github.com/webpack/webpack/pull/21170)) - Reduce allocations in export hashing and concatenation name lookups. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21167](https://github.com/webpack/webpack/pull/21167)) - Avoid toLowerCase allocations in CSS keyword comparisons. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21109](https://github.com/webpack/webpack/pull/21109)) - Speed up CSS identifier escaping with a char-class lookup table. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21109](https://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://github.com/alexander-akait) in [#&#8203;21054](https://github.com/webpack/webpack/pull/21054)) - Avoid quadratic line scan when building CSS module exports source maps. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21109](https://github.com/webpack/webpack/pull/21109)) - Compute CSS comment source locations lazily. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21109](https://github.com/webpack/webpack/pull/21109)) - Support inline hash digest and length in CSS module `localIdentName` placeholders. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21259](https://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://github.com/alexander-akait) in [#&#8203;21196](https://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://github.com/alexander-akait) in [#&#8203;21202](https://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://github.com/alexander-akait) in [#&#8203;21114](https://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://github.com/alexander-akait) in [#&#8203;21054](https://github.com/webpack/webpack/pull/21054)) - Fix CSS tokenizer infinite loops and dropped tokens on malformed input. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21102](https://github.com/webpack/webpack/pull/21102)) - Speed up CSS identifier unescaping with bulk run flushing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21109](https://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://github.com/alexander-akait) in [#&#8203;21088](https://github.com/webpack/webpack/pull/21088)) - Resolve `DefinePlugin` access to an undefined object member as `undefined`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21040](https://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://github.com/alexander-akait) in [#&#8203;21228](https://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://github.com/hai-x) in [#&#8203;21203](https://github.com/webpack/webpack/pull/21203)) - Emit assets with absolute target paths as-is to avoid invalid Windows paths. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21223](https://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://github.com/alexander-akait) in [#&#8203;21188](https://github.com/webpack/webpack/pull/21188)) - Drop the unused loadScript runtime from ESM hot-update bundles. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21208](https://github.com/webpack/webpack/pull/21208)) - Extend value binding optimization to export default expressions. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21117](https://github.com/webpack/webpack/pull/21117)) - Reduce ExportInfo memory and cache size for inline-exports metadata. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21171](https://github.com/webpack/webpack/pull/21171)) - Resolve nested exports info paths iteratively to cut per-level array allocations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21137](https://github.com/webpack/webpack/pull/21137)) - Fix stale incremental cache for css, html and asset/source/inline modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21108](https://github.com/webpack/webpack/pull/21108)) - CommonJS tree-shaking no longer drops exports accessed before a deferred require binding. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21123](https://github.com/webpack/webpack/pull/21123)) - Make CSS-referenced asset available in lazy JS chunk during incremental rebuilds. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21100](https://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://github.com/alexander-akait) in [#&#8203;21232](https://github.com/webpack/webpack/pull/21232)) - perf: guard isDeferred() behind experiments.deferImport in ConcatenatedModule (by [@&#8203;shashank-u03](https://github.com/shashank-u03) in [#&#8203;21096](https://github.com/webpack/webpack/pull/21096)) - Speed up deterministicGrouping and cached comparators on large builds. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21197](https://github.com/webpack/webpack/pull/21197)) - Reduce allocations on harmony/commonjs dependency hot paths. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21180](https://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://github.com/alexander-akait) in [#&#8203;21131](https://github.com/webpack/webpack/pull/21131)) - Fix HTML parser adoption agency to handle a `nobr` shielded by a marker. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21274](https://github.com/webpack/webpack/pull/21274)) - Expand HTML parser tag/attribute coverage and decode character references. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21159](https://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://github.com/alexander-akait) in [#&#8203;21152](https://github.com/webpack/webpack/pull/21152)) - Speed up the experimental HTML parser and reduce its memory usage. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21130](https://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://github.com/alexander-akait) in [#&#8203;21054](https://github.com/webpack/webpack/pull/21054)) - Release inner-graph state after use and speed up inlined-export checks. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21167](https://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://github.com/alexander-akait) in [#&#8203;21139](https://github.com/webpack/webpack/pull/21139)) - Reduce CPU and memory overhead of the lazy barrel optimization. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21213](https://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://github.com/alexander-akait) in [#&#8203;21239](https://github.com/webpack/webpack/pull/21239)) - Speed up module concatenation by caching repeated per-module computations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21115](https://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://github.com/alexander-akait) in [#&#8203;21028](https://github.com/webpack/webpack/pull/21028)) - Move the `weak` flag from `Dependency` to `ModuleDependency`, where it's actually set. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21111](https://github.com/webpack/webpack/pull/21111)) - Avoid the entry IIFE for multiple inlined entry modules by renaming collisions. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21151](https://github.com/webpack/webpack/pull/21151)) - Reject `new import.defer(...)`/`new import.source(...)` with member access as a SyntaxError. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21211](https://github.com/webpack/webpack/pull/21211)) - Avoid `ProvidePlugin` injection for local CommonJS require bindings that use the same variable name. (by [@&#8203;fireairforce](https://github.com/fireairforce) in [#&#8203;21041](https://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://github.com/alexander-akait) in [#&#8203;21217](https://github.com/webpack/webpack/pull/21217)) - Use optional chaining in generated runtime code where the environment supports it. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21186](https://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://github.com/alexander-akait) in [#&#8203;21223](https://github.com/webpack/webpack/pull/21223)) - Reduce memory by not retaining the source location object on every dependency. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21183](https://github.com/webpack/webpack/pull/21183)) - Keep the full exports object when a `require()` binding is re-exported. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21144](https://github.com/webpack/webpack/pull/21144)) - Replace glob-to-regexp dependency with watchpack's globToRegExp utility. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;21176](https://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://github.com/hai-x) in [#&#8203;21210](https://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://github.com/alexander-akait) in [#&#8203;21201](https://github.com/webpack/webpack/pull/21201)) - Speed up buildChunkGraph by deriving block modules from the first runtime. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21166](https://github.com/webpack/webpack/pull/21166)) - Cache re-export target resolution in SideEffectsFlagPlugin for faster builds. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21085](https://github.com/webpack/webpack/pull/21085)) - Skip pure single-star passthrough modules for `export *` re-exports. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21085](https://github.com/webpack/webpack/pull/21085)) - Skip dependency error/warning reporting for unchanged modules on rebuilds. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21154](https://github.com/webpack/webpack/pull/21154)) - Use value descriptors instead of getters for const export bindings. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21021](https://github.com/webpack/webpack/pull/21021)) - Apply CSS hot updates on the Node side of a universal target. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21217](https://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://github.com/alexander-akait) in [#&#8203;21193](https://github.com/webpack/webpack/pull/21193)) - Avoid building warning stats objects when counting warnings without a filter. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21198](https://github.com/webpack/webpack/pull/21198)) - Recognize forward-slash Windows absolute paths (e.g. C:/dir) consistently. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21223](https://github.com/webpack/webpack/pull/21223)) ### [`v5.107.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51072) [Compare Source](https://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://github.com/alexander-akait) in [#&#8203;21020](https://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://github.com/alexander-akait) in [#&#8203;21023](https://github.com/webpack/webpack/pull/21023)) - Fix HTML `[contenthash]` for referenced asset and inline-style URL changes. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21018](https://github.com/webpack/webpack/pull/21018)) - Resolve chunk-hash placeholders in chunk URLs embedded into extracted HTML. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21018](https://github.com/webpack/webpack/pull/21018)) - Remove unnecessary `__webpack_require__` runtime helpers in ESM library output with multi-module chunks. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;21032](https://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://github.com/webpack/webpack/issues/20993) while keeping deep import chains stack-safe. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;21014](https://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://github.com/alexander-akait) in [#&#8203;21013](https://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://github.com/alexander-akait) in [#&#8203;21026](https://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://github.com/alexander-akait) in [#&#8203;21015](https://github.com/webpack/webpack/pull/21015)) - Reduce peak memory of `SourceMapDevToolPlugin` on large builds (closes [#&#8203;20961](https://github.com/webpack/webpack/issues/20961)). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20963](https://github.com/webpack/webpack/pull/20963)) - Fix slow `require.context()` / dynamic `import()` rebuilds in watch mode ([#&#8203;13636](https://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://github.com/alexander-akait) in [#&#8203;21020](https://github.com/webpack/webpack/pull/21020)) ### [`v5.107.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51071) [Compare Source](https://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://github.com/alexander-akait) in [#&#8203;21000](https://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://github.com/alexander-akait) in [#&#8203;21003](https://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://github.com/alexander-akait) in [#&#8203;20993](https://github.com/webpack/webpack/pull/20993)) - Fix `NormalModuleFactory` parser/generator types: (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20999](https://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://github.com/alexander-akait) in [#&#8203;20990](https://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://github.com/alexander-akait) in [#&#8203;21002](https://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://github.com/alexander-akait) in [#&#8203;21001](https://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://github.com/alexander-akait) in [#&#8203;20987](https://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://github.com/alexander-akait) in [#&#8203;20992](https://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://github.com/alexander-akait) in [#&#8203;20994](https://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://github.com/alexander-akait) in [#&#8203;21004](https://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://github.com/alexander-akait) in [#&#8203;20988](https://github.com/webpack/webpack/pull/20988)) ### [`v5.107.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51070) [Compare Source](https://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://github.com/xiaoxiaojx) in [#&#8203;20894](https://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://github.com/xiaoxiaojx) in [#&#8203;20851](https://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://github.com/alexander-akait) in [#&#8203;20914](https://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://github.com/alexander-akait) in [#&#8203;20947](https://github.com/webpack/webpack/pull/20947)) - Add `CssModulesPlugin.getCompilationHooks(compilation).orderModules` hook. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20978](https://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://github.com/alexander-akait) in [#&#8203;20946](https://github.com/webpack/webpack/pull/20946)) - Support CSS Modules `@value` identifiers as `@import` URLs and inside `url()` functions, e.g. `@value path: "./other.css"; @import path;` and `@value bg: "./image.png"; .a { background: url(bg); }` (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20925](https://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://github.com/alexander-akait) in [#&#8203;20964](https://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://github.com/aryanraj45) in [#&#8203;20902](https://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://github.com/alexander-akait) in [#&#8203;20934](https://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://github.com/hai-x) in [#&#8203;20775](https://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://github.com/alexander-akait) in [#&#8203;20979](https://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://github.com/alexander-akait) in [#&#8203;20933](https://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://github.com/alexander-akait) in [#&#8203;20929](https://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://github.com/alexander-akait) in [#&#8203;20936](https://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://github.com/alexander-akait) in [#&#8203;20938](https://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://github.com/alexander-akait) in [#&#8203;20886](https://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://github.com/alexander-akait) in [#&#8203;20929](https://github.com/webpack/webpack/pull/20929)) - Preserve `@charset` at-rule when CSS modules use `exportType: "text"`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20912](https://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://github.com/alexander-akait) in [#&#8203;20879](https://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://github.com/xiaoxiaojx) in [#&#8203;20911](https://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://github.com/alexander-akait) in [#&#8203;20940](https://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 proxy itself instead of routing through the optimized `.a` getter (which lazily evaluates the module and returns its default value), so `typeof ns.default` observed `"object"` (the proxy) rather than the type of the default. The `dynamic` exportsType already used `.a` correctly; default-only and default-with-named now match. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20910](https://github.com/webpack/webpack/pull/20910)) - Make `import defer * as ns` more spec-compliant: `ns.x = value` no longer triggers module evaluation (per the TC39 import-defer `[[Set]]` algorithm), and the deferred namespace is now a distinct object from the eager namespace, with the same Deferred Module Namespace Exotic Object shared across defer-import call sites for the same module. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20913](https://github.com/webpack/webpack/pull/20913)) - Fixed spec deviations in the deferred namespace object returned by `__webpack_require__.z` (`import defer * as ns` / `import.defer(...)`). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20910](https://github.com/webpack/webpack/pull/20910)) - Drop the `__webpack_require__`, `__webpack_require__.d`, and `__webpack_require__.o` runtime helpers from `library: { type: "module" }` bundles when the on-demand exports source they were emitted for ends up dropped (e.g. a single concatenated entry without an IIFE). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20901](https://github.com/webpack/webpack/pull/20901)) - Resolve the static specifier of a dynamic `import()` whose argument is a side-effect-free `SequenceExpression`, e.g. `import((1, 0, "./mod.js"))` is now treated the same as `import("./mod.js")` instead of being rejected as unresolvable. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20917](https://github.com/webpack/webpack/pull/20917)) - Stable shared module ids and runtime-chunk emission order. (by [@&#8203;imccausl](https://github.com/imccausl) in [#&#8203;20860](https://github.com/webpack/webpack/pull/20860)) - Fix snapshot validity check for context dependencies in watch mode by treating watchpack's existence-only entries (`{}`) as cache misses. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20916](https://github.com/webpack/webpack/pull/20916)) - Support no-expression template literals in computed member access (e.g. ``import.meta[`url`]``). (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20889](https://github.com/webpack/webpack/pull/20889)) - Improve tree-shaking in `isPure`: handle more expression types (`ArrayExpression`, `ObjectExpression`, `NewExpression`, `ChainExpression`, `UnaryExpression` (safe operators), `MetaProperty`, `TaggedTemplateExpression`, `BinaryExpression` (strict equality)), prevent `/*#__PURE__*/` comments from leaking across `ObjectExpression` properties, and detect PURE comments inside `TemplateLiteral` interpolations. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20723](https://github.com/webpack/webpack/pull/20723)) - Reject `new import.defer(...)` and `new import.source(...)` as a parse-time `SyntaxError`, matching the spec — `ImportCall` is a `CallExpression` and is not a valid operand of `new`. Parenthesized forms (`new (import.defer(...))`) remain valid and continue to throw `TypeError` at runtime as before. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20917](https://github.com/webpack/webpack/pull/20917)) - Escape `#` characters that appear inside a path-shaped request's directory portion before passing the request to the resolver, so projects located in directories like `/home/user/proj#1` (and tools like webpack-dev-server that build entry requests with query strings) resolve correctly. The escape only kicks in when the request contains both a `#` in the path portion and a `?` query string — paths without a query keep their existing semantics. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20980](https://github.com/webpack/webpack/pull/20980)) - Silence unhandled rejection from the prefetch trigger when chunk loading fails. The `ensureChunkHandlers.prefetch` runtime created `Promise.all(promises).then(...)` whose result is discarded by `__webpack_require__.e`. If chunk loading rejected (e.g. `chunkLoadTimeout`), that dangling chain produced an unhandled rejection. Prefetch is best-effort, so a no-op rejection handler is now attached. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20898](https://github.com/webpack/webpack/pull/20898)) - Align `require()` of an ES module with Node.js's [`require(esm)`](https://nodejs.org/docs/latest/api/modules.html#loading-ecmascript-modules-using-require) `"module.exports"` named-export convention. When CommonJS `require()` resolves to an ES module that exports a binding with the literal string name `"module.exports"` (e.g. `export { value as "module.exports" }`), `require()` now returns the value of that export instead of the module's namespace object — matching Node.js v22.12+/v23+ behavior and easing migration of dual ESM/CJS libraries that rely on `module.exports = …`. The unwrap applies to plain `require()`, `require().foo`, calls (`require()(…)`), destructuring, and to CJS wrappers like `module.exports = require(esm)` / `exports.x = require(esm)`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20981](https://github.com/webpack/webpack/pull/20981)) - Remove outdated `@types/eslint-scope` package from dependencies. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20869](https://github.com/webpack/webpack/pull/20869)) - Fix `export *` resolution when a star-reexported module re-exports a name back to the importer cyclically. Previously, in a graph where `a` does `export * from "./b"; export * from "./c";` and `b` does `export { foo } from "./a";` while `c` provides the actual `foo` binding, webpack hoisted `foo` from `b` into `a`'s namespace without per-name cycle detection — emitting a getter chain (`a.foo` → `b.foo` → `a.foo`) that threw "Maximum call stack size exceeded" at runtime. The TC39 `ResolveExport` algorithm requires the cyclic branch to return null and the star loop to fall through to the non-cyclic source. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20959](https://github.com/webpack/webpack/pull/20959)) - Preserve `using` declaration initializers when the inner graph optimization is enabled. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20906](https://github.com/webpack/webpack/pull/20906)) - Fixed typescript types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20880](https://github.com/webpack/webpack/pull/20880)) - Bump `webpack-sources` to `^3.4.1` and feed asset bytes into hashes via the new `Source.prototype.buffers()` API. For large `ConcatSource`/`ReplaceSource` outputs this avoids the intermediate `Buffer.concat` that `source.buffer()` performs, removing a peak-memory spike equal to the source's total size on each hashed asset (`AssetGenerator.getFullContentHash`, `CssIcssExportDependency` content hashing, and `RealContentHashPlugin`). A small benchmark on a 64 MiB `ConcatSource` shows \~64 MiB lower peak external memory and \~45% faster hashing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20897](https://github.com/webpack/webpack/pull/20897)) ### [`v5.106.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51062) [Compare Source](https://github.com/webpack/webpack/compare/v5.106.1...v5.106.2) ##### Patch Changes - CSS [@&#8203;import](https://github.com/import) now inherits the parent module's exportType, so a file configured as "text" correctly creates a style tag when [@&#8203;imported](https://github.com/imported) by a "style" parent. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20838](https://github.com/webpack/webpack/pull/20838)) - Make asset modules available in JS context when referenced from both CSS and a lazily compiled JS chunk. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20801](https://github.com/webpack/webpack/pull/20801)) - Include missing generator options in hash to ensure persistent cache invalidation when configuration changes (CssGenerator `exportsOnly`, JsonGenerator `JSONParse`, WebAssemblyGenerator `mangleImports`). (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20821](https://github.com/webpack/webpack/pull/20821)) - Fix `||` default value handling in ProgressPlugin and ManifestPlugin that incorrectly overrode user-provided falsy values (e.g. `modules: false`, `entries: false`, `entrypoints: false`). (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20823](https://github.com/webpack/webpack/pull/20823)) - Migrate from `mime-types` to `mime-db`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20812](https://github.com/webpack/webpack/pull/20812)) - Handle `@charset` at-rules in CSS modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20831](https://github.com/webpack/webpack/pull/20831)) - Marked all experimental options in types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20814](https://github.com/webpack/webpack/pull/20814)) ### [`v5.106.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51061) [Compare Source](https://github.com/webpack/webpack/compare/v5.106.0...v5.106.1) ##### Patch Changes - Fix two ES5-environment regressions in the anonymous default export `.name` fix-up: the generated code referenced an undeclared `__WEBPACK_DEFAULT_EXPORT__` binding causing `ReferenceError`, and used `Reflect.defineProperty` which is not available in pre-ES2015 runtimes. The fix-up now references the real assignment target and uses `Object.defineProperty` / `Object.getOwnPropertyDescriptor`. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20796](https://github.com/webpack/webpack/pull/20796)) - Prevent `!important` from being renamed as a local identifier in CSS modules. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20798](https://github.com/webpack/webpack/pull/20798)) - Use compiler context instead of module context for CSS modules local ident hashing to avoid hash collisions when files with the same name exist in different directories. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20799](https://github.com/webpack/webpack/pull/20799)) ### [`v5.106.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51060) [Compare Source](https://github.com/webpack/webpack/compare/v5.105.4...v5.106.0) ##### Minor Changes - Add `exportType: "style"` for CSS modules to inject styles into DOM via HTMLStyleElement, similar to style-loader functionality. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20579](https://github.com/webpack/webpack/pull/20579)) - Add `context` option support for VirtualUrlPlugin (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20449](https://github.com/webpack/webpack/pull/20449)) - The context for the virtual module. A string path. Defaults to 'auto', which will try to resolve the context from the module id. - Support custom context path for resolving relative imports in virtual modules - Add examples demonstrating context usage and filename customization - Generate different `CssModule` instances for different `exportType` values. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20590](https://github.com/webpack/webpack/pull/20590)) - Added the `localIdentHashFunction` option to configure the hash function to be used for hashing. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20694](https://github.com/webpack/webpack/pull/20694)) Additionally, the `localIdentName` option can now be a function. - Added support for destructuring assignment `require` in cjs, allowing for tree shaking. (by [@&#8203;ahabhgk](https://github.com/ahabhgk) in [#&#8203;20548](https://github.com/webpack/webpack/pull/20548)) - Added the `validate` option to enable/disable validation in webpack/plugins/loaders, also implemented API to make it inside plugins. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20275](https://github.com/webpack/webpack/pull/20275)) - Added `source` support for async WASM modules. (by [@&#8203;magic-akari](https://github.com/magic-akari) in [#&#8203;20364](https://github.com/webpack/webpack/pull/20364)) ##### Patch Changes - Add a static getSourceBasicTypes method to the Module class to prevent errors across multiple versions. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20614](https://github.com/webpack/webpack/pull/20614)) - Included fragment groups in the conflicting order warning for CSS. (by [@&#8203;aryanraj45](https://github.com/aryanraj45) in [#&#8203;20660](https://github.com/webpack/webpack/pull/20660)) - Avoid rendering unused top-level `__webpack_exports__` declaration when output ECMA module library. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20669](https://github.com/webpack/webpack/pull/20669)) - Fixed resolving in CSS modules. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20771](https://github.com/webpack/webpack/pull/20771)) - Allow external modules place in async chunks when output ECMA module. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20662](https://github.com/webpack/webpack/pull/20662)) - Implement `deprecate` flag in schema for better TypeScript support to show which options are already deprecated by the configuration (by [@&#8203;bjohansebas](https://github.com/bjohansebas) in [#&#8203;20432](https://github.com/webpack/webpack/pull/20432)) - Set `.name` to `"default"` for anonymous default export functions and classes per ES spec (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20773](https://github.com/webpack/webpack/pull/20773)) - Hash entry chunks after runtime chunks to prevent stale content hash references in watch mode (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20724](https://github.com/webpack/webpack/pull/20724)) - Fix multiple bugs and optimizations in CSS modules: correct third code point position in walkCssTokens number detection, fix multiline CSS comment regex, fix swapped :import/:export error message, fix comma callback incorrectly popping balanced stack, fix cache comparison missing array length check, fix match.index mutation side effect, move publicPathAutoRegex to module scope, precompute merged callbacks in consumeUntil, simplify redundant ternary in CssGenerator, fix typo GRID_TEMPLATE_ARES, remove duplicate grid-column-start, and merge duplicate getCompilationHooks calls. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20648](https://github.com/webpack/webpack/pull/20648)) - Correct url() path resolution and preserve source maps for non-link CSS export types (style, text, css-style-sheet) (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20717](https://github.com/webpack/webpack/pull/20717)) - Emit error when proxy server returns non-200 status code in HttpUriPlugin instead of silently failing. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20646](https://github.com/webpack/webpack/pull/20646)) - `import.meta` as standalone expression now returns a complete object with known properties (`url`, `webpack`, `main`, `env`) instead of an empty object `({})`, and hoists it as a module-level variable to ensure `import.meta === import.meta` identity. In `preserve-unknown` mode (ESM output), the hoisted object merges runtime `import.meta` properties via `Object.assign`. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20658](https://github.com/webpack/webpack/pull/20658)) - Fix incorrect condition in FileSystemInfo that always evaluated to false, preventing trailing slash removal from directory paths during build dependency resolution. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20649](https://github.com/webpack/webpack/pull/20649)) - fix: VirtualUrlPlugin absolute path virtual module IDs getting concatenated with compiler context (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20656](https://github.com/webpack/webpack/pull/20656)) When a virtual module ID is an absolute path (e.g. `virtual:C:/project/user.js`), the auto-derived context was incorrectly joined with `compiler.context`, producing a concatenated path like `C:\cwd\C:\project`. Now absolute-path contexts are used directly. - All deprecated methods and options now have `@deprecated` flag in types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20707](https://github.com/webpack/webpack/pull/20707)) - Fix `CompatibilityPlugin` to correctly rename `__webpack_require__` when it appears as an arrow function parameter (e.g. `(__webpack_module, __webpack_exports, __webpack_require__) => { ... }`). (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20661](https://github.com/webpack/webpack/pull/20661)) ### [`v5.105.4`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51054) [Compare Source](https://github.com/webpack/webpack/compare/v5.105.3...v5.105.4) ##### Patch Changes - Add `Module.getSourceBasicTypes` to distinguish basic source types and clarify how modules with non-basic source types like `remote` still produce JavaScript output. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20546](https://github.com/webpack/webpack/pull/20546)) - Handle `createRequire` in expressions. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20549](https://github.com/webpack/webpack/pull/20549)) - Fixed types for multi stats. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20556](https://github.com/webpack/webpack/pull/20556)) - Remove empty needless js output for normal css module. (by [@&#8203;JSerFeng](https://github.com/JSerFeng) in [#&#8203;20162](https://github.com/webpack/webpack/pull/20162)) - Update `enhanced-resolve` to support new features for `tsconfig.json`. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20555](https://github.com/webpack/webpack/pull/20555)) - Narrows export presence guard detection to explicit existence checks on namespace imports only, i.e. patterns like "x" in ns. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20561](https://github.com/webpack/webpack/pull/20561)) ### [`v5.105.3`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51053) [Compare Source](https://github.com/webpack/webpack/compare/v5.105.2...v5.105.3) ##### Patch Changes - Context modules now handle rejections correctly. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20455](https://github.com/webpack/webpack/pull/20455)) - Only mark asset modules as side-effect-free when `experimental.futureDefaults` is set to true, so asset-copying use cases (e.g. `import "./x.png"`) won’t break unless the option is enabled. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20535](https://github.com/webpack/webpack/pull/20535)) - Add the missing **webpack_exports** declaration in certain cases when bundling a JS entry together with non-JS entries (e.g., CSS entry or asset module entry). (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20463](https://github.com/webpack/webpack/pull/20463)) - Fixed HMR failure for CSS modules with [@&#8203;import](https://github.com/import) when exportType !== "link". When exportType is not "link", CSS modules now behave like JavaScript modules and don't require special HMR handling, allowing [@&#8203;import](https://github.com/import) CSS to work correctly during hot module replacement. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20514](https://github.com/webpack/webpack/pull/20514)) - Fixed an issue where empty JavaScript files were generated for CSS-only entry points. The code now correctly checks if entry modules have JavaScript source types before determining whether to generate a JS file. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20454](https://github.com/webpack/webpack/pull/20454)) - Do not crash when a referenced chunk is not a runtime chunk. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20461](https://github.com/webpack/webpack/pull/20461)) - Fix some types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20412](https://github.com/webpack/webpack/pull/20412)) - Ensure that missing module error are thrown after the interception handler (if present), allowing module interception to customize the module factory. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20510](https://github.com/webpack/webpack/pull/20510)) - Added `createRequire` support for ECMA modules. (by [@&#8203;stefanbinoj](https://github.com/stefanbinoj) in [#&#8203;20497](https://github.com/webpack/webpack/pull/20497)) - Added category for CJS reexport dependency to fix issues with ECMA modules. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20444](https://github.com/webpack/webpack/pull/20444)) - Implement immutable bytes for `bytes` import attribute to match tc39 spec. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20481](https://github.com/webpack/webpack/pull/20481)) - Fixed deterministic search for graph roots regardless of edge order. (by [@&#8203;veeceey](https://github.com/veeceey) in [#&#8203;20452](https://github.com/webpack/webpack/pull/20452)) ### [`v5.105.2`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51052) [Compare Source](https://github.com/webpack/webpack/compare/v5.105.1...v5.105.2) ##### Patch Changes - Fixed `WebpackPluginInstance` type regression. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20440](https://github.com/webpack/webpack/pull/20440)) ### [`v5.105.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51051) [Compare Source](https://github.com/webpack/webpack/compare/v5.105.0...v5.105.1) ##### Patch Changes - Fix VirtualUrlPlugin Windows compatibility by sanitizing cache keys and filenames. Cache keys now use `toSafePath` to replace colons (`:`) with double underscores (`__`) and sanitize other invalid characters, ensuring compatibility with Windows filesystem restrictions. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20424](https://github.com/webpack/webpack/pull/20424)) - Revert part of the createRequire generation behavior for `require("node:...")` to keep compatibility with those modules exports, e.g. `const EventEmitter = require("node:events");`. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20433](https://github.com/webpack/webpack/pull/20433)) - Skip guard collection when exports-presence mode is disabled to improve parsing performance. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20433](https://github.com/webpack/webpack/pull/20433)) ### [`v5.105.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51050) [Compare Source](https://github.com/webpack/webpack/compare/v5.104.1...v5.105.0) ##### Minor Changes - Allow resolving worker module by export condition name when using `new Worker()` (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20353](https://github.com/webpack/webpack/pull/20353)) - Detect conditional imports to avoid compile-time linking errors for non-existent exports. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20320](https://github.com/webpack/webpack/pull/20320)) - Added the `tsconfig` option for the `resolver` options (replacement for `tsconfig-paths-webpack-plugin`). Can be `false` (disabled), `true` (use the default `tsconfig.json` file to search for it), a string path to `tsconfig.json`, or an object with `configFile` and `references` options. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20400](https://github.com/webpack/webpack/pull/20400)) - Support `import.defer()` for context modules. (by [@&#8203;ahabhgk](https://github.com/ahabhgk) in [#&#8203;20399](https://github.com/webpack/webpack/pull/20399)) - Added support for array values ​​to the `devtool` option. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20191](https://github.com/webpack/webpack/pull/20191)) - Improve rendering node built-in modules for ECMA module output. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20255](https://github.com/webpack/webpack/pull/20255)) - Unknown import.meta properties are now determined at runtime instead of being statically analyzed at compile time. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20312](https://github.com/webpack/webpack/pull/20312)) ##### Patch Changes - Fixed ESM default export handling for `.mjs` files in Module Federation (by [@&#8203;y-okt](https://github.com/y-okt) in [#&#8203;20189](https://github.com/webpack/webpack/pull/20189)) - Optimized `import.meta.env` handling in destructuring assignments by using cached stringified environment definitions. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20313](https://github.com/webpack/webpack/pull/20313)) - Respect the `stats.errorStack` option in stats output. (by [@&#8203;samarthsinh2660](https://github.com/samarthsinh2660) in [#&#8203;20258](https://github.com/webpack/webpack/pull/20258)) - Fixed a bug where declaring a `module` variable in module scope would conflict with the default `moduleArgument`. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20265](https://github.com/webpack/webpack/pull/20265)) - Fix VirtualUrlPlugin to set resourceData.context for proper module resolution. Previously, when context was not set, it would fallback to the virtual scheme path (e.g., `virtual:routes`), which is not a valid filesystem path, causing subsequent resolve operations to fail. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20390](https://github.com/webpack/webpack/pull/20390)) - Fixed Worker self-import handling to support various URL patterns (e.g., `import.meta.url`, `new URL(import.meta.url)`, `new URL(import.meta.url, import.meta.url)`, `new URL("./index.js", import.meta.url)`). Workers that resolve to the same module are now properly deduplicated, regardless of the URL syntax used. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20381](https://github.com/webpack/webpack/pull/20381)) - Reuse the same async entrypoint for the same Worker URL within a module to avoid circular dependency warnings when multiple Workers reference the same resource. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20345](https://github.com/webpack/webpack/pull/20345)) - Fixed a bug where a self-referencing dependency would have an unused export name when imported inside a web worker. (by [@&#8203;samarthsinh2660](https://github.com/samarthsinh2660) in [#&#8203;20251](https://github.com/webpack/webpack/pull/20251)) - Fix missing export generation when concatenated modules in different chunks share the same runtime in module library bundles. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20346](https://github.com/webpack/webpack/pull/20346)) - Fixed `import.meta.env.xxx` behavior: when accessing a non-existent property, it now returns empty object instead of full object at runtime. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20289](https://github.com/webpack/webpack/pull/20289)) - Improved parsing error reporting by adding a link to the loader documentation. (by [@&#8203;gaurav10gg](https://github.com/gaurav10gg) in [#&#8203;20244](https://github.com/webpack/webpack/pull/20244)) - Fix typescript types. (by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;20305](https://github.com/webpack/webpack/pull/20305)) - Add declaration for unused harmony import specifier. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20286](https://github.com/webpack/webpack/pull/20286)) - Fix compressibility of modules while retaining portability. (by [@&#8203;dmichon-msft](https://github.com/dmichon-msft) in [#&#8203;20287](https://github.com/webpack/webpack/pull/20287)) - Optimize source map generation: only include `ignoreList` property when it has content, avoiding empty arrays in source maps. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20319](https://github.com/webpack/webpack/pull/20319)) - Preserve star exports for dependencies in ECMA module output. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20293](https://github.com/webpack/webpack/pull/20293)) - Consider asset modulem to be side-effect free. (by [@&#8203;hai-x](https://github.com/hai-x) in [#&#8203;20352](https://github.com/webpack/webpack/pull/20352)) - Avoid generating JavaScript modules for CSS exports that are not used, reducing unnecessary output and bundle size. (by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;20337](https://github.com/webpack/webpack/pull/20337)) ### [`v5.104.1`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51041) [Compare Source](https://github.com/webpack/webpack/compare/v5.104.0...v5.104.1) ##### Patch Changes - [`2efd21b`](https://github.com/webpack/webpack/commit/2efd21b): Reexports runtime calculation should not accessing **WEBPACK_IMPORT_KEY** decl with var. - [`c510070`](https://github.com/webpack/webpack/commit/c510070): Fixed a user information bypass vulnerability in the HttpUriPlugin plugin. ### [`v5.104.0`](https://github.com/webpack/webpack/blob/HEAD/CHANGELOG.md#51040) [Compare Source](https://github.com/webpack/webpack/compare/v5.103.0...v5.104.0) ##### Minor Changes - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Use method shorthand to render module content in `__webpack_modules__` object. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Enhance `import.meta.env` to support object access. - [`4baab4e`](https://github.com/webpack/webpack/commit/4baab4e): Optimize dependency sorting in updateParent: sort each module only once by deferring to finishUpdateParent(), and reduce traversal count in sortWithSourceOrder by caching WeakMap values upfront. - [`04cd530`](https://github.com/webpack/webpack/commit/04cd530): Handle more at-rules for CSS modules. - [`cafae23`](https://github.com/webpack/webpack/commit/cafae23): Added options to control the renaming of at-rules and various identifiers in CSS modules. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Added `base64url`, `base62`, `base58`, `base52`, `base49`, `base36`, `base32` and `base25` digests. - [`5983843`](https://github.com/webpack/webpack/commit/5983843): Provide a stable runtime function variable `__webpack_global__`. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Improved `localIdentName` hashing for CSS. ##### Patch Changes - [`22c48fb`](https://github.com/webpack/webpack/commit/22c48fb): Added module existence check for informative error message in development mode. - [`50689e1`](https://github.com/webpack/webpack/commit/50689e1): Use the fully qualified class name (or export name) for `[fullhash]` placeholder in CSS modules. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Support universal lazy compilation. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Fixed module library export definitions when multiple runtimes. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Fixed CSS nesting and CSS custom properties parsing. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Don't write fragment from URL to filename and apply fragment to module URL. - [`aab1da9`](https://github.com/webpack/webpack/commit/aab1da9): Fixed bugs for `css/global` type. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Compatibility `import.meta.filename` and `import.meta.dirname` with `eval` devtools. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Handle nested `__webpack_require__`. - [`728ddb7`](https://github.com/webpack/webpack/commit/728ddb7): The speed of identifier parsing has been improved. - [`0f8b31b`](https://github.com/webpack/webpack/commit/0f8b31b): Improve types. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Don't corrupt `debugId` injection when `hidden-source-map` is used. - [`2179fdb`](https://github.com/webpack/webpack/commit/2179fdb): Re-validate HttpUriPlugin redirects against allowedUris, restrict to http(s) and add a conservative redirect limit to prevent SSRF and untrusted content inclusion. Redirects failing policy are rejected before caching/lockfile writes. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Serialize `HookWebpackError`. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Added ability to use built-in properties in dotenv and define plugin. - [`3c4319f`](https://github.com/webpack/webpack/commit/3c4319f): Optimizing the regular expression character class by specifying ranges for runtime code. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Reduce collision for local indent name in CSS. - [`d3dd841`](https://github.com/webpack/webpack/commit/d3dd841): Remove CSS link tags when CSS imports are removed. ### [`v5.103.0`](https://github.com/webpack/webpack/releases/tag/v5.103.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.102.1...v5.103.0) ##### Features - Added `DotenvPlugin` and top level `dotenv` option to enable this plugin - Added `WebpackManifestPlugin` - Added support the `ignoreList` option in devtool plugins - Allow to use custom javascript parse function - Added `import.meta.env` support for environment variables - Added support for `import.meta.dirname` and `import.meta.filename` - Added support `import.defer()` for statistical path - Handle import.meta.main - Added suport to setup named exports for JSON modules and disable usage named export for `import file from "./file.json" with { type: "json" }` - Added support `__dirname`/`__filename`/`import.meta.dirname`/`import.meta.filename` for universal target - \[CSS] Added the `exportType` option with `link` (by default), "text" and `css-style-sheet` values - \[CSS] Added support for `composes` properties ##### Fixes - The `dependOn` chunk must be loaded before the common chunk - Return to namespace import when the external request includes a specific export - No runtime extra runtime code for module libraries - Delay HMR accept dependencies to preserve import attributes - Properly handle external presets for universal target - Fixed incorrect identifier of import binding for module externals - Fixed when defer import and dynamic default export mixed - Reduce generated output when `globalThis` supported - Fixed loading async modules in defer import - Reexport module for default import when no used exports for systemjs library - Rename HarmonyExportDependencyParserPlugin exported id to CompatibilityPlugin tagged id - Handle `__dirname` and `__filename` for ES modules - Rename single nested `__webpack_export__` and `__webpack_require__` in already bundled code - \[Types] webpack function type - \[Types] NormalModule type - \[Types] Multi compiler configuration type - \[Types] Fixed regression in custom `hashDigest` type - \[CSS] No extra runtime for initial chunk - \[CSS] Fixed a lot of CSS modules bugs ### [`v5.102.1`](https://github.com/webpack/webpack/releases/tag/v5.102.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.102.0...v5.102.1) ##### Fixes - Supported `extends` with `env` for `browserslist` - Supported `JSONP` fragment format for web workers. - Fixed dynamic import support in workers using `browserslist`. - Fixed default defer import mangling. - Fixed default import of `commonjs` externals for `SystemJS` format. - Fixed context modules to the same file with different import attributes. - Fixed typescript types. - Improved `import.meta` warning messages to be more clear when used directly. - \[CSS] Fixed CC_UPPER_U parsing (E -> U) in tokenizer. ### [`v5.102.0`](https://github.com/webpack/webpack/releases/tag/v5.102.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.101.3...v5.102.0) ##### Features - Added static analyze for dynamic imports - Added support for `import file from "./file.ext" with { type: "bytes" }` to get the content as `Uint8Array` (look at [example](https://github.com/webpack/webpack/tree/main/examples/asset)) - Added support for `import file from "./file.ext" with { type: "text" }` to get the content as text (look at [example](https://github.com/webpack/webpack/tree/main/examples/asset)) - Added the `snapshot.contextModule` to configure snapshots options for context modules - Added the `extractSourceMap` option to implement the capabilities of loading source maps by comment, you don't need `source-map-loader` (look at [example](https://github.com/webpack/webpack/tree/main/examples/source-mapping-url)) - The `topLevelAwait` experiment is now stable (you can remove `experiments.topLevelAwait` from your `webpack.config.js`) - The `layers` experiment is now stable (you can remove `experiments.layers` from your `webpack.config.js`) - Added function matcher support in rule options ##### Fixes - Fixed conflicts caused by multiple concatenate modules - Ignore import failure during HMR update with ES modules output - Keep render module order consistent - Prevent inlining modules that have `this` exports - Removed unused `timeout` attribute of script tag - Supported UMD chunk format to work in web workers - Improved CommonJs bundle to ES module library - Use `es-lexer` for `mjs` files for build dependencies - Fixed support `__non_webpack_require__` for ES modules - Properly handle external modules for CSS - AssetsByChunkName included assets from `chunk.auxiliaryFiles` - Use `createRequire` only when output is ES module and target is node - Typescript types ##### Performance Improvements - Avoid extra calls for snapshot - A avoid extra jobs for build dependencies - Move import attributes to own dependencies ### [`v5.101.3`](https://github.com/webpack/webpack/releases/tag/v5.101.3) [Compare Source](https://github.com/webpack/webpack/compare/v5.101.2...v5.101.3) ##### Fixes - Fixed resolve execution order issue from extra await in async modules - Avoid empty block for unused statement - Collect only specific expressions for destructuring assignment ### [`v5.101.2`](https://github.com/webpack/webpack/releases/tag/v5.101.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.101.1...v5.101.2) ##### Fixes - Fixed syntax error when comment is on the last line - Handle var declaration for `createRequire` - Distinguish free variable and tagged variable ### [`v5.101.1`](https://github.com/webpack/webpack/releases/tag/v5.101.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.101.0...v5.101.1) ##### Fixes - Filter deleted assets in `processAdditionalAssets` hook - HMR failure in defer module - Emit assets even if invalidation occurs again - Export types for serialization and deserialization in plugins and export the `ModuleFactory` class - Fixed the failure export of internal function for ES module chunk format - Fixed `GetChunkFilename` failure caused by `dependOn` entry - Fixed the import of missing dependency chunks - Fixed when entry chunk depends on the runtime chunk hash - Fixed `module.exports` bundle to ESM library - Adjusted the time of adding a group depending on the fragment of execution time - Fixed circle dependencies when require `RawModule` and condition of `isDeferred` - Tree-shakable module library should align preconditions of `allowInlineStartup` ### [`v5.101.0`](https://github.com/webpack/webpack/releases/tag/v5.101.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.100.2...v5.101.0) ##### Fixes - Fixed concatenate optimization for ESM that caused undefined export - Respect the `output.environment.nodePrefixForCoreModules` option everywhere - Respect the `output.importMetaName` option everywhere - Fixed await async dependencies when accepting them during HMR - Better typescript types ##### Features - Added colors helpers for CLI - Enable tree-shaking for ESM external modules with named imports - Added the `deferImport` option to parser options ##### Performance Improvements - Fixed a regression in module concatenation after implementing deferred import support - Fixed a potential performance issue in CleanPlugin - Avoid extra `require` in some places ### [`v5.100.2`](https://github.com/webpack/webpack/releases/tag/v5.100.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.100.1...v5.100.2) ##### Fixes - Keep consistent CSS order - Dependency without the source order attribute must keep their original index - Keep module traversal consistent across reexport scenarios ##### Performance Improvements - Extend `importPhasesPlugin` only when enable `deferImport` ([#&#8203;19689](https://github.com/webpack/webpack/issues/19689)) ### [`v5.100.1`](https://github.com/webpack/webpack/releases/tag/v5.100.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.100.0...v5.100.1) ##### Fixes - Tree-shaking unused ignored modules - \[Types] Compatibility with old Node.js versions ### [`v5.100.0`](https://github.com/webpack/webpack/releases/tag/v5.100.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.9...v5.100.0) ##### Fixes - Fixed the case where an ES modules entry chunk depends on the runtime chunk hash - Handle function exports in webpack module wrapper - Ensure dependent chunks are imported before startup & fix duplicate export of 'default' - Generate lose closing brace when exports are unprovided - CleanPlugin doesn't unlink same file twice - Fixed unexpected error codes from fs.unlink on Windows - Typescript types ##### Features - HMR support for ES modules output - ES module output mode now fully supports `splitChunks` when external variables and runtimeChunk are not set. - Added support `using` keyword - Implemented tc39 [Defer Module Evaluation](https://github.com/tc39/proposal-defer-import-eval) (experiment) - Support dynamic template literals expressions for `new URL(...)` - Enable ES modules worker chunk loading for Node.js targets - Improved support for destructing in DefinePlugin - Added [VirtualUrlPlugin](https://github.com/webpack/webpack/tree/main/examples/virtual-modules) to support `virtual:` scheme ##### Performance Improvements - Remove useless startup entrypoint runtime for ES modules output - Cache `new URL(...)` evaluate expression ### [`v5.99.9`](https://github.com/webpack/webpack/releases/tag/v5.99.9) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.8...v5.99.9) ##### Fixes - HMR might fail if there are new initial chunks - Destructuring namespace import with default - Destructuring namespace import with computed-property - Generate valid code for es export generation for multiple module entries - Fixed public path issue for ES modules - Asset modules work when lazy compilation used - Eliminate unused statements in certain scenarios - Fixed regression with location and order of dependencies - Fixed typescript types ### [`v5.99.8`](https://github.com/webpack/webpack/releases/tag/v5.99.8) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.7...v5.99.8) ##### Fixes - Fixed type error with latest `@types/node` - Fixed typescript types ### [`v5.99.7`](https://github.com/webpack/webpack/releases/tag/v5.99.7) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.6...v5.99.7) ##### Fixes - Don't skip export generation for `default` reexport ([#&#8203;19463](https://github.com/webpack/webpack/issues/19463)) - Fixed module library export generation for reexport ([#&#8203;19459](https://github.com/webpack/webpack/issues/19459)) - Avoid module concatenation in child compilation for module library ([#&#8203;19457](https://github.com/webpack/webpack/issues/19457)) - Ensure HMR recover gracefully when CSS module with error - Respect `cause` of any errors and `errors` of AggregateError in stats output - Added missing `@types/json-schema` in types ### [`v5.99.6`](https://github.com/webpack/webpack/releases/tag/v5.99.6) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.5...v5.99.6) ##### Fixes - Respect public path for ES modules - Fixed generation of module for `module` library when mixing commonjs and esm modules - Always apply `FlagDependencyExportsPlugin` for libraries where it required - Faster logic for dead control flow - Typescript types ### [`v5.99.5`](https://github.com/webpack/webpack/releases/tag/v5.99.5) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.4...v5.99.5) ##### Fixes - Control dead flow for labeled and blockless statements ### [`v5.99.4`](https://github.com/webpack/webpack/releases/tag/v5.99.4) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.3...v5.99.4) ##### Fixes - Fixed terminated state for `if`/`else` ### [`v5.99.3`](https://github.com/webpack/webpack/releases/tag/v5.99.3) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.2...v5.99.3) ##### Fixes - Fixed dead control flow with deep nested `if`/`else` ### [`v5.99.2`](https://github.com/webpack/webpack/releases/tag/v5.99.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.1...v5.99.2) ##### Fixes - Dead control flow for exotic cases ### [`v5.99.1`](https://github.com/webpack/webpack/releases/tag/v5.99.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.99.0...v5.99.1) ##### Fixes - Dead control flow for many cases ### [`v5.99.0`](https://github.com/webpack/webpack/releases/tag/v5.99.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.98.0...v5.99.0) ##### Fixes - Fixed a lot of types - Fixed runtime error when using asset module as entrypoint and runtimeChunk - JSON generator now preserves `__proto__` property - Fixed when entry module isn't executed when targeting webworker with a runtime chunk - Do not duplicate modules with import attributes and reexport - The `module` and `module` ESM libraries have been union and code generation has been improved - Use a valid output path for errored asset modules - Remove BOM from JavaScript and CSS files when loader was not used - Create export for externals for module/modern-module library - Export unprovided variables for `commonjs-static` library - Forward semicolons from `meta.webpackAST` - Use `xxhash64` for `cache.hashAlgorithm` when `experiments.futureDefaults` enabled - \[CSS] Fixed profiling plugin for CSS - \[CSS] Avoid extra module.export output for CSS module ##### Features - Add dead control flow check - Handle `new Worker(import.meta.url)` and `new Worker(new URL(import.meta.url))` syntax - Added ability to generate custom error content for generators ##### Performance Improvements - Fixed excessive calls of getAllReferences - Optimize loc for monomorphic inline caching ##### Chores - Switch on `strict` types for `typescript` ### [`v5.98.0`](https://github.com/webpack/webpack/releases/tag/v5.98.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.97.1...v5.98.0) ##### Fixes - Avoid the deprecation message [#&#8203;19062](https://github.com/webpack/webpack/issues/19062) by [@&#8203;alexander-akait](https://github.com/alexander-akait) - Should not escape CSS local ident in JS [#&#8203;19060](https://github.com/webpack/webpack/issues/19060) by [@&#8203;JSerFeng](https://github.com/JSerFeng) - MF parse range not compatible with Safari [#&#8203;19083](https://github.com/webpack/webpack/issues/19083) by [@&#8203;alexander-akait](https://github.com/alexander-akait) - Preserve `filenameTemplate` in new split chunk [#&#8203;19104](https://github.com/webpack/webpack/issues/19104) by [@&#8203;henryqdineen](https://github.com/henryqdineen) - Use module IDs for final render order [#&#8203;19184](https://github.com/webpack/webpack/issues/19184) by [@&#8203;dmichon-msft](https://github.com/dmichon-msft) - Strip `blob:` protocol when public path is `auto` [#&#8203;19199](https://github.com/webpack/webpack/issues/19199) by [@&#8203;alexander-akait](https://github.com/alexander-akait) - Respect `output.charset` everywhere [#&#8203;19202](https://github.com/webpack/webpack/issues/19202) by [@&#8203;alexander-akait](https://github.com/alexander-akait) - Node async WASM loader generation [#&#8203;19210](https://github.com/webpack/webpack/issues/19210) by [@&#8203;ashi009](https://github.com/ashi009) - Correct `BuildInfo` and `BuildMeta` type definitions [#&#8203;19200](https://github.com/webpack/webpack/issues/19200) by [@&#8203;inottn](https://github.com/inottn) ##### Performance Improvements - Improve `FlagDependencyExportsPlugin` for large JSON by depth [#&#8203;19058](https://github.com/webpack/webpack/issues/19058) by [@&#8203;hai-x](https://github.com/hai-x) - Optimize assign-depths [#&#8203;19193](https://github.com/webpack/webpack/issues/19193) by [@&#8203;dmichon-msft](https://github.com/dmichon-msft) - Use `startsWith` for matching instead of converting the string to a regex [#&#8203;19207](https://github.com/webpack/webpack/issues/19207) by [@&#8203;inottn](https://github.com/inottn) ##### Chores - Bump `nanoid` from 3.3.7 to 3.3.8 [#&#8203;19063](https://github.com/webpack/webpack/issues/19063) by [@&#8203;dependabot](https://github.com/dependabot) - Fixed incorrect typecast in `DefaultStatsFactoryPlugin` [#&#8203;19156](https://github.com/webpack/webpack/issues/19156) by [@&#8203;Andarist](https://github.com/Andarist) - Improved `readme.md` by adding video links for understanding webpack [#&#8203;19101](https://github.com/webpack/webpack/issues/19101) by [@&#8203;Vansh5632](https://github.com/Vansh5632) - Typo fix [#&#8203;19205](https://github.com/webpack/webpack/issues/19205) by [@&#8203;hai-x](https://github.com/hai-x) - Adopt the new webpack governance model [#&#8203;18804](https://github.com/webpack/webpack/issues/18804) by [@&#8203;ovflowd](https://github.com/ovflowd) ##### Features - Implement `/* webpackIgnore: true */` for `require.resolve` [#&#8203;19201](https://github.com/webpack/webpack/issues/19201) by [@&#8203;alexander-akait](https://github.com/alexander-akait) ##### Continuous Integration - CI fix [#&#8203;19196](https://github.com/webpack/webpack/issues/19196) by [@&#8203;alexander-akait](https://github.com/alexander-akait) #### New Contributors - [@&#8203;Andarist](https://github.com/Andarist) made their first contribution in [#&#8203;19156](https://github.com/webpack/webpack/pull/19156) - [@&#8203;Vansh5632](https://github.com/Vansh5632) made their first contribution in [#&#8203;19101](https://github.com/webpack/webpack/pull/19101) - [@&#8203;ashi009](https://github.com/ashi009) made their first contribution in [#&#8203;19210](https://github.com/webpack/webpack/pull/19210) - [@&#8203;ovflowd](https://github.com/ovflowd) made their first contribution in [#&#8203;18804](https://github.com/webpack/webpack/pull/18804) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.97.1...v5.98.0> ### [`v5.97.1`](https://github.com/webpack/webpack/releases/tag/v5.97.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.97.0...v5.97.1) #### Bug Fixes - Performance regression - Sub define key should't be renamed when it's a defined variable ### [`v5.97.0`](https://github.com/webpack/webpack/releases/tag/v5.97.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.96.1...v5.97.0) #### Bug Fixes - Don't crash with filesystem cache and unknown scheme - Generate a valid code when `output.iife` is `true` and output.library.type is `umd` - Fixed conflict variable name with concatenate modules and runtime code - Merge duplicate chunks before - Collisions in ESM library - Use recursive search for versions of shared dependencies - **\[WASM]** Don't crash WebAssembly with Reference Types (sync and async) - **\[WASM]** Fixed wasm loading for sync and async webassembly - **\[CSS]** Don't add `[uniqueName]` to `localIdentName` when it is empty - **\[CSS]** Parsing strings on Windows - **\[CSS]** Fixed CSS local escaping #### New Features - Added support for injecting debug IDs - Export the `MergeDuplicateChunks` plugin - Added universal loading for JS chunks and JS worker chunks (only ES modules) - **\[WASM]** Added universal loading for WebAssembly chunks (only for async WebAssembly) - **\[CSS]** Allow initial CSS chunks to be placed anywhere - **the `output.cssHeadDataCompression` option was deleted** - **\[CSS]** Added universal loading for CSS chunks - **\[CSS]** Parse ICSS `@value` at-rules in CSS modules - **\[CSS]** Parse ICSS `:import` rules in CSS modules - **\[CSS]** Added the `url` and `import` options for CSS - **\[CSS]** Allow to import custom properties in CSS modules #### Performance - Faster Queue implementation, also fixed queue iterator state in dequeue method to ensure correct behavior after item removal ### [`v5.96.1`](https://github.com/webpack/webpack/releases/tag/v5.96.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.96.0...v5.96.1) #### Bug Fixes - **\[Types]** Add `@types/eslint-scope` to dependencieS - **\[Types]** Fixed regression in `validate` ### [`v5.96.0`](https://github.com/webpack/webpack/releases/tag/v5.96.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.95.0...v5.96.0) #### Bug Fixes - Fixed Module Federation should track all referenced chunks - Handle Data URI without base64 word - HotUpdateChunk have correct runtime when modified with new runtime - Order of chunks ids in generated chunk code - No extra Javascript chunks when using asset module as an entrypoint - Use optimistically logic for `output.environment.dynamicImport` to determine chunk format when no browserslist or target - Collision with global variables for `optimization.avoidEntryIife` - Avoid through variables in inlined module - Allow chunk template strings in `output.devtoolNamespace` - No extra runtime for get javascript/css chunk filename - No extra runtime for prefetch and preload in JS runtime when it was unsed in CSS - Avoid cache invalidation using ProgressPlugin - Increase parallelism when using `importModule` on the execution stage - Correctly parsing string in `export` and `import` - Typescript types - **\[CSS]** `css/auto` considers a module depending on its filename as `css` (pure CSS) or `css/local`, before it was `css/global` and `css/local` - **\[CSS]** Always interpolate classes even if they are not involved in export - **\[CSS]** No extra runtime in Javascript runtime chunks for asset modules used in CSS - **\[CSS]** No extra runtime in Javascript runtime chunks for external asset modules used in CSS - **\[CSS]** No extra runtime for the `node` target - **\[CSS]** Fixed `url()`s and `@import` parsing - **\[CSS]** Fixed - emit a warning on broken :local and :global #### New Features - Export CSS and ESM runtime modules - Single Runtime Chunk and Federation eager module hoisting - **\[CSS]** Support `/* webpackIgnore: true */` for CSS files - **\[CSS]** Support `src()` support - **\[CSS]** CSS nesting in CSS modules ### [`v5.95.0`](https://github.com/webpack/webpack/releases/tag/v5.95.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.94.0...v5.95.0) #### Bug Fixes - Fixed hanging when attempting to read a symlink-like file that it can't read - Handle `default` for import context element dependency - Merge duplicate chunks call after split chunks - Generate correctly code for dynamically importing the same file twice and destructuring - Use content hash as \[base] and \[name] for extracted DataURI's - Distinguish `module` and `import` in `module-import` for externals `import`'s - \[Types] Make `EnvironmentPlugin` default values types less strict - \[Types] Typescript 5.6 compatibility #### New Features - Add new `optimization.avoidEntryIife` option (`true` by default for the `production` mode) - Pass output.hash\* options to loader context #### Performance - Avoid unneeded re-visit in build chunk graph ### [`v5.94.0`](https://github.com/webpack/webpack/releases/tag/v5.94.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.93.0...v5.94.0) #### Bug Fixes - Added runtime condition for harmony reexport checked - Handle properly `data`/`http`/`https` protocols in source maps - Make `bigint` optimistic when browserslist not found - Move [@&#8203;types/eslint-scope](https://github.com/types/eslint-scope) to dev deps - Related in asset stats is now always an array when no related found - Handle ASI for export declarations - Mangle destruction incorrect with export named default properly - Fixed unexpected asi generation with sequence expression - Fixed a lot of types #### New Features - Added new external type "module-import" - Support `webpackIgnore` for `new URL()` construction - \[CSS] `@import` pathinfo support #### Security - Fixed DOM clobbering in auto public path ### [`v5.93.0`](https://github.com/webpack/webpack/releases/tag/v5.93.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.92.1...v5.93.0) #### Bug Fixes - Generate correct relative path to runtime chunks - Makes `DefinePlugin` quieter under default log level - Fixed mangle destructuring default in namespace import - Fixed consumption of eager shared modules for module federation - Strip slash for pretty regexp - Calculate correct contenthash for CSS generator options #### New Features - Added the `binary` generator option for asset modules to explicitly keep source maps produced by loaders - Added the `modern-module` library value for tree shakable output - Added the `overrideStrict` option to override strict or non-strict mode for javascript modules ### [`v5.92.1`](https://github.com/webpack/webpack/releases/tag/v5.92.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.92.0...v5.92.1) #### Bug Fixes - Doesn't crash with an error when the css experiment is enabled and contenthash is used ### [`v5.92.0`](https://github.com/webpack/webpack/releases/tag/v5.92.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.91.0...v5.92.0) #### Bug Fixes - Correct tidle range's comutation for module federation - Consider runtime for pure expression dependency update hash - Return value in the `subtractRuntime` function for runtime logic - Fixed failed to resolve promise when eager import a dynamic cjs - Avoid generation extra code for external modules when remapping is not required - The `css/global` type now handles the exports name - Avoid hashing for `@keyframe` and `@property` at-rules in `css/global` type - Fixed mangle with destructuring for JSON modules - The `stats.hasWarnings()` method now respects the `ignoreWarnings` option - Fixed `ArrayQueue` iterator - Correct behavior of `__webpack_exports_info__.a.b.canMangle` - Changed to the correct plugin name for the `CommonJsChunkFormatPlugin` plugin - Set the `chunkLoading` option to the `import` when environment is unknown and output is module - Fixed when runtimeChunk has no exports when `module` chunkFormat used - \[CSS] Fixed parsing minimized CSS import - \[CSS] URLs in CSS files now have correct public path - \[CSS] The `css` module type should not allow parser to switch mode - \[Types] Improved context module types #### New Features - Added platform target properties to compiler - Improved multi compiler cache location and validating it - Support `import attributes` spec (`with` keyword) - Support `node:` prefix for Node.js core modules in runtime code - Support prefetch/preload for module chunk format - Support "..." in the `importsFields` option for resolver - Root module is less prone to be wrapped in IIFE - Export `InitFragment` class for plugins - Export `compileBooleanMatcher` util for plugins - Export `InputFileSystem` and `OutputFileSystem` types - \[CSS] Support the `esModule` generator option for CSS modules - \[CSS] Support CSS when chunk format is module ### [`v5.91.0`](https://github.com/webpack/webpack/releases/tag/v5.91.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.90.3...v5.91.0) #### Bug Fixes - Deserializer for ignored modules doesn't crash - Allow the `unsafeCache` option to be a proxy object - Normalize the `snapshot.unmanagedPaths` option - Fixed `fs` types - Fixed resolve's plugins types - Fixed wrongly calculate postOrderIndex - Fixed watching types - Output import attrbiutes/import assertions for external JS imports - Throw an error when DllPlugin needs to generate multiple manifest files, but the path is the same - \[CSS] Output `layer`/`supports`/`media` for external CSS imports #### New Features - Allow to customize the stage of BannerPlugin - \[CSS] Support CSS exports convention - \[CSS] support CSS local ident name - \[CSS] Support `__webpack_nonce__` for CSS chunks - \[CSS] Support `fetchPriority` for CSS chunks - \[CSS] Allow to use LZW to compress css head meta (enabled in the `production` mode by default) - \[CSS] Support prefetch/preload for CSS chunks ### [`v5.90.3`](https://github.com/webpack/webpack/releases/tag/v5.90.3) [Compare Source](https://github.com/webpack/webpack/compare/v5.90.2...v5.90.3) #### Bug Fixes - don't mangle when destructuring a reexport - types for `Stats.toJson()` and `Stats.toString()` - many internal types - \[CSS] clean up export css local vars #### Perf - simplify and optimize chunk graph creation ### [`v5.90.2`](https://github.com/webpack/webpack/releases/tag/v5.90.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.90.1...v5.90.2) #### Bug Fixes - use `Math.imul` in `fnv1a32` to avoid loss of precision, directly hash UTF16 values - the `setStatus()` of the HMR module should not return an array, which may cause infinite recursion - `__webpack_exports_info__.xxx.canMangle` shouldn't always same as default - mangle export with destructuring - use new runtime to reconsider skipped connections `activeState` - make dynamic import optional in `try/catch` - improve auto publicPath detection #### Dependencies & Maintenance - improve CI setup and include Node.js\@&#8203;21 ### [`v5.90.1`](https://github.com/webpack/webpack/releases/tag/v5.90.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.90.0...v5.90.1) #### Bug Fixes - set `unmanagedPaths` in defaults - correct `preOrderIndex` and `postOrderIndex` - add fallback for MIME mismatch error in async wasm loading - browsers versions of ECMA features #### Performance - optimize `compareStringsNumeric` - optimize `numberHash` using 32-bit FNV1a for small ranges, 64-bit for larger - reuse VM context across webpack magic comments ### [`v5.90.0`](https://github.com/webpack/webpack/releases/tag/v5.90.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.89.0...v5.90.0) #### Bug Fixes - Fixed inner graph for classes - Optimized `RemoveParentModulesPlugin` via bigint arithmetic - Fixed worklet detection in production mode - Fixed an error for cyclic importModule - Fixed types for `Server` and `Dirent` - Added the `fetchPriority` to hmr runtime's `ensureChunk` function - Don't warn about dynamic import for build dependencies - External module generation respects the `output.environment.arrowFunction` option - Fixed consumimng shared runtime module logic - Fixed a runtime logic of multiple chunks - Fixed destructing assignment of dynamic import json file - Passing errors array for a module hash - Added `/*#__PURE__*/` to generated `JSON.parse()` - Generated a library manifest after clean plugin - Fixed non `amd` externals and `amd` library - Fixed a bug in `SideEffectsFlagPlugin` with namespace re-exports - Fixed an error message for condition `or` - The `strictModuleErrorHandling` is now working - Clean up child compilation chunk graph to avoid memory leak - \[CSS] - Fixed CSS import prefer relative resolution - \[CSS] - Fixed CSS runtime chunk loading error message #### New Features - Allow to set `false` for dev server in `webpack.config.js` - Added a warning for async external when not supported - Added a warning for async module when not supported - Added the `node-module` option for the `node.__filename/__dirname` and enable it by default for ESM target - Added the `snapshot.unmanagedPaths` option - Exposed the `MultiCompilerOptions` type - \[CSS] - Added CSS parser options to enable/disable named exports - \[CSS] - Moved CSS the `exportsOnly` option to CSS generator options #### Dependencies & Maintenance - use node.js LTS version for lint - bump actions/cache from 3 to 4 - bump prettier from 3.2.1 to 3.2.3 - bump assemblyscript - bump actions/checkout from 3 to 4 **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.89.0...v5.90.0> ### [`v5.89.0`](https://github.com/webpack/webpack/releases/tag/v5.89.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.88.2...v5.89.0) #### New Features - Make CommonJS import preserve chained expressions by [@&#8203;bworline](https://github.com/bworline) in [#&#8203;17718](https://github.com/webpack/webpack/pull/17718) #### Dependencies & Maintenance - chore(deps-dev): bump [@&#8203;types/node](https://github.com/types/node) from 20.3.1 to 20.4.8 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17568](https://github.com/webpack/webpack/pull/17568) - docs: add example for stats detailed output by [@&#8203;ersachin3112](https://github.com/ersachin3112) in [#&#8203;17420](https://github.com/webpack/webpack/pull/17420) - docs: add example for stats normal output by [@&#8203;ersachin3112](https://github.com/ersachin3112) in [#&#8203;17426](https://github.com/webpack/webpack/pull/17426) - chore(deps-dev): bump core-js from 3.31.0 to 3.32.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17539](https://github.com/webpack/webpack/pull/17539) - chore(deps-dev): bump pretty-format from 29.5.0 to 29.6.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17536](https://github.com/webpack/webpack/pull/17536) - chore(deps-dev): bump [@&#8203;types/node](https://github.com/types/node) from 20.4.8 to 20.4.9 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17583](https://github.com/webpack/webpack/pull/17583) - chore(deps-dev): bump less from 4.1.3 to 4.2.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17580](https://github.com/webpack/webpack/pull/17580) - chore(deps): bump semver from 5.7.1 to 5.7.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17483](https://github.com/webpack/webpack/pull/17483) - chore(deps-dev): bump simple-git from 3.19.0 to 3.19.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17427](https://github.com/webpack/webpack/pull/17427) - chore(deps-dev): bump [@&#8203;types/node](https://github.com/types/node) from 20.4.9 to 20.6.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17666](https://github.com/webpack/webpack/pull/17666) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.88.2...v5.89.0> ### [`v5.88.2`](https://github.com/webpack/webpack/releases/tag/v5.88.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.88.1...v5.88.2) #### Bug Fixes - Fixed a bug where unused identifiers should retain names when using css modules by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17444](https://github.com/webpack/webpack/pull/17444) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.88.1...v5.88.2> ### [`v5.88.1`](https://github.com/webpack/webpack/releases/tag/v5.88.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.88.0...v5.88.1) #### Developer Experience - Significantly improve TypeScript coverage for Library Plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17414](https://github.com/webpack/webpack/pull/17414) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.88.0...v5.88.1> ### [`v5.88.0`](https://github.com/webpack/webpack/releases/tag/v5.88.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.87.0...v5.88.0) #### New Features - \[CSS] - Use `css/auto` as the default css mode by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17399](https://github.com/webpack/webpack/pull/17399) #### Bug Fixes - Fix bugs related to require.context and layer by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17388](https://github.com/webpack/webpack/pull/17388) - Fix bug in runtime for CSS loading by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17400](https://github.com/webpack/webpack/pull/17400) - Correct indirect call for tagged template expressions using correct this context by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17397](https://github.com/webpack/webpack/pull/17397) - Update environment support for KaiOS browser by [@&#8203;steverep](https://github.com/steverep) in [#&#8203;17395](https://github.com/webpack/webpack/pull/17395) - Fix async module runtime code for running top-level-await by [@&#8203;ahabhgk](https://github.com/ahabhgk) in [#&#8203;17393](https://github.com/webpack/webpack/pull/17393) #### Developer Experience - Add example for stats minimal output by [@&#8203;ersachin3112](https://github.com/ersachin3112) in [#&#8203;17406](https://github.com/webpack/webpack/pull/17406) - Significantly improve type coverage for Dependency, Runtime, Template classes by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17394](https://github.com/webpack/webpack/pull/17394) #### Dependencies & Maintenance - Bump browserslist from 4.21.8 to 4.21.9 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17389](https://github.com/webpack/webpack/pull/17389) - Bump acorn from 8.8.2 to 8.9.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17402](https://github.com/webpack/webpack/pull/17402) - Bump eslint from 8.42.0 to 8.43.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17401](https://github.com/webpack/webpack/pull/17401) - Bump eslint-plugin-jest from 27.2.1 to 27.2.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17407](https://github.com/webpack/webpack/pull/17407) #### New Contributors - [@&#8203;steverep](https://github.com/steverep) made their first contribution in [#&#8203;17395](https://github.com/webpack/webpack/pull/17395) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.87.0...v5.88.0> ### [`v5.87.0`](https://github.com/webpack/webpack/releases/tag/v5.87.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.86.0...v5.87.0) #### New Features - Implement `fetchPriority` feature as parser option and magic comment by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17249](https://github.com/webpack/webpack/pull/17249) - \[CSS] - Introduce 'css/auto' as a css module type by [@&#8203;ahabhgk](https://github.com/ahabhgk) in [#&#8203;16577](https://github.com/webpack/webpack/pull/16577) - \[CSS] - Style-specific fields now automatically resolve in package.json by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17346](https://github.com/webpack/webpack/pull/17346) - webpack configuration API now accepts "falsy values" loaders and plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17339](https://github.com/webpack/webpack/pull/17339) #### Bug Fixes - Fix codecov badge in readme by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17353](https://github.com/webpack/webpack/pull/17353) #### Developer Experience - Add link to svelte loader for webpack by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17369](https://github.com/webpack/webpack/pull/17369) - Increase parser API types in internal plugins across dependency plugins [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17365](https://github.com/webpack/webpack/pull/17365) #### Dependencies & Maintenance - Bump memfs from 3.5.2 to 3.5.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17347](https://github.com/webpack/webpack/pull/17347) - Bump webpack-cli from 5.1.3 to 5.1.4 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17349](https://github.com/webpack/webpack/pull/17349) - Bump es-module-lexer from 1.2.1 to 1.3.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17362](https://github.com/webpack/webpack/pull/17362) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.2.5 to 20.3.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17361](https://github.com/webpack/webpack/pull/17361) - Bump core-js from 3.30.2 to 3.31.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17360](https://github.com/webpack/webpack/pull/17360) - Bump browserslist from 4.21.6 to 4.21.8 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17367](https://github.com/webpack/webpack/pull/17367) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.3.0 to 20.3.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17366](https://github.com/webpack/webpack/pull/17366) #### New Contributors [@&#8203;aboktor](https://github.com/aboktor) made their first contribution in [#&#8203;16991](https://github.com/webpack/webpack/issues/16991) [#&#8203;16989](https://github.com/webpack/webpack/issues/16989) [@&#8203;silverwind](https://github.com/silverwind) made their first contribution in [#&#8203;17339](https://github.com/webpack/webpack/issues/17339) via [#&#8203;17329](https://github.com/webpack/webpack/issues/17329) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.86.0...v5.87.0> ### [`v5.86.0`](https://github.com/webpack/webpack/releases/tag/v5.86.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.85.1...v5.86.0) #### New Features - Improved cache size performance via better handling of serialization for errors and bigints by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17282](https://github.com/webpack/webpack/pull/17282) - Introduce an export default handler function option for `ProgressPlugin` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17312](https://github.com/webpack/webpack/pull/17312) - Support passing `RegExp` to `splitChunks.chunks` by [@&#8203;hyf0](https://github.com/hyf0) in [#&#8203;17332](https://github.com/webpack/webpack/pull/17332) #### Bug Fixes - Fix layer capabilities for `ContextModule` types by [@&#8203;huozhi](https://github.com/huozhi) in [#&#8203;17310](https://github.com/webpack/webpack/pull/17310) - Fix compatibility of `__non_webpack_require__` with ES modules by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17308](https://github.com/webpack/webpack/pull/17308) - Improve type coverage `Chunk`, `ChunkGroup`, and other plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;1731](https://github.com/webpack/webpack/pull/1731) - Do not add `js` extension for eval source maps when extension is not resolvable by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17331](https://github.com/webpack/webpack/pull/17331) #### Developer Experience - Improve type coverage for Json Module type and lazy load json-assertions package by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17301](https://github.com/webpack/webpack/pull/17301) #### Dependencies & Maintenance - Bump memfs from 3.5.1 to 3.5.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17315](https://github.com/webpack/webpack/pull/17315) - Bump webpack-cli from 5.1.1 to 5.1.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17314](https://github.com/webpack/webpack/pull/17314) - Bump eslint from 8.41.0 to 8.42.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17313](https://github.com/webpack/webpack/pull/17313) #### New Contributors - [@&#8203;huozhi](https://github.com/huozhi) made their first contribution in [#&#8203;17310](https://github.com/webpack/webpack/pull/17310) - [@&#8203;hyf0](https://github.com/hyf0) made their first contribution in [#&#8203;17332](https://github.com/webpack/webpack/pull/17332) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.85.1...v5.86.0> ### [`v5.85.1`](https://github.com/webpack/webpack/releases/tag/v5.85.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.85.0...v5.85.1) #### Bug Fixes - Fix bug in handling barrel imports ([#&#8203;17305](https://github.com/webpack/webpack/issues/17305)) by [@&#8203;bworline](https://github.com/bworline) in [#&#8203;17307](https://github.com/webpack/webpack/pull/17307) - ***NOTE**: An internal API `BasicEvaluatedExpression.getMemberRangeStarts` has been changed to `BasicEvaluatedExpression.getMemberRanges`, please see type definition changes and the pull request for more information.* #### Dependencies & Maintenance - Bump [@&#8203;types/jest](https://github.com/types/jest) from 29.5.1 to 29.5.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17297](https://github.com/webpack/webpack/pull/17297) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.85.0...v5.85.1> ### [`v5.85.0`](https://github.com/webpack/webpack/releases/tag/v5.85.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.84.1...v5.85.0) #### New Features - Add `readonly` cache mode by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;15470](https://github.com/webpack/webpack/pull/15470) - Normalize property accessors for esm namespaces and chained member/call expressions by [@&#8203;bworline](https://github.com/bworline) in [#&#8203;17203](https://github.com/webpack/webpack/pull/17203) - Support `environment` in loader context by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17281](https://github.com/webpack/webpack/pull/17281) - Introduce a new syntax for `addModule()` support in worklets - `*context.audioWorklet.addModule()` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17212](https://github.com/webpack/webpack/pull/17212) #### Bug Fixes - Fix type regression with unknown module type strings by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17266](https://github.com/webpack/webpack/pull/17266) #### Developer Experience - Use global runtime constants for webpack exports by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17270](https://github.com/webpack/webpack/pull/17270) - Add strict mode type coverage for WASM and Runtime code by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17267](https://github.com/webpack/webpack/pull/17267) - Add strict mode type coverage for runtime modules and runtime plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17261](https://github.com/webpack/webpack/pull/17261) - Add types for JSON & Asset Modules including their interfacing plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17262](https://github.com/webpack/webpack/pull/17262) - Add type coverage for Module subclasses and plugins by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17272](https://github.com/webpack/webpack/pull/17272) #### Dependencies & Maintenance - Use GitHub Discussions instead of Gitter in issue templates by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;17293](https://github.com/webpack/webpack/pull/17293) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.2.3 to 20.2.4 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17269](https://github.com/webpack/webpack/pull/17269) - Bump browserslist from 4.21.5 to 4.21.6 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17275](https://github.com/webpack/webpack/pull/17275) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.2.4 to 20.2.5 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17276](https://github.com/webpack/webpack/pull/17276) - Bump [@&#8203;babel/core](https://github.com/babel/core) from 7.21.8 to 7.22.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17278](https://github.com/webpack/webpack/pull/17278) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.84.1...v5.85.0> ### [`v5.84.1`](https://github.com/webpack/webpack/releases/tag/v5.84.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.84.0...v5.84.1) #### Bug Fixes - Fix regression in inner graph for reserved identifiers by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17265](https://github.com/webpack/webpack/pull/17265) #### Dependencies & Maintenance - Bump [@&#8203;types/jest](https://github.com/types/jest) from 29.5.0 to 29.5.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17027](https://github.com/webpack/webpack/pull/17027) - Bump simple-git from 3.18.0 to 3.19.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17263](https://github.com/webpack/webpack/pull/17263) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.84.0...v5.84.1> ### [`v5.84.0`](https://github.com/webpack/webpack/releases/tag/v5.84.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.83.1...v5.84.0) #### New Features - SourceMapDevToolPlugin now supports `append` option as a function by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;17252](https://github.com/webpack/webpack/pull/17252) #### Bug Fixes - Fix multiple bugs referencing class names when shadowed by import name in properties and methods by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17233](https://github.com/webpack/webpack/pull/17233) - Allow DefinePlugin shorthand property by [@&#8203;shamoilarsi](https://github.com/shamoilarsi) in [#&#8203;17231](https://github.com/webpack/webpack/pull/17231) - \[CSS] - Fix edge cases in parsing `@import` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17229](https://github.com/webpack/webpack/pull/17229) #### Developer Experience - Increase type coverage for serialization classes by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17243](https://github.com/webpack/webpack/pull/17243) - Increase type coverage for `JavascriptParser` and `ModuleDependency` subclasses by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17236](https://github.com/webpack/webpack/pull/17236) - Increase type coverage to `strict`-mode quality for Configuration/Normalization objects by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17247](https://github.com/webpack/webpack/pull/17247) - Refactor duplicate strings by replacing them with constant for **webpack_require** instead of string literal by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17228](https://github.com/webpack/webpack/pull/17228) - Add test case for `with { type: "json" }` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17230](https://github.com/webpack/webpack/pull/17230) - Add test case for destructuring by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17248](https://github.com/webpack/webpack/pull/17248) #### Dependencies & Maintenance - Add GitHub discussions badge in README by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;17251](https://github.com/webpack/webpack/pull/17251) - Bump enhanced-resolve to 5.14.1 by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17257](https://github.com/webpack/webpack/pull/17257) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.1.7 to 20.2.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17219](https://github.com/webpack/webpack/pull/17219) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.2.0 to 20.2.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17226](https://github.com/webpack/webpack/pull/17226) - Bump webpack-cli from 5.1.0 to 5.1.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17164](https://github.com/webpack/webpack/pull/17164) - Bump eslint from 8.39.0 to 8.40.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17148](https://github.com/webpack/webpack/pull/17148) - Bump [@&#8203;babel/core](https://github.com/babel/core) from 7.21.4 to 7.21.8 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17126](https://github.com/webpack/webpack/pull/17126) - Bump [@&#8203;types/node](https://github.com/types/node) from 20.2.1 to 20.2.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17238](https://github.com/webpack/webpack/pull/17238) - Bump eslint from 8.40.0 to 8.41.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17237](https://github.com/webpack/webpack/pull/17237) #### New Contributors - [@&#8203;shamoilarsi](https://github.com/shamoilarsi) made their first contribution in [#&#8203;17231](https://github.com/webpack/webpack/pull/17231) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.83.1...v5.84.0> ### [`v5.83.1`](https://github.com/webpack/webpack/releases/tag/v5.83.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.83.0...v5.83.1) #### Bug Fixes - Fix regression in import/export normailization effecting mini-css-extract-plugin by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17214](https://github.com/webpack/webpack/pull/17214) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.83.0...v5.83.1> ### [`v5.83.0`](https://github.com/webpack/webpack/releases/tag/v5.83.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.82.1...v5.83.0) #### New Features - Normalize property access for imports and exports by [@&#8203;bworline](https://github.com/bworline) in [#&#8203;17137](https://github.com/webpack/webpack/pull/17137) - Top Level Await is now enabled by default by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17192](https://github.com/webpack/webpack/pull/17192) #### Bug Fixes - Correct `chunkgroup.groupsIterable` return type by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17196](https://github.com/webpack/webpack/pull/17196) - Fix bug in Rule Matcher type by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17207](https://github.com/webpack/webpack/pull/17207) - Fixed apply event callback and optimizing callback event type by [@&#8203;nuintun](https://github.com/nuintun) in [#&#8203;16094](https://github.com/webpack/webpack/pull/16094) - Fix types in hot module replacement APIs by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17193](https://github.com/webpack/webpack/pull/17193) #### Developer Experience - Expose `ChunkGroup` to type definitions by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17201](https://github.com/webpack/webpack/pull/17201) - Add `NormalModuleFactory`'s `ResolveData` type to public interface by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17195](https://github.com/webpack/webpack/pull/17195) - Document `compilation.afterChunks` hook by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17202](https://github.com/webpack/webpack/pull/17202) #### Dependencies & Maintenance - Bump [@&#8203;webassemblyjs/wasm-edit](https://github.com/webassemblyjs/wasm-edit) from 1.11.5 to 1.11.6 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17168](https://github.com/webpack/webpack/pull/17168) - Bump wast-loader from 1.11.5 to 1.11.6 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17163](https://github.com/webpack/webpack/pull/17163) - Bump yarn-deduplicate from 6.0.1 to 6.0.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17184](https://github.com/webpack/webpack/pull/17184) - Fix command by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17154](https://github.com/webpack/webpack/pull/17154) - Bump [@&#8203;types/node](https://github.com/types/node) from 18.16.3 to 20.1.7 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17205](https://github.com/webpack/webpack/pull/17205) #### New Contributors - [@&#8203;bworline](https://github.com/bworline) made their first contribution in [#&#8203;17137](https://github.com/webpack/webpack/pull/17137) - [@&#8203;nuintun](https://github.com/nuintun) made their first contribution in [#&#8203;16094](https://github.com/webpack/webpack/pull/16094) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.82.1...v5.83.0> ### [`v5.82.1`](https://github.com/webpack/webpack/releases/tag/v5.82.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.82.0...v5.82.1) #### Bug Fixes - \[CSS] - Support nesting in CSS modules and bug fixes by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17133](https://github.com/webpack/webpack/pull/17133) - \[CSS] - Fix crash with `importModule` when CSS enabled by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17140](https://github.com/webpack/webpack/pull/17140) - Fix bug where `output.hashFunction` was failing to generate debug hash by [@&#8203;ahabhgk](https://github.com/ahabhgk) in [#&#8203;16950](https://github.com/webpack/webpack/pull/16950) - Reduce the amount of generated code for chunk loading by [@&#8203;lvivski](https://github.com/lvivski) in [#&#8203;17151](https://github.com/webpack/webpack/pull/17151) - Use module preload for ESM module output by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17143](https://github.com/webpack/webpack/pull/17143) #### Developer Experience - Improve module type strictness for Module.prototype.type expand ModuleTypeConstants by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17136](https://github.com/webpack/webpack/pull/17136) #### Dependencies & Maintenance - Update package.json description by [@&#8203;JeraldVin](https://github.com/JeraldVin) in [#&#8203;17145](https://github.com/webpack/webpack/pull/17145) - Bump webpack-cli from 5.0.2 to 5.1.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17146](https://github.com/webpack/webpack/pull/17146) - Bump core-js from 3.30.1 to 3.30.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17149](https://github.com/webpack/webpack/pull/17149) - Bump enhanced-resolve to v5.14.0 by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;17160](https://github.com/webpack/webpack/pull/17160) #### New Contributors - [@&#8203;JeraldVin](https://github.com/JeraldVin) made their first contribution in [#&#8203;17145](https://github.com/webpack/webpack/pull/17145) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.82.0...v5.82.1> ### [`v5.82.0`](https://github.com/webpack/webpack/releases/tag/v5.82.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.81.0...v5.82.0) #### New Features - \[CSS] - Add URL dependencies support to consume shared module via module federation by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16945](https://github.com/webpack/webpack/pull/16945) - Allow webpack-cli to be in ESM by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17088](https://github.com/webpack/webpack/pull/17088) - Allow specifying "onPolicyCreationFailure" mode for trusted types by [@&#8203;Zlatkovsky](https://github.com/Zlatkovsky) in [#&#8203;16990](https://github.com/webpack/webpack/pull/16990) #### Bug Fixes - \[CSS] - Respect `media`/`supports`/`layer` from parent CSS module by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17115](https://github.com/webpack/webpack/pull/17115) - \[CSS] - Add warning & support for any [@&#8203;import](https://github.com/import) rules must precede all other rules by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17118](https://github.com/webpack/webpack/pull/17118) - \[CSS] - Support handling `#hash` URL as external (similar to Parcel) by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17116](https://github.com/webpack/webpack/pull/17116) - Optimize numberHash.js performance by removing inner loops by [@&#8203;alexkuz](https://github.com/alexkuz) in [#&#8203;17074](https://github.com/webpack/webpack/pull/17074) - Improve template string comparison algorithm by [@&#8203;An0nie](https://github.com/An0nie) in [#&#8203;17079](https://github.com/webpack/webpack/pull/17079) #### Tests & Contributor Experience - \[CSS] - Increase imports external test coverage by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17089](https://github.com/webpack/webpack/pull/17089) - Improve PR reliability via ignoring unstable coverage by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17106](https://github.com/webpack/webpack/pull/17106) - Update webpack types to support extends property in webpack (for webpack-cli) by [@&#8203;burhanuday](https://github.com/burhanuday) in [#&#8203;17113](https://github.com/webpack/webpack/pull/17113) #### Developer Experience - Increase type coverage and documentation for `StringXor` class. by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17070](https://github.com/webpack/webpack/pull/17070) - Increase type coverage & docs for `numberHash` by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17072](https://github.com/webpack/webpack/pull/17072) - Increase type coverage & docs for `JavascriptParser` by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17094](https://github.com/webpack/webpack/pull/17094) - Increase type coverage & docs for `BasicEvaluatedExpression` by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17096](https://github.com/webpack/webpack/pull/17096) - Increase type coverage for CSS module type by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17097](https://github.com/webpack/webpack/pull/17097) - Increase type coverage for JSON module type by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17095](https://github.com/webpack/webpack/pull/17095) - Increase type coverage & docs for multiple utility classes by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17107](https://github.com/webpack/webpack/pull/17107) #### Dependencies & Maintenance - chore(deps-dev): bump lint-staged from 13.2.1 to 13.2.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17075](https://github.com/webpack/webpack/pull/17075) - chore(deps-dev): bump eslint from 8.38.0 to 8.39.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17052](https://github.com/webpack/webpack/pull/17052) - chore(deps-dev): bump assemblyscript from 0.27.3 to 0.27.4 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17064](https://github.com/webpack/webpack/pull/17064) - chore(deps-dev): bump assemblyscript from 0.27.4 to 0.27.5 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17109](https://github.com/webpack/webpack/pull/17109) - chore(deps-dev): bump [@&#8203;types/node](https://github.com/types/node) from 18.16.2 to 18.16.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17112](https://github.com/webpack/webpack/pull/17112) - chore(deps-dev): bump [@&#8203;types/node](https://github.com/types/node) from 18.15.13 to 18.16.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17084](https://github.com/webpack/webpack/pull/17084) - chore(deps-dev): bump webpack-cli from 5.0.1 to 5.0.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17054](https://github.com/webpack/webpack/pull/17054) - chore(deps-dev): bump date-fns from 2.29.3 to 2.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17111](https://github.com/webpack/webpack/pull/17111) #### New Contributors - [@&#8203;An0nie](https://github.com/An0nie) made their first contribution in [#&#8203;17079](https://github.com/webpack/webpack/pull/17079) - [@&#8203;burhanuday](https://github.com/burhanuday) made their first contribution in [#&#8203;17113](https://github.com/webpack/webpack/pull/17113) - [@&#8203;Zlatkovsky](https://github.com/Zlatkovsky) made their first contribution in [#&#8203;16990](https://github.com/webpack/webpack/pull/16990) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.81.0...v5.82.0> ### [`v5.81.0`](https://github.com/webpack/webpack/releases/tag/v5.81.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.80.0...v5.81.0) #### New Features - \[CSS] - Increased CSS import support and new hooks included for CSS module creation by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17057](https://github.com/webpack/webpack/pull/17057) - Logging now added to DefinePlugin by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17048](https://github.com/webpack/webpack/pull/17048) - New `ignoreBrowserWarnings` option to ignore browser console warnings in ModuleFederation by [@&#8203;indeediansbrett](https://github.com/indeediansbrett) in [#&#8203;16388](https://github.com/webpack/webpack/pull/16388) #### Bug Fixes - \[CSS] - Fix issue where vendor prefixed keyframes and animation was not supported in CSS modules by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16975](https://github.com/webpack/webpack/pull/16975) - Fix bug where AST was not properly handled by [@&#8203;quanru](https://github.com/quanru) in [#&#8203;17032](https://github.com/webpack/webpack/pull/17032) - Fix automatic publicPath detection logic by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17047](https://github.com/webpack/webpack/pull/17047) #### Tests & Contributor Experience - Rename `provide` to `getOrInsert` in MapHelpers and document it better by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17060](https://github.com/webpack/webpack/pull/17060) - Increase test reliability for DefinePlugin [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17062](https://github.com/webpack/webpack/pull/17062) - Add additional CI Pipeline to test main branches of first-party webpack dependencies by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17020](https://github.com/webpack/webpack/pull/17020) - Refactor tests to no longer use deprecated or legacy dependencies and APIs by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17033](https://github.com/webpack/webpack/pull/17033) #### Developer Experience - Increase type coverage/documentation for ModuleFilenameHelpers by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17045](https://github.com/webpack/webpack/pull/17045) - Increase type coverage/documentation for CommonJsExportsParserPlugin by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17046](https://github.com/webpack/webpack/pull/17046) - Increase type coverage/documentation for binarySearchBounds.js by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17058](https://github.com/webpack/webpack/pull/17058) - Export MemoryCacheOptions types by [@&#8203;romulof](https://github.com/romulof) in [#&#8203;17055](https://github.com/webpack/webpack/pull/17055) #### Dependencies & Maintenance - Add NodeJS v20 to CI Matrix by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17019](https://github.com/webpack/webpack/pull/17019) - Update Typescript to v5 by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16957](https://github.com/webpack/webpack/pull/16957) - Bump [@&#8203;types/estree](https://github.com/types/estree) from 1.0.0 to 1.0.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17026](https://github.com/webpack/webpack/pull/17026) - Bump [@&#8203;types/node](https://github.com/types/node) from 18.15.11 to 18.15.13 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17038](https://github.com/webpack/webpack/pull/17038) - Bump assemblyscript from 0.27.2 to 0.27.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17051](https://github.com/webpack/webpack/pull/17051) - Bump memfs from 3.5.0 to 3.5.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17039](https://github.com/webpack/webpack/pull/17039) - Bump prettier from 2.8.7 to 2.8.8 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17050](https://github.com/webpack/webpack/pull/17050) - Bump simple-git from 3.17.0 to 3.18.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;17066](https://github.com/webpack/webpack/pull/17066) #### New Contributors - [@&#8203;quanru](https://github.com/quanru) made their first contribution in [#&#8203;17032](https://github.com/webpack/webpack/pull/17032) - [@&#8203;romulof](https://github.com/romulof) made their first contribution in [#&#8203;17055](https://github.com/webpack/webpack/pull/17055) - [@&#8203;indeediansbrett](https://github.com/indeediansbrett) made their first contribution in [#&#8203;16388](https://github.com/webpack/webpack/pull/16388) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.80.0...v5.81.0> ### [`v5.80.0`](https://github.com/webpack/webpack/releases/tag/v5.80.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.79.0...v5.80.0) #### New Features - Support destructuring assignment in `import.meta` by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;16996](https://github.com/webpack/webpack/pull/16996) - Support treeshaking for destructuring assignment with `AwaitExpression` by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;16995](https://github.com/webpack/webpack/pull/16995) - Introduce `errorsSpace`, `warningsSpace` for more readable traces in stats by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;15450](https://github.com/webpack/webpack/pull/15450) #### Bug Fixes - \[CSS] - Fix runtime generation bug for merged CSS Chunks by [@&#8203;janlent1](https://github.com/janlent1) in [#&#8203;16903](https://github.com/webpack/webpack/pull/16903) - \[CSS] - Properly handle `url()`/`src()`/`image-set()`/`image()` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16978](https://github.com/webpack/webpack/pull/16978) - ES Module webpack loaders are now supported [@&#8203;stefanprobst](https://github.com/stefanprobst) in [#&#8203;15198](https://github.com/webpack/webpack/pull/15198) - Fix spelling error for `statement.finalizer` in parser by [@&#8203;xiaoboost](https://github.com/xiaoboost) in [#&#8203;17016](https://github.com/webpack/webpack/pull/17016) - Fix non-deterministic `moduleId` assignment due to encountering `NaN` in sort function by [@&#8203;scameron](https://github.com/scameron) in [#&#8203;16933](https://github.com/webpack/webpack/pull/16933) - \[enhanced-resolve]: Support wildcards pattern with common suffix in package maps & imports/exports field by [@&#8203;bvanjoi](https://github.com/bvanjoi) in [webpack/enhanced-resolve#353](https://github.com/webpack/enhanced-resolve/pull/353) #### Tests & Contributor Experience - \[CSS] - Added test case for `@supports` field by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17011](https://github.com/webpack/webpack/pull/17011) - Add test for include option in `BannerPlugin` by [@&#8203;jeffin143](https://github.com/jeffin143) in [#&#8203;10736](https://github.com/webpack/webpack/pull/10736) - Remove `finializer` from cspell.json by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;17022](https://github.com/webpack/webpack/pull/17022) #### Developer Experience - Adds the twitter badge by [@&#8203;yadunandanbhat](https://github.com/yadunandanbhat) in [#&#8203;15667](https://github.com/webpack/webpack/pull/15667) - Add `wasm-bindgen` example to `example` by [@&#8203;gthb](https://github.com/gthb) in [#&#8203;14313](https://github.com/webpack/webpack/pull/14313) - Update grammar mistakes in examples by [@&#8203;ersachin3112](https://github.com/ersachin3112) in [#&#8203;16988](https://github.com/webpack/webpack/pull/16988) #### Dependencies & Maintenance - Bump core-js from 3.30.0 to 3.30.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;16983](https://github.com/webpack/webpack/pull/16983) - Bump `@webassemblyjs` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;17003](https://github.com/webpack/webpack/pull/17003) - Bump assemblyscript from 0.25.2 to 0.27.2 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;16959](https://github.com/webpack/webpack/pull/16959) - Bump enhanced-resolve to [5.13.0](https://github.com/webpack/enhanced-resolve/releases/tag/v5.13.0) by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;17024](https://github.com/webpack/webpack/pull/17024) - Included githubactions in the dependabot config by [@&#8203;neilnaveen](https://github.com/neilnaveen) in [#&#8203;15618](https://github.com/webpack/webpack/pull/15618) - Fix prettier by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16976](https://github.com/webpack/webpack/pull/16976) #### New Contributors - [@&#8203;neilnaveen](https://github.com/neilnaveen) made their first contribution in [#&#8203;15618](https://github.com/webpack/webpack/pull/15618) - [@&#8203;yadunandanbhat](https://github.com/yadunandanbhat) made their first contribution in [#&#8203;15667](https://github.com/webpack/webpack/pull/15667) - [@&#8203;ersachin3112](https://github.com/ersachin3112) made their first contribution in [#&#8203;16988](https://github.com/webpack/webpack/pull/16988) - [@&#8203;stefanprobst](https://github.com/stefanprobst) made their first contribution in [#&#8203;15198](https://github.com/webpack/webpack/pull/15198) - [@&#8203;xiaoboost](https://github.com/xiaoboost) made their first contribution in [#&#8203;17016](https://github.com/webpack/webpack/pull/17016) - [@&#8203;scameron](https://github.com/scameron) made their first contribution in [#&#8203;16933](https://github.com/webpack/webpack/pull/16933) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.79.0...v5.80.0> ### [`v5.79.0`](https://github.com/webpack/webpack/releases/tag/v5.79.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.78.0...v5.79.0) #### New Features - webpack will now support simple destructuring scenarios for treeshaking namespaced imports and `DefinePlugin` by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;16941](https://github.com/webpack/webpack/pull/16941) #### Bugfixes - Truncate extremely long module names in `DefaultStatsPrinter` by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16882](https://github.com/webpack/webpack/pull/16882) - Add `[contenthash]` template support in `DllPlugin`'s `name` option by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16935](https://github.com/webpack/webpack/pull/16935) - Fixed a bug where `readRecords` compiler hook was causing hangs in conjunction with the `ReadRecordsPlugin` by [@&#8203;snitin315](https://github.com/snitin315) & [@&#8203;zookatron](https://github.com/zookatron) in [#&#8203;16944](https://github.com/webpack/webpack/pull/16944) - webpack can now consume ESM bundles generated by webpack's esm output support by [@&#8203;vankop](https://github.com/vankop) in [#&#8203;15608](https://github.com/webpack/webpack/pull/15608) - \[CSS] - webpack now respects CSS's case-insensitivity with atTags like `@MEDIA` by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16915](https://github.com/webpack/webpack/pull/16915) - \[CSS] - Fixes a bug where crossOriginLoading anonymous would not work when loading styles by [@&#8203;chenjiahan](https://github.com/chenjiahan) in [#&#8203;16925](https://github.com/webpack/webpack/pull/16925) #### Developer Experience - Fix broken links and typos found in examples by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16937](https://github.com/webpack/webpack/pull/16937) - Export more `Externals` Option types by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;12774](https://github.com/webpack/webpack/pull/12774) #### Contributor Experience - Add new test case for ModuleFederationPlugin usage with `shareScope` option by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16943](https://github.com/webpack/webpack/pull/16943) - Bump core-js from 3.20.3 to 3.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;16905](https://github.com/webpack/webpack/pull/16905) - Update all applicable local dependencies and devDependencies by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16919](https://github.com/webpack/webpack/pull/16919), [#&#8203;16924](https://github.com/webpack/webpack/pull/16924), [#&#8203;16936](https://github.com/webpack/webpack/pull/16936), [#&#8203;16968](https://github.com/webpack/webpack/pull/16968) - Update to Jest 29 by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16947](https://github.com/webpack/webpack/pull/16947) #### New Contributors - [@&#8203;chenjiahan](https://github.com/chenjiahan) made their first contribution in [#&#8203;16925](https://github.com/webpack/webpack/pull/16925) - [@&#8203;karlhorky](https://github.com/karlhorky) made their first contribution in [#&#8203;16419](https://github.com/webpack/webpack/pull/16419) - [@&#8203;zookatron](https://github.com/zookatron) made their first contribution in [#&#8203;16301](https://github.com/webpack/webpack/pull/16301) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.78.0...v5.79.0> ### [`v5.78.0`](https://github.com/webpack/webpack/releases/tag/v5.78.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.77.0...v5.78.0) #### Features - Implement `amdContainer` support for AMD libraries (Fixes [#&#8203;16561](https://github.com/webpack/webpack/issues/16561)) by [@&#8203;long76](https://github.com/long76) in [#&#8203;16562](https://github.com/webpack/webpack/pull/16562) #### Bugfixes - \[CSS] - Nested atRule's `@media` or `@supports` now properly are replaced with unique identifiers by [@&#8203;noreiller](https://github.com/noreiller) in [#&#8203;15812](https://github.com/webpack/webpack/pull/15812) - \[CSS] - Fix bug where closing parenthesis in CSS were not properly parsed and compiled by [@&#8203;janlent1](https://github.com/janlent1) in [#&#8203;16864](https://github.com/webpack/webpack/pull/16864) - Fix an issue where `oneOf` rule has been picked multiple times by [@&#8203;xiaoxiaojx](https://github.com/xiaoxiaojx) in [#&#8203;16477](https://github.com/webpack/webpack/pull/16477) - Add `createRequire` support for `node:module` prefix by [@&#8203;alexander-akait](https://github.com/alexander-akait) in [#&#8203;16904](https://github.com/webpack/webpack/pull/16904) - Fix bug where self-referencing a package in a shared module failed by [@&#8203;weareoutman](https://github.com/weareoutman) in [#&#8203;16685](https://github.com/webpack/webpack/pull/16685) #### Performance - Make `ErrorHelpers` named functions; Add types by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;16893](https://github.com/webpack/webpack/pull/16893) - Introduce `ModuleTypeConstants` for plugins by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;16896](https://github.com/webpack/webpack/pull/16896) - Refactor memory footprint in string usages for multiple plugins by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;16894](https://github.com/webpack/webpack/pull/16894) - Add more module type constants, use them across codebase by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;16898](https://github.com/webpack/webpack/pull/16898) #### Contributor Experience - Implement default PR Template to use GitHub Copilot for PR's integration and fix template name usage by [@&#8203;geromegrignon](https://github.com/geromegrignon) in [#&#8203;16890](https://github.com/webpack/webpack/pull/16890) - ci: update actions/cache to v3 by [@&#8203;armujahid](https://github.com/armujahid) in [#&#8203;16462](https://github.com/webpack/webpack/pull/16462) - webpack org Collaborators and Members now have [funded GitHub Codespaces!](https://github.com/openjs-foundation/cross-project-council/issues/1009) [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true\&ref=main\&repo=3678731\&machine=standardLinux32gb\&location=WestUs2) #### New Contributors - [@&#8203;geromegrignon](https://github.com/geromegrignon) made their first contribution in [#&#8203;16890](https://github.com/webpack/webpack/pull/16890) - [@&#8203;armujahid](https://github.com/armujahid) made their first contribution in [#&#8203;16462](https://github.com/webpack/webpack/pull/16462) - [@&#8203;long76](https://github.com/long76) made their first contribution in [#&#8203;16562](https://github.com/webpack/webpack/pull/16562) - [@&#8203;weareoutman](https://github.com/weareoutman) made their first contribution in [#&#8203;16685](https://github.com/webpack/webpack/pull/16685) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.77.0...v5.78.0> ### [`v5.77.0`](https://github.com/webpack/webpack/releases/tag/v5.77.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0) #### New Features - Add a new output option, `output.workerPublicPath` by [@&#8203;thomastay](https://github.com/thomastay) in [#&#8203;16671](https://github.com/webpack/webpack/pull/16671) #### Developer Experience - Improve `resolve.extensions` error message to suggest when `"."` is missing before the extension by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16807](https://github.com/webpack/webpack/pull/16807) #### Contributor Experience - Enable GitHub Copilot for PR's into default Pull Request Template by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;16881](https://github.com/webpack/webpack/pull/16881) #### New Contributors - [@&#8203;thomastay](https://github.com/thomastay) made their first contribution in [#&#8203;16671](https://github.com/webpack/webpack/pull/16671) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.76.3...v5.77.0> ### [`v5.76.3`](https://github.com/webpack/webpack/releases/tag/v5.76.3) [Compare Source](https://github.com/webpack/webpack/compare/v5.76.2...v5.76.3) #### Bugfixes - Non-javascript files will correctly **not** be imported when using `experiments.outputModule` (ES Module Output) by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16809](https://github.com/webpack/webpack/pull/16809) - Limit console output progress bar length to 40 when no columns provided by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16810](https://github.com/webpack/webpack/pull/16810) - Add missing NodeJS Builtin Modules support for `inspector/promises`, `readline/promises`, and `stream/consumers` by [@&#8203;ShenHongFei](https://github.com/ShenHongFei) in [#&#8203;16841](https://github.com/webpack/webpack/pull/16841) - webpack bin/cli now properly respects `NODE_PATH` env variable by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16808](https://github.com/webpack/webpack/pull/16808) - Improve typos in `resolveResourceErrorHints` by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16806](https://github.com/webpack/webpack/pull/16806) - Add missing `loaders` token support to `moduleFilenameTemplate` function call by [@&#8203;pgoldberg](https://github.com/pgoldberg) in [#&#8203;16756](https://github.com/webpack/webpack/pull/16756) - Add gaurd condition for `enabledLibraryTypes` in internal `ContainerPlugin` by [@&#8203;PengBoUESTC](https://github.com/PengBoUESTC) in [#&#8203;16635](https://github.com/webpack/webpack/pull/16635) #### New Contributors - [@&#8203;ShenHongFei](https://github.com/ShenHongFei) made their first contribution in [#&#8203;16841](https://github.com/webpack/webpack/pull/16841) - [@&#8203;pgoldberg](https://github.com/pgoldberg) made their first contribution in [#&#8203;16756](https://github.com/webpack/webpack/pull/16756) - [@&#8203;PengBoUESTC](https://github.com/PengBoUESTC) made their first contribution in [#&#8203;16635](https://github.com/webpack/webpack/pull/16635) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.76.2...v5.76.3> ### [`v5.76.2`](https://github.com/webpack/webpack/releases/tag/v5.76.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.76.1...v5.76.2) #### Bugfixes - Fix bug where a missing semicolon in generated bundle output for `publicPathRuntime` would cause concatenated runtime errors by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16811](https://github.com/webpack/webpack/pull/16811) - Remove redundant semicolons generated in bundle runtime code after `onScriptComplete` function by [@&#8203;ahaoboy](https://github.com/ahaoboy) in [#&#8203;16347](https://github.com/webpack/webpack/pull/16347) - Fix bug where `RealContentHashPlugin` was not respecting `output.hashSalt`'s ability to cause a force recalculation of `[contenthash]` for emitted assets by [@&#8203;dmichon-msft](https://github.com/dmichon-msft) [#&#8203;16789](https://github.com/webpack/webpack/issues/16789) #### Performance - Improve memory and runtime performance of sourcemaps via hoisting Regular Expression literals to stored variables by [@&#8203;TheLarkInn](https://github.com/TheLarkInn) in [#&#8203;15722](https://github.com/webpack/webpack/pull/15722) - Correct v8 deoptimization in `ModuleGraph` due to instance property declarations occurring outside of constructor by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16830](https://github.com/webpack/webpack/pull/16830) #### Developer Experience - Improved internal typings to match `webpack-sources` typings for `Source` instances by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16805](https://github.com/webpack/webpack/pull/16805) - Update repo examples to include missing quotation by [@&#8203;snitin315](https://github.com/snitin315) in [#&#8203;16812](https://github.com/webpack/webpack/pull/16812) #### New Contributors - [@&#8203;ahaoboy](https://github.com/ahaoboy) made their first contribution in [#&#8203;16347](https://github.com/webpack/webpack/pull/16347) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.76.1...v5.76.2> ### [`v5.76.1`](https://github.com/webpack/webpack/releases/tag/v5.76.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.76.0...v5.76.1) #### Fixed - Added `assert/strict` built-in to `NodeTargetPlugin` #### Revert - Improve performance of `hashRegExp` lookup by [@&#8203;ryanwilsonperkin](https://github.com/ryanwilsonperkin) in [#&#8203;16759](https://github.com/webpack/webpack/pull/16759) ### [`v5.76.0`](https://github.com/webpack/webpack/releases/tag/v5.76.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0) #### Bugfixes - Avoid cross-realm object access by [@&#8203;Jack-Works](https://github.com/Jack-Works) in [#&#8203;16500](https://github.com/webpack/webpack/pull/16500) - Improve hash performance via conditional initialization by [@&#8203;lvivski](https://github.com/lvivski) in [#&#8203;16491](https://github.com/webpack/webpack/pull/16491) - Serialize `generatedCode` info to fix bug in asset module cache restoration by [@&#8203;ryanwilsonperkin](https://github.com/ryanwilsonperkin) in [#&#8203;16703](https://github.com/webpack/webpack/pull/16703) - Improve performance of `hashRegExp` lookup by [@&#8203;ryanwilsonperkin](https://github.com/ryanwilsonperkin) in [#&#8203;16759](https://github.com/webpack/webpack/pull/16759) #### Features - add `target` to `LoaderContext` type by [@&#8203;askoufis](https://github.com/askoufis) in [#&#8203;16781](https://github.com/webpack/webpack/pull/16781) #### Security - [CVE-2022-37603](https://github.com/advisories/GHSA-3rfm-jhwj-7488) fixed by [@&#8203;akhilgkrishnan](https://github.com/akhilgkrishnan) in [#&#8203;16446](https://github.com/webpack/webpack/pull/16446) #### Repo Changes - Fix HTML5 logo in README by [@&#8203;jakebailey](https://github.com/jakebailey) in [#&#8203;16614](https://github.com/webpack/webpack/pull/16614) - Replace TypeScript logo in README by [@&#8203;jakebailey](https://github.com/jakebailey) in [#&#8203;16613](https://github.com/webpack/webpack/pull/16613) - Update actions/cache dependencies by [@&#8203;piwysocki](https://github.com/piwysocki) in [#&#8203;16493](https://github.com/webpack/webpack/pull/16493) #### New Contributors - [@&#8203;Jack-Works](https://github.com/Jack-Works) made their first contribution in [#&#8203;16500](https://github.com/webpack/webpack/pull/16500) - [@&#8203;lvivski](https://github.com/lvivski) made their first contribution in [#&#8203;16491](https://github.com/webpack/webpack/pull/16491) - [@&#8203;jakebailey](https://github.com/jakebailey) made their first contribution in [#&#8203;16614](https://github.com/webpack/webpack/pull/16614) - [@&#8203;akhilgkrishnan](https://github.com/akhilgkrishnan) made their first contribution in [#&#8203;16446](https://github.com/webpack/webpack/pull/16446) - [@&#8203;ryanwilsonperkin](https://github.com/ryanwilsonperkin) made their first contribution in [#&#8203;16703](https://github.com/webpack/webpack/pull/16703) - [@&#8203;piwysocki](https://github.com/piwysocki) made their first contribution in [#&#8203;16493](https://github.com/webpack/webpack/pull/16493) - [@&#8203;askoufis](https://github.com/askoufis) made their first contribution in [#&#8203;16781](https://github.com/webpack/webpack/pull/16781) **Full Changelog**: <https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0> ### [`v5.75.0`](https://github.com/webpack/webpack/releases/tag/v5.75.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.74.0...v5.75.0) ### Bugfixes - `experiments.*` normalize to `false` 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`](https://github.com/webpack/webpack/releases/tag/v5.74.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.73.0...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"`) - 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 for `ModuleFederationPlugin` - 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`](https://github.com/webpack/webpack/releases/tag/v5.73.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.72.1...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`](https://github.com/webpack/webpack/releases/tag/v5.72.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.72.0...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`](https://github.com/webpack/webpack/releases/tag/v5.72.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.71.0...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`](https://github.com/webpack/webpack/releases/tag/v5.71.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.70.0...v5.71.0) ### Features - choose smarter default for `uniqueName` when using a `output.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` returns `null` - 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`](https://github.com/webpack/webpack/releases/tag/v5.70.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.69.1...v5.70.0) ### Features - update node.js version constraints for ESM support - add `baseUri` to `entry` options to configure a static base uri (the base of `new 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 to `require.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` and `loaderContext.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`](https://github.com/webpack/webpack/releases/tag/v5.69.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.69.0...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`](https://github.com/webpack/webpack/releases/tag/v5.69.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.68.0...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` or `resolve.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`](https://github.com/webpack/webpack/releases/tag/v5.68.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.67.0...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`](https://github.com/webpack/webpack/releases/tag/v5.67.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.66.0...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`](https://github.com/webpack/webpack/releases/tag/v5.66.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.65.0...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) - see [#&#8203;14893](https://github.com/webpack/webpack/issues/14893) ### 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`](https://github.com/webpack/webpack/releases/tag/v5.65.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.64.4...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 without `requiredVersion` 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` and `ResolvePluginInstance` ### Preparations for the future - `hashDigestLength` will default to 16 in webpack 6 (`experiments.futureDefaults`) ### [`v5.64.4`](https://github.com/webpack/webpack/releases/tag/v5.64.4) [Compare Source](https://github.com/webpack/webpack/compare/v5.64.3...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`](https://github.com/webpack/webpack/releases/tag/v5.64.3) [Compare Source](https://github.com/webpack/webpack/compare/v5.64.2...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`](https://github.com/webpack/webpack/releases/tag/v5.64.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.64.1...v5.64.2) ### Bugfixes - avoid double initial compilation due to invalid dependencies with managedPaths ### [`v5.64.1`](https://github.com/webpack/webpack/releases/tag/v5.64.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.64.0...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` in `require.ensure` - fix cleaning of symlinks in `output.clean: true` - fix change detection with `unsafeCache` within `managedPaths` (node_modules) - bump webpack-sources for Stack Overflow bugfix ### [`v5.64.0`](https://github.com/webpack/webpack/releases/tag/v5.64.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.63.0...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`](https://github.com/webpack/webpack/releases/tag/v5.63.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.62.2...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`](https://github.com/webpack/webpack/releases/tag/v5.62.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.62.1...v5.62.2) ### Bugfixes - fix `__system_context__` injection when using the `library` option on entrypoint - enable `exportsPresence: "error"` by default in `futureDefaults` - 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`](https://github.com/webpack/webpack/releases/tag/v5.62.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.62.0...v5.62.1) ### Bugfix - fix invalid generated code when omitting `;` ### [`v5.62.0`](https://github.com/webpack/webpack/releases/tag/v5.62.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.61.0...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 from `export ... from "..."` to `export 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 for `splitChunks.fallbackCacheGroup.maxSize` too - fix schema of `listen` option, allow to omit `port` - 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 ### [`v5.61.0`](https://github.com/webpack/webpack/releases/tag/v5.61.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.60.0...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`](https://github.com/webpack/webpack/releases/tag/v5.60.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.59.1...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 in `beforeLoaders` hook ### [`v5.59.1`](https://github.com/webpack/webpack/releases/tag/v5.59.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.59.0...v5.59.1) ### Bugfixes - fix regexp in managedPaths - fix hanging when trying to write lockfile for `experiments.buildHttp` ### [`v5.59.0`](https://github.com/webpack/webpack/releases/tag/v5.59.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.58.2...v5.59.0) ### Features - add `/*#__PURE__*/` for `Object()` 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`](https://github.com/webpack/webpack/releases/tag/v5.58.2) [Compare Source](https://github.com/webpack/webpack/compare/v5.58.1...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`](https://github.com/webpack/webpack/releases/tag/v5.58.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.58.0...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`](https://github.com/webpack/webpack/releases/tag/v5.58.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.57.1...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`](https://github.com/webpack/webpack/releases/tag/v5.57.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.57.0...v5.57.1) ### Bugfix - fix experiments.cacheUnaffected which broke by last release ### [`v5.57.0`](https://github.com/webpack/webpack/releases/tag/v5.57.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.56.1...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`](https://github.com/webpack/webpack/releases/tag/v5.56.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.56.0...v5.56.1) ### Bugfix - DefinePlugin: fix conflict with older variants of the plugin ### [`v5.56.0`](https://github.com/webpack/webpack/releases/tag/v5.56.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.55.1...v5.56.0) ### Performance - make DefinePlugin rebuild check more efficient performance and memory wise ### [`v5.55.1`](https://github.com/webpack/webpack/releases/tag/v5.55.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.55.0...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`](https://github.com/webpack/webpack/releases/tag/v5.55.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.54.0...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`](https://github.com/webpack/webpack/releases/tag/v5.54.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.53.0...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`](https://github.com/webpack/webpack/releases/tag/v5.53.0) [Compare Source](https://github.com/webpack/webpack/compare/v5.52.1...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`](https://github.com/webpack/webpack/releases/tag/v5.52.1) [Compare Source](https://github.com/webpack/webpack/compare/v5.52.0...v5.52.1) ### Performance - split fresh created persistent cache files by time to avoid creating very large files </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xODYuNCIsInVwZGF0ZWRJblZlciI6IjQ0LjE4Ni40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
renovate force-pushed renovate/webpack-5.x-lockfile from 5f64e7801f to bcc01325de 2026-10-28 00:42:47 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from bcc01325de to 862ba60345 2026-10-29 12:46:31 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from 862ba60345 to e6f81559ec 2026-10-30 12:45:19 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from e6f81559ec to 1c9de88acc 2026-10-31 00:43:48 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from 1c9de88acc to ab6a0a8582 2026-10-31 12:42:47 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from ab6a0a8582 to 3e3c641b49 2026-11-01 00:41:56 +00:00 Compare
renovate force-pushed renovate/webpack-5.x-lockfile from 3e3c641b49 to 3139d43042 2026-11-03 00:45:38 +00:00 Compare
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin "renovate/webpack-5.x-lockfile:renovate/webpack-5.x-lockfile"
git switch "renovate/webpack-5.x-lockfile"

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch "main"
git merge --no-ff "renovate/webpack-5.x-lockfile"
git switch "renovate/webpack-5.x-lockfile"
git rebase "main"
git switch "main"
git merge --ff-only "renovate/webpack-5.x-lockfile"
git switch "renovate/webpack-5.x-lockfile"
git rebase "main"
git switch "main"
git merge --no-ff "renovate/webpack-5.x-lockfile"
git switch "main"
git merge --squash "renovate/webpack-5.x-lockfile"
git switch "main"
git merge --ff-only "renovate/webpack-5.x-lockfile"
git switch "main"
git merge "renovate/webpack-5.x-lockfile"
git push origin "main"
Sign in to join this conversation.
No description provided.