Uh oh!
There was an error while loading. Please reload this page.
chore(deps): update devdependencies (non-major) - #341
Merged
Conversation
Bundle ReportBundle size has no change ✅ |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@## master #341 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 6 6 Lines 191 191 Branches 50 50 =========================================
Hits 191 191 Continue to review full report in Codecov by Harness.
|
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



This PR contains the following updates:
30.4.1→30.5.05.1.1→5.2.029.16.2→29.16.530.4.2→30.5.030.4.1→30.5.05.109.2→5.110.1Release Notes
jestjs/jest (@jest/globals)
v30.5.0Compare Source
Features
[@jest/expect-utils, jest-mock]AddmockFn.whenCalledWith(...args)for configuring return values per argument list, with first-class asymmetric-matcher support (#16053)[@jest/expect-utils]ExportAsymmetricMatcherandFunctionParameterstypes (previously private toexpect) (#16053)[jest-circus, jest-core, jest-jasmine2, jest-test-result, jest-types]--collectTestsnow expandstest.each/describe.eachcases and reports per-status counts (skipped/todo via the newwouldRunflag for selected tests) plus a summary line that match a real run, including under--testNamePatternand.only/fdescribefocus on both the circus and jasmine2 runners (#16259)[jest-circus, jest-environment, jest-runtime, jest-types]Add describe-level retries viajest.retryTimes(..., {entireDescribe: true})(#16322)[jest-circus, jest-message-util, jest-reporters, jest-types]AddretryMessagestoAssertionResultand exportformatErrorStack, so the retry log renders nestedcauseandAggregateErrorsections with code frames instead of serialized[cause]:/[errors]:markers (#16316)[jest-circus, jest-types]AddunhandledErrorsDetailedtoCircus.RunResult, so an unhandled rejection reports itscausechain andAggregateErrorentries with code frames instead of a pre-serialized stack (#16316)[jest-haste-map]ReplaceNodeWatcherandFSEventsWatcherwith@parcel/watcherfor the non-watchman watch path (#16188)[jest-resolve]Bumpunrs-resolverto 1.12.1, removejest-pnp-resolverand unnecessary checks (#15721)[jest-resolve]Honor Node's--preserve-symlinks/NODE_PRESERVE_SYMLINKSin the default resolver by passingsymlinks: falsetounrs-resolver(#16260)[jest-runtime]Apply automocking and manual__mocks__files to synchronously evaluable ESM graphs on Node 24.9+ - static imports, dynamicimport()andrequire()of an ESM file now generate an automock from the real module's namespace instead of failing with "Attempting to import a mock without a factory". Graphs that need async evaluation (top-level await) or an async-only resolver or transformer still throw (#16391)[jest-runtime]Routeprocess.getBuiltinModulethrough the sandbox, so it returns the sandboxprocessand the hookednode:moduleinstead of the host's (#16391)[jest-runtime]Throw an actionable error frommodule.register()andmodule.registerHooks()inside a test - the hooks attached to the loader running Jest itself, never saw the sandboxed requires they were meant for, and stayed registered for every later test file in the worker (#16391)[jest-runtime]Surface resolution and import-attribute errors in an ESM graph before executing any of its CJS dependencies on Node 24.9+, matching Node's run-nothing-on-a-broken-graph behavior; the legacy loader on older versions keeps its linking-time execution order (#16391)[jest-runtime]ThrowERR_SOURCE_PHASE_NOT_DEFINEDwith an actionable message forimport sourceandimport.source(), instead of failing at instantiation with V8's bare "Source phase import object is not defined" (#16391)[jest-runtime]Emit the JSON-without-import-attribute deprecation warning once per test file instead of once per worker, so it is no longer silently swallowed for every file after the first (#16391)[jest-runtime]Setimport.meta.maintotruein the test file andfalsein every module it loads, matching Node 24+ (#16367)[jest-runtime]Resolve themodule-syncexport condition, so a package that exposes its ESM entry point forrequire()loads the same file Node would (#16336)[jest-snapshot]Add external snapshot paths to custom reporter failure details (#16374)Fixes
[jest-console, jest-reporters]CustomConsolenow buffers console output soTestResult.consoleis populated for reporters whenverboseis enabled, whileGitHubActionsReporteravoids replaying buffered output in verbose mode (#16155)[expect, jest-message-util, jest-pattern, jest-regex-util, jest-util]Revertnode:protocol imports to restore webpack/browser-bundle compatibility (#16167)[expect]WidentoMatchObjectandobjectContainingparameter type fromRecord<string, unknown>toobjectso class instances are accepted (#16196)[jest-circus]Call a generator test body with the shared test context, sothismatches what a regular test function receives (#16347)[jest-circus]Capture the error listeners of the parent process instead of the in-sandboxprocess, so listeners registered before the test file survive teardown and sandbox listeners no longer leak onto the parent (#16347)[jest-circus]ClearcurrentlyRunningTestafter skipped and todo tests (#16342)[jest-circus]Prevent latedone()callbacks from affecting later test or hook invocations (#16343)[jest-circus, jest-jasmine2]Honor--expandwhen formattingnode:assertfailures, instead of always collapsing the diff (#16347)[jest-circus, jest-jasmine2, jest-message-util]Serialize the inner errors of anAggregateErrorintofailureMessages,retryReasonsandunhandledErrors, so--jsonoutput and reporter annotations include them (#16316)[jest-circus, jest-snapshot]Keep snapshot state and counts correct when a test retries (#16344)[@jest/create-cache-key-function]Include the caller support flags in the generated key, so a transformer that emits ESM or CJS based on them no longer shares one cache entry between the two (#16331)[@jest/create-cache-key-function]Include the stringified project config in the generated key, so editing a transformer's own settings invalidates what it cached (#16331)[@jest/transform]Include the caller support flags in a transform's cache key, so a file transformed both as ESM and as CJS no longer serves one shape's output for the other (#16331)[jest-config]Add missingfindRelatedTests,outputFile, andreplnameentries toValidConfigso they no longer trigger spurious "Unknown option" warnings (#16224)[jest-config]Use--configfor the global config when multiple--projectsare specified (#16273)[jest-core]Serializebigintvalues in--jsonand--outputFileoutput as their literal form (4n), instead of failing the run withTypeError: Do not know how to serialize a BigInt(#16338)[jest-core]Do not report aCustomGCasync resource (used by N-API addons such as napi-rs for per-isolate GC bookkeeping) as an open handle, since it isnapi_unref'd by the addon and can never keep the event loop alive (#16379)[jest-each]Keep a$&,$`,$'or$$inside a%pparam value out of the replacement, so the title shows the value instead of the text around it (#16338)[jest-each]Interpolate abigintinto a%jtitle as its literal form ("4n") at any depth, instead of throwingTypeError: Do not know how to serialize a BigIntwhile collecting the tests (#16338)[jest-environment, jest-runtime]BindsandboxInjectedGlobalsto the right values wheninjectGlobalsisfalse, instead of shifting every one of them by a position (#16377)[jest-environment-node, jest-util]Only warn about a conflictingglobalsCleanupmode when one was explicitly configured, and follow the mode that is actually in effect (#16323)[jest-environment-node, jest-util]Stop resolving lazy globals when setting up an environment, so Node 26's builtin module globals are no longer loaded (and no longer emit their deprecation warnings) for every test file (#16324)[jest-haste-map]Keep watch mode alive when an outside process briefly makes a file unreadable on Windows, instead of tearing the watcher down onEPERM(#16295)[jest-haste-map]Keep indexing when an outside process holds a file open on Windows, instead of failing the whole crawl onEPERM(#16358)[jest-haste-map]Keep a duplicated manual mock resolving when the file it pointed at is deleted in watch mode (#16360)[jest-haste-map]Shut the worker farm down when a duplicate manual mock aborts the build underthrowOnModuleCollision(#16354)[jest-haste-map]Attach the watchman client'serrorlistener before the first command, so a watchman failure falls back to the node crawler instead of crashing on an unhandlederrorevent, and always end the client (#16355)[jest-haste-map]Stop delivering watch events afterWatchmanWatcheris closed, and route its warnings through the configured console (#16355)[jest-haste-map]Restore the nestedduplicatesindex correctly inModuleMap.fromJSON, so a haste collision reported inside a test worker raisesDuplicateHasteCandidatesErrorinstead of aTypeError(#16353)[jest-haste-map]Match watched files on a full extension, somoduleFileExtensions: ['js']no longer acceptsfoo.mjs(#16352)[jest-haste-map]Delimit the fields that make up the haste map cache key, so two different option sets cannot hash to the same cache file (#16352)[jest-message-util]Print the inner errors of anAggregateErrorthrown inside a test (#16316)[jest-message-util]Indent nestedcauseandAggregateErrorsections of a test failure by one level per depth, so the nesting is legible instead of rendering flat (#16316)[jest-message-util]Color stack traces line by line so blank lines stay blank (#16316)[jest-message-util]Detect Jest's own frames without assuming the checkout directory's name, and cover@jest/*packages, so stack traces and code frames point at user code (#16326)[jest-mock]mockResolvedValue/mockRejectedValuenow see all overload return types, so a Promise-returning overload survives even when a later overload returns a non-Promise (e.g.pg.Client['end']) (#16237)[@jest-environment/jsdom-abstract]Make@types/jsdoma peer dependency (#16166)[jest-mock]Remove the leftover own accessor descriptor when restoring aspyOnof an inherited getter or setter, so the instance keeps reflecting the prototype (#16226)[jest-resolve]IncludeextensionsToTreatAsEsmin theshouldLoadAsEsmcache key, so projects with different extension lists don't read each other's answers (#16369)[jest-resolve]MakegetModuleIDAsyncbuild and cachedata:URI module IDs the same way asgetModuleID(#16370)[jest-resolve]Keep thenode:prefix when resolving a core module asynchronously, so a builtin that only exists prefixed (node:sea,node:sqlite,node:test,node:test/reporters) resolves instead of failing as a missing bare package (#16388)[jest-resolve]Look up manual mocks fornode:protocol specifiers under the unprefixed name they are stored as (#16388)[jest-resolve]ApplymoduleNameMapperconsistently to both spellings of core module specifiers (fsvsnode:fs) (#16390)[jest-resolve]Keep virtual and ordinary mock module IDs isolated across test files (#16296)[jest-resolve]Guard missingrequire.resolve.paths(#16052)[jest-resolve, jest-config, jest-runner]Support a user resolver written as an ES module (#16332)[jest-resolve, jest-runtime]Throw the CJS parse error for ESM syntax in a"type": "commonjs"package or a.cjsfile instead of loading it as ESM, matching Node (#16368)[@jest/source-map]Keep source map sources that name a scheme, such aswebpack:///, instead of resolving them into a path that does not exist (#16327)[@jest/source-map]Look up--testLocationInResultspositions at the right column, and keep a mapping to the first column instead of discarding it (#16327)[@jest/source-map]Warn when a source map cannot be parsed, instead of silently leaving its frames untranslated (#16327)[jest-runner, @jest/source-map]Keep a source-mapped stack for an error thrown after the test environment was torn down (#16327)[jest-runtime, @jest/source-map]Keep source maps past teardown and past the next test file'sinstall, so a stack from a file no earlier stack mentioned still points at the original source (#16330)[jest-runtime]Report that no coverage was collected whengetAllV8CoverageInfoCopyis called afterteardown, instead of returning an empty result (#16385)[jest-runtime]Cache a CJS module's parsed exports before walking its re-exports, so two modules that re-export each other no longer overflow the stack when imported from ESM (#16363)[jest-runtime]Keep a re-exported ES module's parse failure from marking the re-exporting CommonJS file as ESM, somodule.exports = require('./dep.mjs')loads instead of failing withmodule is not defined(#16363)[jest-runtime]Scope module mocks instantiated insidejest.isolateModules/isolateModulesAsyncto that block, so a mock first imported there no longer outlives it - matching how CommonJS mocks already behave (#16365)[jest-runtime]Suspend module isolation while generating an automock, so loading the real module to read its shape no longer populates the isolated registry (#16365)[jest-runtime]Check a cached ES module's status beforerequire()returns it, so a module whose evaluation threw rethrows that error and one left linked by a failed sibling is evaluated instead of returning uninitialized bindings (#16364)[jest-runtime]Report the originalERR_REQUIRE_ASYNC_MODULEwhen arequire()of a top-level-await graph is retried, instead of a spurious "concurrentimport()" error (#16364)[jest-runtime]Throw the evaluation error when another caller'simport()of the same module failed while we awaited it, instead of resolving with the errored module (#16364)[jest-runtime]Mark the result ofrequire()ing an ES module that has a default export with__esModule: truethrough a live-binding facade, and serve the same object fromrequire.cache, matching Node (#16367)[jest-runtime]Provide a CommonJS module's exports under the'module.exports'named export when imported from ESM, matching Node 23+ (#16367)[jest-runtime]Give the test file itself a non-nullrequire.main(#16367)[jest-runtime]Populatemodule.childrenwith the modules a file loads, matching Node (#16368)[jest-runtime]Provideimport.meta.resolveandimport.meta.jestindata:URI modules, accept any-case mediatype parameters, and use Node's error codes for invaliddata:URIs (#16368)[jest-runtime]Key ES modules by full URL, so query and fragment suffixes create the same module instances as Node and show up inimport.meta.url(#16375)[jest-runtime]Share modules between overlapping graphs when a CommonJS modulerequire()s an ES module mid-load, instead of evaluating shared dependencies twice (#16375)[jest-runtime]ThrowERR_REQUIRE_CYCLE_MODULElike Node when a CommonJS modulerequire()s an ES module that is still being loaded, instead of evaluating the module a second time (#16366)[jest-runtime]Key builtin modules in the ESM registry by one canonical specifier (#16341)[jest-runtime]import.meta.resolve()for a builtin uses itsnode:specifier (#16341)[jest-runtime]Fall back to native ESM when a.jsfile contains ESM syntax but has no"type":"module"marker (#16152)[jest-runtime]Allowrequire()of ESM-marked files on Node < 24.9 via transform fallback (#16244)[jest-runtime, @jest/transform]Surface actionableERR_REQUIRE_ESMerror for files with untransformed ESM syntax instead of the generic "unexpected token" message (#16244)[jest-runtime]Support older test environments whosemoduleMockerdoes not implementclearMocksOnScope(#16169)[jest-runtime]Applyjest.unstable_mockModulewhen the mocked file itself isrequire()d, not only when it is imported as a dependency (#16389)[jest-runtime]Applyjest.unstable_mockModuleto statically importeddata:URIs on Node 24.9+, matching dynamicimport()(#16389)[jest-runtime]Run an asyncjest.unstable_mockModulefactory once per module instead of twice, and fail the import instead of crashing the worker when the factory rejects (#16389)[jest-runtime]Hide arequire(esm)module that failed to evaluate fromrequire.cache, as Node does, instead of exposing a namespace with uninitialized bindings (#16389)[jest-runtime]Strip the byte-order mark when importing a JSON module, matchingrequire()and Node (#16389)[jest-runtime]ThrowERR_REQUIRE_ASYNC_MODULEwhenrequire(esm)runs under an async-only custom resolver, instead of silently resolving with the default resolver (#16389)[jest-runtime]Parse imported JSON modules with the test realm'sJSON, so their objects passinstanceof Objectinside the test likerequire()d JSON does (#16389)[jest-runtime]Accept everyfile:URL string in the sandboxedmodule.createRequire, including one with alocalhostauthority, as Node does (#16389)[jest-runtime]Point at{virtual: true}whenjest.mockorjest.unstable_mockModuleis given a module that cannot be resolved (#16389)[jest-reporters]Fix coverage report table formatting in CI/GitHub Actions environments whereprocess.stdout.columnsis undefined by falling back to theCOLUMNSenv var or80columns in CI, preserving existing behaviour in other non-TTY environments (#16227)[jest-runtime]Support CJS-in-ESM exports via"module.exports"named exports (#16277)[jest-snapshot]Keep a skipped or failed test's hinted snapshots, instead of reporting them obsolete (#16348)[jest-util]StopglobsToMatcherreusing a cached matcher compiled with different picomatch options, and keep itsdot: truedefault whendotis passed asundefined(#16381)[pretty-format]Move thereact-isaliases into the@jestscope, so they cannot be shadowed by unrelated packages published under the alias names (#16333)Chore & Maintenance
[docs]Document the intentional divergences from Node's module system in the ECMAScript Modules page (#16368)[docs]Note deprecation ofreact-test-rendererin React Native tutorial andpretty-formatREADME (#16294)[docs]Use@testing-library/react-nativein the React Native tutorial instead of the deprecatedreact-test-renderer(#16318)[babel-jest, @jest/transform]Updatebabel-plugin-istanbulto v8 (#16049)[jest-config, @jest/reporters, jest-runtime]Updateglobto v13 (#16397)[jest-haste-map]Refactor massive class into multiple files (#16180)[jest-haste-map]Dropwalkerdependency; replace hand-rolled directory recursion in the JS crawler and watcher startup withfdir(#16187)[jest-haste-map]Reuse cached metadata for files whose haste name is a known duplicate, instead of re-reading and re-parsing them on every startup (#16351)[jest-haste-map]Cache the watchman socket path and replace thewatchman --versionprobe withget-sockname, so warm runs spawn no watchman processes (#16386)[jest-resolve]Store the per-directory package-type lookup in the cache it reads, so it actually memoizes (#16369)[jest-resolve, jest-runtime]Cut repeated work on the resolution hot path: hoist the platform-extension list to construction, memoizeisCoreModuleand the options cache-key serialization, skip mapper preparation when nomoduleNameMapperis configured, run each mapper regex once, and stop re-parsingNODE_OPTIONSon every default-resolver call (#16371)[jest-resolve]Cut warm resolution cost to about a third: reuse oneunrs-resolverfactory per options shape instead of cloning per resolution, compose the factory cache key from per-array cached strings instead of serializing options, and stop constructing anErrorfor misses thatfindNodeModuleswallows; add a__benchmarks__suite for the default resolver (#16373)[jest-runner, @jest/source-map]Replacesource-map-supportwith an implementation in@jest/source-map(#16327)[jest-snapshot]Load babel, semver and synckit lazily, so requiring the package (which every test process does through@jest/expect) no longer loads ~200 modules that only writing inline snapshots needs (#16387)[jest-runtime]Reduce per-require overhead: skip module ID resolution when no mock can apply, answer core modules before probing for a manual mock, share onerequire.cacheproxy across modules, and cache empty files (#16376)[@jest/source-map]DeprecategetCallsitein favour ofSourceMapSupport#getCallsite(#16327)[jest-runtime]Avoid magicalnullvalue in ESM loader (#16160)ankitskvmdam/clean-jsdoc-theme (clean-jsdoc-theme)
v5.2.0Compare Source
Highlights
✨
llms.txtfor your docs —llmsTxtGenerate an llmstxt.org index of your documentation at build time, so LLMs and AI crawlers can discover and read it. Every entry links a page's companion Markdown (
<page>/index.md) rather than its HTML, so a model fetches clean prose instead of parsing your layout./llms.txt— oneh1, a summary, then one section per sidebar group./llms-full.txt— every page concatenated, for one-shot ingestion.trueis shorthand for{ full: true, api: true }:fulltruellms-full.txt. Setfalseon a large API site — it concatenates every page.apitruetruelists API pages with descriptions and includes their bodies inllms-full.txt;'index'lists them as a bare index and omits their bodies;falseomits API pages entirely.siteUrlis required — the file is fetched standalone, so its links must be absolute. Without it the build warns and generates nothing (withstrict, it fails). Source-file viewer pages are never listed, and each locale of a localized build gets its own file. See Configuration →llmsTxt.🔗 TypeDoc:
hostedBaseUrlis now honoredIf you already set TypeDoc's own
hostedBaseUrl,sitemap.xmlandllms.txtnow work without repeating the URL incleanJsdocTheme.siteUrl. When both are set the theme-specific key wins and the build warns, so it's always clear which one applied.🔎
siteUrlis validated up frontA malformed
siteUrlused to silently produce nositemap.xml. It now reports a warning. AsiteUrlthat carries a path whilebasePathis unset also warns, because that path is dropped from emitted URLs — a common way to get plausible-looking but wrong links.Option warnings are additionally re-printed after the build report. They were previously emitted before any render work, so on a large site they scrolled far out of view behind the build log.
Minor Changes
llmsTxt—llms.txt+llms-full.txtgeneration for both the JSDoc template and the TypeDoc plugin (see Highlights).hostedBaseUrlwhencleanJsdocTheme.siteUrlis unset.siteUrland surface option warnings again at the end of the build.Patch Changes
For contributors
>=22.18(tsdown's own requirement; Node 20 reached end of life in April 2026). Consuming the published packages still only needs Node>=20— the emitted code targets ES2022 and no published package declaresengines.pnpm run devindocs-site/examples/*is now a Vite dev server: edit any package and the site regenerates and the browser live-reloads itself. This replaces anodemon+servepair that had no reload channel at all.Security
jest-community/eslint-plugin-jest (eslint-plugin-jest)
v29.16.5Compare Source
Bug Fixes
v29.16.4Compare Source
Bug Fixes
v29.16.3Compare Source
Bug Fixes
exportsglobal (#1988) (f506cb2)webpack/webpack (webpack)
v5.110.1Compare Source
Patch Changes
Fix a capture-group-less
snapshot.managedPathsRegExp; speed up cache writes. (by @alexander-akait in #21843)Throw
SyntaxError, orWebAssembly.CompileError, from an unparsable module. (by @alexander-akait in #21847)Accept the
optimization.minimize: trueshorthand set by a plugin inapply(). (by @AgentEnder in #21845)v5.110.0Compare Source
Minor Changes
Wrap concatenated modules in lazy
__webpack_require__.cwaccessors and inlinerequire(), 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 recommendsoptimization.runtimeChunk. Enable every check not set individually withperformance.all, report hints in stats only withperformance.hints: "stats", and get them in a stable order that leaves the build hashes unchanged. (by @alexander-akait in #21841)Add the
descriptionRelativePathmodule rule condition. (by @alexander-akait in #21705)Add OS-independent
globmatching to module rules. (by @alexander-akait in #21771)Report inner-graph, AMD and bare
modulebailouts inoptimizationBailout. (by @alexander-akait in #21740)Allow marking externals as side-effect-free with a
sideEffectsflag. (by @alexander-akait in #21712)Give externals the original request of a context module element. (by @alexander-akait in #21780)
Add the
externalsPresets.nodeModulespreset with anallowlistoption to externalize installed packages, replacing thewebpack-node-externalsplugin. (by @alexander-akait in #21569)Add
output.library.umdAmdContainerfor an AMD-style loader branch in UMD. (by @hai-x in #21770)Resolve
@custom-mediavalues that aretrue/falseor 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 andanimationtimeline keywords. (by @alexander-akait in #21600)Derive
import defer/import sourcefrom 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.exportsobject literals, exports destructured from arequire()binding, unused method requires, and unused side-effect-freerequire()calls and reexports. (by @alexander-akait in #21841)Resolve relative entry
baseUrivalues 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>andfont-stretchkeywords, colors (polar, Lab andhsl()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,transitionlayers,display, transforms, gradients, font families, identical repeated declarations, and rules an identical later one makes dead. Abilities are read off the target browsers,vendorPrefixesadds and drops vendor prefixes for them, andrewriteCustomPropertiesshortens 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.minimizeis 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, viewportcontent, inline<style>and a JSON<script>body through their own grammars. Adds theoptimization.minimize.htmloptionscollapseWhitespace,mergeStyles,minifyConditionalComments,minifySrcdoc,preserveComments,removeEmptyAttributes,removeEmptyElements,removeImpliedTags,removeRedundantAttributes,sortAttributesandsortTokenLists, 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
shutdownhook toMultiCompiler. (by @bjohansebas in #21578)Report which compilers changed on the MultiCompiler
donehook. (by @bjohansebas in #21580)Add
[containedpath]/[containedfile]placeholders, used for[path]/[file]of asset and html modules withexperiments.futureDefaults. (by @alexander-akait in #21592)Support an object for an entry's
htmlthat overridesoutput.htmlper 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,argumentsor 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.memberreadingundefinedin 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.dedupeto 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-urlexternal. (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, voidkeygenand 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'sblockedflag 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
ReferenceErrorfromimport.meta.mainusing the wrong module argument. (by @hai-x in #21620)Leave a
@namespaceURI 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
.webmanifestwith a BOM or non-ASCII text. (by @alexander-akait in #21655)Respect
strictThisContextOnImportsforrequire()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
usingandawait usingdeclarations in modules. (by @alexander-akait in #21557)Fix
DefinePluginoptional chains reading an undefined object member. (by @lazerg in #21823)Fix MultiCompiler: compute the common
outputPathby 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.globalObjectreadsthis. (by @alexander-akait in #21715)Run an even-priority
__webpack_require__.Ohandler without waiting. (by @alexander-akait in #21803)Treat top-level
thisin 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.jsfrommdn-data,color-nameand the spec IDL — including the value-type facts read out of the CSS value-definition grammars — leaving bothsyntax.jsfiles algorithm only. (by @alexander-akait in #21841)Support UNC paths in module and context replacement plugins. (by @avivkeller in #21645)
Emit less runtime code: sho
Configuration
📅 Schedule: (in timezone America/New_York)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Never, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.