Repository navigation
chore(deps): update all non-major dependencies - #98
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #98 +/- ##
=======================================
Coverage 84.73% 84.73%
=======================================
Files 10 10
Lines 773 773
Branches 229 229
=======================================
Hits 655 655
Misses 105 105
Partials 13 13 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 3, 2026 12:30
d12aa92 to
9a62b1b
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
5 times, most recently
from
October 7, 2026 05:16
2cda15a to
7f1a2e1
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 9, 2026 08:31
7f1a2e1 to
1e90425
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 9, 2026 16:52
1e90425 to
b74c3ae
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
4 times, most recently
from
October 13, 2026 14:28
812423e to
2d2faa8
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 16, 2026 12:24
2d2faa8 to
f262e87
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
5 times, most recently
from
October 23, 2026 00:21
ae16ed9 to
876fd14
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 24, 2026 18:45
876fd14 to
86a9c65
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
October 25, 2026 02:23
86a9c65 to
58d89e3
Compare
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 free
to 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.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^5.0.4→^5.0.54.0.0-rc.2→4.0.0-rc.3^0.72.0→^0.74.0^1.87.0→^1.89.011.26.0→11.28.7^1.2.13→^1.2.15^5.0.4→^5.0.5bump,lockfileUpdate, orrollbackupdates, so these are raised without a Minimum Release Age check. You will need to manually validate the Minimum Release Age for these package(s).Release Notes
vitest-dev/vitest (@vitest/coverage-v8)
v5.0.5Compare Source
🐞 Bug Fixes
fs.denywith api token file - by @hi-ogawa, Hiroshi Ogawa and Claude Opus 5.5 in #11578 (28dc1)--changed- by @sheremet-va in #11583 (14921)datato theimport.meta.hotstub - by @sheremet-va in #11590 (3a828)skipinskipIf, ignoreundefinedoptions - by @sheremet-va in #11591 (d523a)&#​39;failed&#​39;on worker crash - by @AriPerkkio in #11568 (6ae8e)View changes on GitHub
oxc-project/oxc (oxfmt)
v0.74.0: oxfmt v0.74.0Compare Source
🐛 Bug Fixes
e236de0formatter_tests: Skip conformance spec calls with non-literal options (#27957) (leaysgur)782ab6elinter: Search string values without UTF-8 conversion (#26716) (Dunqing)a5d8184jsdoc: Parse code spans after quotes in descriptions (#27955) (leaysgur)2645d2cformatter_markdown: Treat link destinations and footnote references as opaque to code span fences (#27948) (leaysgur)4d8195cformatter_yaml: Keep a root plain scalar starting with a document marker verbatim (#27947) (leaysgur)529b057formatter_core: Keep front matter verbatim when body starts with indented delimiter (#27946) (leaysgur)c22a9b2formatter: Treat static block with only empty statements as empty (#27945) (leaysgur)d3ff3f6formatter/jsdoc: Write descriptions as written to not close the comment (#27823) (leaysgur)c4c1727formatter/sort_imports: Keep comments after the last import (#27822) (leaysgur)a64677eformatter: Print JSDoc embedded snippets with LF (#27821) (leaysgur)2c1cc20formatter: Keep comment only Vue bindings as-is (#27820) (leaysgur)1bf236dformatter/sort_imports: Do not use comments as import source (#27819) (leaysgur)52ee29dformatter_yaml: Never start col-0 line with document marker or BOM (#27818) (leaysgur)81c75e7formatter/css: Keep glued css-in-js statement placeholders glued (#27814) (leaysgur)a1ef7f4formatter: Keep typecast parens in same-operator binary and arrow chain (#27812) (leaysgur)de110ceformatter: Keep more parens aroundTSInstantiationExpression(#27811) (leaysgur)8b02e90formatter_json: Reject invalid JSON instead of dropping them (#27785) (leaysgur)6fe4c1bformatter: Treat lone CR in JSX text and argument blank lines (#27780) (leaysgur)5605362oxfmt: Validate editorconfig as like oxfmtrc (#27778) (leaysgur)5b2acb0formatter_core: Report error position releative to CRLF source (#27777) (leaysgur)c78e80eformatter_core: Report parse error positions relative to the BOM-headed source (#27776) (leaysgur)3a980c9formatter_toml: Handle BOM like other languages (#27775) (leaysgur)97c9fc4oxfmt: Handle BOM in config JSON (#27774) (leaysgur)28eb4a7oxfmt: Print trailing newline for--list-different(#27773) (leaysgur)d2bea21formatter: Glue comments to an opener in empty for-head slots and array holes (#27737) (leaysgur)6a95ec1formatter: Keep comment position on holey array (#27730) (leaysgur)54769daformatter: Break after dangling line comment in holey array (#27729) (leaysgur)99077efformatter_json: Reject unary expressions other than signed numbers (#27728) (leaysgur)22cd4cdformatter_json: Handle holey array and comments (#27727) (leaysgur)644ca1cformatter: Do not indent logical chains whose right sides all inline (#27667) (leaysgur)a07a0fbformatter: Wrap comment-only JSX expression container in a group (#27666) (leaysgur)⚡ Performance
e220293formatter: Check only the operator suppression mark inis_quiet(#27952) (leaysgur)e5fdc9cformatter_core: Write into one element stack through a concreteFormatter(#27559) (leaysgur)a342f7eformatter: Skip comment handling for nodes with no comment near them (#27557) (leaysgur)d8ce750formatter: Write string literals with swapped quotes into the arena (#27558) (Yuji Sugiura)1c393c0formatter_core: Skip scanning texts with nothing to rewrite (#27561) (leaysgur)1d3ef10formatter_core: Keep the embedded IR when nothing in it is rewritten (#27673) (leaysgur)📚 Documentation
1325225oxfmt: Update useless comment prefix (#27956) (leaysgur)d0dd140formatter: Note lossy cooked round-trip in template embeds (#27944) (leaysgur)8a3a6c8oxfmt: Update stale notes on the JSDoc string-out channel and fixture origins (#27824) (leaysgur)v0.73.0Compare Source
🚀 Features
a495e82oxfmt: Supportassociationsconfig to specify language over filepath (#27437) (leaysgur)5db28faoxfmt: Support Astro viaprettier-plugin-astro@1.x(#27386) (leaysgur)📚 Documentation
408d87foxfmt: Simplify oxfmtrc docs (#27432) (leaysgur)902e188oxfmt: Update howembeddedLanguageFormattingoption works (#27362) (leaysgur)oxc-project/oxc (oxlint)
v1.89.0Compare Source
🐛 Bug Fixes
9a424c2oxlint,oxfmt: Correct Node.js TypeScript support range (#27699) (camc314)v1.88.0Compare Source
🚀 Features
3c361a7linter/unicorn/prefer-query-selector: AddallowWithVariablesoption (#27346) (Mikhail Baev)pnpm/pnpm (pnpm)
v11.28.7: pnpm 11.28.7Compare Source
This release rejects registry metadata that names a different package than the one requested, applies
trustPolicyto the pnpm version a project pins, and caps unpacked package size withmaxTarballUnpackedSize. It also removes support for registry revisions, fixesverifyDepsBeforeRunafter filtered installs, and finishes commands with their own exit code when a pipe reader exits early.Patch Changes
Security
pnpm now fails with
ERR_PNPM_REGISTRY_NAME_MISMATCHif a registry returns metadata for a package other than the one requested. Before, pnpm installed the package under the name in the metadata, soallowBuildsrules for the requested package did not apply to it.pnpm now applies
trustPolicyto the pnpm version a project pins inpackageManagerordevEngines.packageManager. A pinned version whose trust evidence was downgraded fails the command before pnpm switches to it or records it in the lockfile #16319.minimumReleaseAgeExcludePruneandtrustPolicyExcludePrunenow keep exclusions for resolved configuration dependencies and their transitive dependencies #17142.Added the
maxTarballUnpackedSizesetting.pnpm installfails withERR_PNPM_TARBALL_TOO_LARGEwhen the files of one package unpack to more than this many bytes, 4 GiB by default pnpm/tasks#81.Resolving dependencies
Registry revisions are no longer supported. pnpm now fails with
ERR_PNPM_REGISTRY_REVISIONS_UNSUPPORTEDon registry metadata that selects a revision, on a+rNversion specifier, and on a lockfile entry with arevisionfield.pnpm update --patchesis removed.When
pnpm installresolves a dependency again, it now reuses a version that the install already resolved for the same package, as a fresh install does. Before, it kept the version the lockfile pinned and added a second copy of the package. A locked version still stays when nothing else in the install prefers another version. To pin a transitive dependency on purpose, useoverrides#17084.When another workspace project adds a different version of a package, a project's auto-installed peer on that package now moves to the version a fresh install picks. It used to stay on its locked version while any other project still accepted that version #17058.
An optional peer that pnpm adds to a project now keeps the version the lockfile recorded for that project only while the dependency graph still holds it. Otherwise it follows its provider to a version the graph holds. Before, pnpm kept a higher version that only the lockfile held, which left two copies of the peer #16443.
A package that lists the same dependency in
dependenciesand as an optional peer now gets the peer bound when a project adds a provider for it later. The lockfile now records every peer a package declares, including one its own dependency supplies #17056.pnpm install --prodno longer drops a dependency that a package declares both as an optional peer and as its own dependency, when the package resolved it as its own dependency and a dev dependency provides the same package under another alias.pnpm now measures a
pnpm.overridesentry written as aworkspace:path, such asworkspace:./packages/foo, from the directory holdingpnpm-workspace.yaml. It used to be measured from each package the override rewrote. The install then linked a directory that does not exist, or failed if workspace packages were injected #17010.pnpm installnow removes config dependencies that are no longer declared, including when the entireconfigDependenciessetting is removed. Frozen installs reject a lockfile that still records removed config dependencies.pnpm addnow reads the package name correctly from a tarball URL under a registry URL that has a path, such ashttps://example.com/npm/. Before, the registry path became part of the name, so a scoped package failed withERR_PNPM_INVALID_PACKAGE_NAME.pnpm addno longer warns that a gist dependency was replaced from a different source when the new specifier names the same gist in another form, such asgist:<id>andhttps://gist.github.com/<user>/<id>.With
minimumReleaseAgeset, pnpm now revalidates a package's cached full metadata with a single ETag request so an unchanged registry answers with304, and keeps using the cached copy once the registry confirms it is current, even when the metadata does not list a publish time for every version. Previously, pnpm downloaded that metadata again whenever the cached copy was older thanminimumReleaseAge. Packages listed inminimumReleaseAgeExcludealso resolve from cached metadata without a registry request when the lockfile already has the version their range picks.Linking node_modules and workspaces
Concurrent installs that import the same package into one project now all complete. One of them used to fail with
ENOTEMPTYwhen its copy of the package collided with the copy another install had already placed pnpm/tasks#48.pnpm installno longer fails on macOS withEISDIRwhen it creates store directories in a group-writable store under a umask that removes owner read, such as0o477.pnpm installnow succeeds whennode_modulesis a symlink to an existing directory. Dependency hoisting previously rejected a symlinkednode_modulesas an invalid destination #17157.A filtered
pnpm install --no-lockfilewithhoistWorkspacePackagesnow hoists every workspace project intonode_modules/.pnpm/node_modules. It used to hoist only the selected projects pnpm/tasks#168.Filtered installs remove obsolete dependencies from the installed lockfile while preserving dependencies still needed by unselected projects.
With
sharedWorkspaceLockfile: false,pnpm installnow runs thepreResolutionhooks and custom resolvers and fetchers of the workspace root's pnpmfile for every project, next to the project's own. A global pnpmfile now runs once per project, and each project's lockfile records the checksum of the root pnpmfile when the project has none of its own. Before, a project's own pnpmfile replaced these root hooks, the global hooks ran twice, and edits to the root pnpmfile could go unnoticed.pnpm prunenow removes extraneous direct packages fromnode_moduleswhenpackage.jsonandpnpm-lock.yamlare already in sync.pnpm prunealso accepts--filterand--recursiveto prune selected workspace projects without removing dependencies of unselected projects.Injected workspace packages
pnpm install --frozen-lockfilenow fails withERR_PNPM_OUTDATED_LOCKFILEwhen the dependencies of an injected workspace package or local directory dependency no longer match the lockfile. This coverssharedWorkspaceLockfile: false#17008, a dependency changed to a different tarball URL or git commit #17129, and a change in a transitive injected or local directory dependency #17128.pnpm install --frozen-lockfileno longer fails withERR_PNPM_OUTDATED_LOCKFILEwhen an injected workspace package depends on a local directory under another name, such as"renamed": "file:../b"#17130.An injected workspace dependency now becomes a link when its dependencies match the workspace package's own, also on an install that leaves the package's installed dependencies as they are. Before, such an install kept it as a copy #17094.
An injected workspace package that was linked now becomes a copy when the project that depends on it starts providing one of its peers at a version the package's own workspace context lacks. The link used to stay until that dependency was updated, so the package could not find the peer the project provides #17057.
An injected workspace package now keeps only the files its manifest lists after a lifecycle script or a script named in
syncInjectedDepsAfterScriptsrebuilds it. Before, these refreshes copied every file of the package directory into the injected copy, including files thatfilesor.npmignoreleave out. WithdeployAllFiles: truethe copy still gets every file.A script listed in
syncInjectedDepsAfterScriptsnow keeps a package's links to its own files as links in the injected copies, the waypnpm installwrites them. It no longer fails when the package links to one directory twice or links back to a directory above the link.pnpm installwithdeployAllFilesno longer fails on such a link back either.A script listed in
syncInjectedDepsAfterScriptsnow updates the injected copies of the package it ran in whensharedWorkspaceLockfileisfalseor the package publishes frompublishConfig.directory. Before, those copies kept the files from the last install.Running scripts and checking dependencies
When the reader of pnpm's output exits early, as in
pnpm outdated | head, pnpm now finishes the command and exits with the command's own exit code pnpm/tasks#133. It used to exit with code 0 at the first write to the closed pipe. That hid the result of commands such aspnpm outdatedand stoppedpnpm cleanbefore it removed anything.With
enableGlobalVirtualStore, a Node.js resolve hook that a script registers now sees the importer ascontext.parentURLafter pnpm'sNODE_PATHfallback fails to find a bare specifier. Hooks that resolve tsconfigpathsaliases from the importer failed withERR_MODULE_NOT_FOUND#16979.pnpm run,pnpm exec, andpnpm restartnow pass the install flags they were given, such as--lockfile-dir,--modules-dir,--store-dir,--offline, and--ignore-scripts, to thepnpm installthatverifyDepsBeforeRun: installstarts. When that install leavesnode_modulesout of date, pnpm now prints a warning.After
pnpm install --filter,pnpm runandpnpm execnow notice a changed manifest or lockfile in a project that the filtered install left out, including the workspace root after a filtered install withpruneDirectDependencies: truepnpm/tasks#181. A filtered install also preserves the recorded ignored build scripts of unselected projects, andpnpm dedupe --checkandpnpm install --dry-runno longer record outdated dependencies as installed.The
verifyDepsBeforeRuncheck now holds the workspace projects that the selected project depends on, includinglink:workspace dependencies.--filter=<project>...now selectslink:dependencies as well. WithsharedWorkspaceLockfile: false,verifyDepsBeforeRunalso reports dependencies as outdated when a selected project'spnpm-lock.yamlis missing pnpm/tasks#138.verifyDepsBeforeRunand repeatpnpm installruns now applyoverridesbefore comparing a modifiedpackage.jsonwithpnpm-lock.yaml#17127.verifyDepsBeforeRunalso checks whether each importer's resolved catalog versions match the catalog snapshot inpnpm-lock.yaml, and respectslockfileDirin single-project repositories.verifyDepsBeforeRunnow compares manifests, lockfiles, and patch files by content hash. It notices an edit that kept the file's modification time, ascp -p,rsync -a, or an archive extraction leave it, and a patch file that was copied or touched without changing its content no longer marks dependencies as outdated #16988.Deploying and other commands
pnpm deploynow records the peer dependencies of the workspace packages it copies into the deployed lockfile. Before, pnpm rejected that lockfile with--frozen-lockfilewhen a deployed workspace package declared a peer andinjectWorkspacePackageswas off #17093.pnpm install --frozen-lockfileandverifyDepsBeforeRunnow succeed inside a directory created bypnpm deploy.pnpm deploywrites self-contained workspace and lockfile settings, prunes unusedpatchedDependencies, and preserves workspace-level dependency resolutions on deployed directory dependencies.In workspaces with
sharedWorkspaceLockfile: false,pnpm patch,pnpm patch-commit, andpnpm patch-removenow resolve patch files andpatchedDependenciesentries at the workspace root.pnpm installchecks configured patches across all workspace projects before reporting unused patches.Trusted publishing with OIDC now works with registries whose URL has a path, such as
https://registry.example/npm/private/. pnpm previously sent the token exchange request to the root of the registry host.pnpm owner lsnow lists the owners of a package on the npm registry. It reported every package as not found.pnpm sbomnow reads project lockfiles in workspaces withsharedWorkspaceLockfile: false, including filtered and split output, and reports the repository of a package whoserepositoryfield is agist:shorthand.pnpm licenses listreports no licenses for workspace projects not recorded in the lockfile. It errors whenpnpm-lock.yamlis missing. Empty results now use the requested text or JSON format pnpm/tasks#174.pnpm whynow reads each selected workspace project's lockfile and modules directory whensharedWorkspaceLockfileisfalsepnpm/tasks#169.pnpm pkg fixnow converts arepositorystring such asgithub:pnpm/exampleto the object form, asnpm pkg fixdoes. It also normalizes a GitHub, GitLab, or Bitbucket repository URL the waynpm pkg fixdoes #16980.Configuration and setting up pnpm
pnpm now recognizes
externalDependenciesandautoInstallPeersFromHighestMatchinpnpm-workspace.yamlwithout warning and forwards both settings topnpm install. Previously, settingexternalDependenciesinpnpm-workspace.yamlwithnodeLinker: hoistedcrashedpnpm installwithexternalDependencies.has is not a functionpnpm/tasks#166.pnpm now ignores a
PNPM_CONFIG_*environment variable for a URL setting, such asPNPM_CONFIG_REGISTRY, when its value is not a URL. Such a value used to make every command fail withInvalid URL.The warning about unrecognized settings in
pnpm-workspace.yamland the globalconfig.yamlnow namesaddMissingPeerTypes,autoDedupe,bootConfig,macosBackup,nodePackageMap,permissions,pipelineBase,publishWaitTimeout,python,remoteCache,saveTypes,skills,storeIndexFormat, andtoolsas pnpm v12 settings pnpm/tasks#167.When a config file has a setting pnpm cannot read,
pnpm --versionnow prints the version, andpmOnFailandlockfileDirinpnpm-workspace.yamlstay in force. Previously, pnpm switched to the pinned version despitepmOnFail: ignore. pnpm also no longer writes the pinned version topnpm-lock.yamlwhen it cannot read every setting and the running pnpm already matches the pin.pnpm now records the pinned pnpm version in the
pnpm-lock.yamlunder thelockfileDirset inpnpm-workspace.yaml, and resolves a relativelockfileDirfrom the workspace root. pnpm used to write a secondpnpm-lock.yamlat the workspace root.pnpm self-updatenow updates the project's pnpm pin when Homebrew installed pnpm or Corepack runs it. The global pnpm is left alone #17001.pnpm setupnow completes when Windows registry environment values cannot be read or written. It prints PowerShell commands to configurePNPM_HOMEandPATHwithout registry access #17167.pnpm setupnow succeeds when it cannot tell which shell configuration file to update, for example in a container whereSHELLis not set. It installs pnpm and prints thePNPM_HOMEandPATHlines to add yourself. Previously it failed withERR_PNPM_UNKNOWN_SHELL, and so did the installer script at get.pnpm.io #16973.Platinum Sponsors
Gold Sponsors
v11.28.6: pnpm 11.28.6Compare Source
This release stops
pnpm publishfrom sending a CI identity token to a registry it was not issued for. It also fixes installs that dropped a dependency also declared as an optional peer, and accepts emptyhttpProxyandhttpsProxysettings again.Patch Changes
Security
pnpm publishnow uses anNPM_ID_TOKENonly if itsaudclaim matches the selected registry, such asnpm:registry.npmjs.org. A token for another registry is skipped with a warning, and pnpm falls back to the configured credentials.The warning about renamed package files with invalid names no longer prints control characters from those file names.
Configuration
pnpm again accepts
httpProxyandhttpsProxyset tonullor written with no value inpnpm-workspace.yamland the global config file, and treats them as unset. Since 11.28.5 these values failed withERR_PNPM_INVALID_SETTING.pnpm now switches to the pnpm version a project pins even when it cannot read its configuration. Previously, a setting it rejected in the global config file, an
.npmrcfile,_auth, orpnpm-workspace.yamlstopped every command,pnpm --versionincluded.A key under a registry URL in the
_authsetting that does not start with@is now skipped with a warning, so a field a later pnpm version adds there no longer breaks this one. A key that holds anauthTokenobject but lacks its@, such asorgfor@org, is still an error.Resolving dependencies
pnpm no longer drops a dependency that a package also declares as an optional peer dependency, for example
ajvofajv-formats. Since 11.28.0, in some dependency graphs the package got the dependency neither as a dependency nor as a peer, and failed to import it #16901.pnpm installno longer fails withERR_PNPM_NO_MATCHING_VERSIONafter a change tooverrideswhen the lockfile resolves an optional peer dependency to an npm alias of another package #16654.pnpm installandpnpm dedupenow link an optional peer to the workspace package that the workspace root depends on when the picked version matches it. Previously they installed the registry package with the same name and version #16706.Removal overrides such as
"debug>supports-color": "-"now also apply to an optional peer that a package declares only inpeerDependenciesMeta#16681.pnpm dedupenow preserves a hoisted workspace package when another package uses a separately installed peer with the same name #16935.pnpm installandpnpm add --confignow applyminimumReleaseAgewhen they resolve a config dependency. A config dependency range resolves to the newest version that is old enough, so a later cleanpnpm install --frozen-lockfileaccepts the lockfile #16660.pnpm install --fix-lockfileno longer removes thedeprecatedandhasBinfields from lockfile entries #6600.Workspaces and catalogs
A filtered install, such as
pnpm install --filter <pkg>, now keeps thepnpm-lock.yamlentries of workspace projects that are missing from disk, as in a sparse checkout. Their importers, packages, and catalog entries stay even when the filter matches every project on disk #16931.catalogPruneno longer removes catalog entries thatpnpm-lock.yamlstill records for workspace projects missing from disk. This affectedpnpm removeand installs that leave the lockfile unchanged, such as frozen installs. Before, a following frozen install failed withERR_PNPM_LOCKFILE_CONFIG_MISMATCH#16679.Sped up workspace discovery with subtree exclusions such as
!generated/**.Linking node_modules
pnpm installno longer fails on Windows withEPERMonrmdir node_modules/@scopewhen several workspace packages under one scope are hoisted, for example withnodeLinker: hoisted#16690.pnpm installhardlinks files from a group-writable or world-writable store again. Before this fix, pnpm copied every file from such a store intonode_modules#16677.With
enableGlobalVirtualStore, an install that updatesnode_modulesnow restores the dependency links of a package in the global virtual store that an interrupted install left without them. Before, such an install kept the incomplete package if the project'snode_modulesalready recorded it #16642.Removing a
link:dependency now also removes its symlink fromnode_moduleswhennodeLinkerishoisted#16884.An install that adds nothing to the store no longer changes the modification time of the store directory. CI caches that check modification times, such as GitLab's, no longer re-upload an unchanged store #16929.
Injected workspace packages
With
sharedWorkspaceLockfile: false, an injected workspace package installed in the same run as its dependent now holds only the files itsfilesfield selects. The copy used to also hold other files of the project, such astsconfig.json#16683.A script listed in
syncInjectedDepsAfterScriptsno longer fails when it rewritespackage.jsonwhile pnpm is copying its edits into the injected copies. The sync after the script now replaces a half-copied manifest.Sped up frozen installs of unchanged injected workspace packages that use hardlinks.
Deploying
pnpm deploywithoutinjectWorkspacePackagesnow binds a peer dependency of a linked workspace package to the version its parent provides, as an injected install does. Previously the deploy failed withERR_PNPM_DEPLOY_AMBIGUOUS_PEERwhenever other packages in the deployed graph depended on different versions of that peer #16807.pnpm deployin a workspace withinjectWorkspacePackagesno longer crashes when a linked workspace package declares a peer dependency named after anObject.prototypemember, such asconstructor.Setting up pnpm
pnpm now relinks the bins of a pnpm version it installed earlier for
packageManagerorpnpm with. A pnpm 12 version installed by a pnpm release older than 11.28.4 could keep a launcher that rannodeon the native binary, so every command failed withSyntaxError: Invalid or unexpected token#16646.pnpm setupno longer tries to install pnpm globally from npm'sbindirectory when pnpm was installed with npm. It printedFailed to create bin at <PNPM_HOME>/bin/pnpm#16855.Output
Escape codes in script output that moved the cursor or cleared the screen garbled pnpm's output. pnpm now drops them and keeps only color codes. Color codes are dropped too when pnpm's own output is not in color.
When the registry rejects
pnpm stage publish, the error message now starts with "Failed to stage package".Platinum Sponsors
Gold Sponsors
v11.28.5: pnpm 11.28.5Compare Source
This release reads cached registry metadata faster and makes
pnpm config get --globalignore project settings. It also carries several security fixes for package archives, git dependencies, and config dependencies.Patch Changes
Security
pnpm now verifies locked config dependencies against their registry before installing them. Config dependencies must come from an npm registry. The lockfile can no longer replace the integrity of a config dependency pinned with
version+integrity.Lockfile verification now checks the tarballs inside a
variationsresolution against the registry. Aname@versionlockfile entry with an emptyvariationsresolution is now rejected.pnpm audit signaturesnowConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, 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.