Skip to content

Releases: webpack/webpack

v5.110.1

Choose a tag to compare

@github-actions github-actions released this 27 Aug 20:01
0b2952e

Patch Changes

  • Fix a capture-group-less snapshot.managedPaths RegExp; speed up cache writes. (by @alexander-akait in #21843)

  • Throw SyntaxError, or WebAssembly.CompileError, from an unparsable module. (by @alexander-akait in #21847)

  • Accept the optimization.minimize: true shorthand set by a plugin in apply(). (by @AgentEnder in #21845)

v5.110.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 11:28
3a7c0e6

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 misma...
Read more

v5.109.2

Choose a tag to compare

@github-actions github-actions released this 28 Jul 18:14
6a24bd6

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

Choose a tag to compare

@github-actions github-actions released this 27 Jul 21:58
ec39088

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

Choose a tag to compare

@github-actions github-actions released this 23 Jul 19:19
21cd11a

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 #21477)

  • 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 #21477)

  • 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 #21477)

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

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

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

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

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

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

  • 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 #21477)

  • 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 #21477)

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

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

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

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

  • 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 #21477)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Patch Changes

  • Fix broken HMR with output.module and non-import chunk loading by emitting a plain-JSON hot-update manifest. (by @alexander-akait in #21477)

  • Fix unused CSS module exports leaking into the JS wrapper. (by @alexander-akait in #21477)

  • Fix deferred import evaluation: re-t...

Read more

v5.108.4

Choose a tag to compare

@github-actions github-actions released this 04 Jul 18:09
bb9ccfd

Patch Changes

  • Speed up non-CSS-Modules parsing by not building unused selector AST nodes. (by @alexander-akait in #21324)

  • Speed up non-CSS-Modules CSS parsing by dropping value tokens nothing reads. (by @alexander-akait in #21324)

  • Resolve HTML asset URLs against the document <base href>. (by @alexander-akait in #21329)

  • Add HTML integration tests: generateError output, ignored src, null-char parse. (by @aryanraj45 in #21328)

  • Reduce CPU and memory overhead of HTML and CSS parsing and code generation. (by @alexander-akait in #21332)

  • Reduce HTML parser memory and CPU by skipping unused AST nodes. (by @alexander-akait in #21323)

  • Reduce HTML parser memory by storing the AST in struct-of-arrays form. (by @alexander-akait in #21331)

  • Key the provided-exports cache on a lazy barrel's still-lazy re-export targets. (by @hai-x in #21326)

  • Default output.globalObject to globalThis for universal targets. (by @alexander-akait in #21314)

  • Pass through new URL(...) directory references instead of resolving them. (by @alexander-akait in #21312)

v5.108.3

Choose a tag to compare

@github-actions github-actions released this 29 Jun 22:00
6844305

Patch Changes

  • Speed up CSS parsing and reduce CSS AST node memory. (by @alexander-akait in #21285)

  • Fix HMR codegen crash for harmony accept with unresolved imports. (by @xiaoxiaojx in #21302)

  • Match harmony accept dependencies by module reference so HMR codegen handles imports without a module or chunk id. (by @alexander-akait in #21303)

v5.108.2

Choose a tag to compare

@github-actions github-actions released this 29 Jun 12:56
4dfe770

Patch Changes

  • Fix lazy barrel deferral of ungrouped side-effect imports. (by @hai-x in #21291)

  • Respect the node: prefix for node.js core modules used as externals. (by @alexander-akait in #21286)

v5.108.1

Choose a tag to compare

@github-actions github-actions released this 26 Jun 13:04
da91761

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

Choose a tag to compare

@github-actions github-actions released this 25 Jun 09:40
322b060

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

Read more