yarn webpack 5.108.0
v5.108.0

4 hours ago

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

  • Skip re-parsing the inlined entry module when no renaming is needed. (by @alexander-akait in #21167)

  • Extend the avoidEntryIife no-parse fast path to multi-entry chunks. (by @alexander-akait in #21173)

  • Reuse the binary deserialize dispatch table to speed up cache restore. (by @alexander-akait in #21175)

  • Type buildInfo and buildMeta per module type with shared common properties. (by @alexander-akait in #21172)

  • Avoid copying module runtime requirements when ownership is not transferred. (by @alexander-akait in #21140)

  • Keep all CommonJS exports when an exported function accesses them via this. (by @alexander-akait in #21179)

  • Align CLI color-support detection across Node, Deno and Bun. (by @alexander-akait in #21257)

  • Include the schema origin path in conflicting-schema CLI argument errors. (by @alexander-akait in #21087)

  • Reject __proto__, constructor and prototype path segments in cli.processArguments to prevent prototype pollution. (by @alexander-akait in #21057)

  • Speed up Compilation.deleteAsset and Compilation.renameAsset via a lazy reverse index from asset file name to containing chunks. (by @alexander-akait in #21035)

  • Fix merging of inner modules' top-level declarations in concatenated modules. (by @alexander-akait in #21170)

  • Reduce allocations in export hashing and concatenation name lookups. (by @alexander-akait in #21167)

  • Avoid toLowerCase allocations in CSS keyword comparisons. (by @alexander-akait in #21109)

  • Speed up CSS identifier escaping with a char-class lookup table. (by @alexander-akait in #21109)

  • Resolve [fullhash] in url() public paths for inlined CSS export types (style/text/css-style-sheet) at runtime. (by @alexander-akait in #21054)

  • Avoid quadratic line scan when building CSS module exports source maps. (by @alexander-akait in #21109)

  • Compute CSS comment source locations lazily. (by @alexander-akait in #21109)

  • Support inline hash digest and length in CSS module localIdentName placeholders. (by @alexander-akait in #21259)

  • Resolve full CSS escapes (including hex) in CSS-Modules names, so e.g. \75 rl() matches url(). (by @alexander-akait in #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 @alexander-akait in #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 @alexander-akait in #21114)

  • Cache CSS public-path placeholder offsets per module source to avoid re-materializing and re-scanning the source on every render. (by @alexander-akait in #21054)

  • Fix CSS tokenizer infinite loops and dropped tokens on malformed input. (by @alexander-akait in #21102)

  • Speed up CSS identifier unescaping with bulk run flushing. (by @alexander-akait in #21109)

  • Skip already-visited symlink targets when resolving context hashes so cyclic symlink graphs no longer overflow the queue. (by @alexander-akait in #21088)

  • Resolve DefinePlugin access to an undefined object member as undefined. (by @alexander-akait in #21040)

  • Avoid materializing dependency source locations when sorting, keeping them lazy to reduce build time and memory. (by @alexander-akait in #21228)

  • Speed up serialization deserialize by replacing a Buffer.isBuffer call with a typeof check. (by @hai-x in #21203)

  • Emit assets with absolute target paths as-is to avoid invalid Windows paths. (by @alexander-akait in #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 @alexander-akait in #21188)

  • Drop the unused loadScript runtime from ESM hot-update bundles. (by @alexander-akait in #21208)

  • Extend value binding optimization to export default expressions. (by @xiaoxiaojx in #21117)

  • Reduce ExportInfo memory and cache size for inline-exports metadata. (by @alexander-akait in #21171)

  • Resolve nested exports info paths iteratively to cut per-level array allocations. (by @alexander-akait in #21137)

  • Fix stale incremental cache for css, html and asset/source/inline modules. (by @alexander-akait in #21108)

  • CommonJS tree-shaking no longer drops exports accessed before a deferred require binding. (by @xiaoxiaojx in #21123)

  • Make CSS-referenced asset available in lazy JS chunk during incremental rebuilds. (by @alexander-akait in #21100)

  • Correct string/template import specifier parsing for filesystem cache build dependencies and fix module-sharing hostname validation. (by @alexander-akait in #21232)

  • perf: guard isDeferred() behind experiments.deferImport in ConcatenatedModule (by @shashank-u03 in #21096)

  • Speed up deterministicGrouping and cached comparators on large builds. (by @alexander-akait in #21197)

  • Reduce allocations on harmony/commonjs dependency hot paths. (by @alexander-akait in #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 @alexander-akait in #21131)

  • Fix HTML parser adoption agency to handle a nobr shielded by a marker. (by @alexander-akait in #21274)

  • Expand HTML parser tag/attribute coverage and decode character references. (by @alexander-akait in #21159)

  • Speed up and reduce allocations in the experimental HTML parser's tokenizer, tree builder, and entity decoder. (by @alexander-akait in #21152)

  • Speed up the experimental HTML parser and reduce its memory usage. (by @alexander-akait in #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 @alexander-akait in #21054)

  • Release inner-graph state after use and speed up inlined-export checks. (by @alexander-akait in #21167)

  • Reduce JavascriptParser allocations on the walk hot path to speed up parsing and lower memory usage. (by @alexander-akait in #21139)

  • Reduce CPU and memory overhead of the lazy barrel optimization. (by @alexander-akait in #21213)

  • Keep the error message in module build errors on engines whose Error.stack omits it. (by @alexander-akait in #21239)

  • Speed up module concatenation by caching repeated per-module computations. (by @alexander-akait in #21115)

  • Move the hot flag from Module to NormalModule, where it's actually read and written. (by @alexander-akait in #21028)

  • Move the weak flag from Dependency to ModuleDependency, where it's actually set. (by @alexander-akait in #21111)

  • Avoid the entry IIFE for multiple inlined entry modules by renaming collisions. (by @alexander-akait in #21151)

  • Reject new import.defer(...)/new import.source(...) with member access as a SyntaxError. (by @alexander-akait in #21211)

  • Avoid ProvidePlugin injection for local CommonJS require bindings that use the same variable name. (by @fireairforce in #21041)

  • Resolve the global new Worker(new URL(...)) to worker_threads on the node target. (by @alexander-akait in #21217)

  • Use optional chaining in generated runtime code where the environment supports it. (by @alexander-akait in #21186)

  • Allow output.path to be the filesystem root by treating EISDIR like EEXIST in mkdirp. (by @alexander-akait in #21223)

  • Reduce memory by not retaining the source location object on every dependency. (by @alexander-akait in #21183)

  • Keep the full exports object when a require() binding is re-exported. (by @alexander-akait in #21144)

  • Replace glob-to-regexp dependency with watchpack's globToRegExp utility. (by @hai-x in #21176)

  • Shrink the persistent cache: add a NULL_AND_I16 binary tier and inline tiny strings instead of larger far back-references. (by @hai-x in #21210)

  • Type serializer read/write contexts with positional tuples and fix a ProvideSharedDependency version/request swap. (by @alexander-akait in #21201)

  • Speed up buildChunkGraph by deriving block modules from the first runtime. (by @alexander-akait in #21166)

  • Cache re-export target resolution in SideEffectsFlagPlugin for faster builds. (by @alexander-akait in #21085)

  • Skip pure single-star passthrough modules for export * re-exports. (by @alexander-akait in #21085)

  • Skip dependency error/warning reporting for unchanged modules on rebuilds. (by @alexander-akait in #21154)

  • Use value descriptors instead of getters for const export bindings. (by @xiaoxiaojx in #21021)

  • Apply CSS hot updates on the Node side of a universal target. (by @alexander-akait in #21217)

  • Guard CSS style export-type injection so it no-ops when there is no document. (by @alexander-akait in #21193)

  • Avoid building warning stats objects when counting warnings without a filter. (by @alexander-akait in #21198)

  • Recognize forward-slash Windows absolute paths (e.g. C:/dir) consistently. (by @alexander-akait in #21223)

Don't miss a new webpack release

NewReleases is sending notifications on new releases.