Vai al contenuto
verdict:

pnpm 11.12.0

notable

note: la sintesi e le note di rilascio sono in inglese

ok: aggiornamento sicuro

0 breaking changes5 punti chiave

pnpm 11.12.0 adds a delegate return form for custom fetchers and fixes several peer dependency and filter bugs.

sintesi · solo dalle note di rilascio · claude-haiku-5-5 · prompt v7

punti chiave

release-notesgithub.com/pnpm/pnpm · 128 righe
  1. ## Minor Changes
  2. * a897ef7: Custom fetchers exported from a pnpmfile can now delegate by returning a `{ delegate: <resolution> }` envelope: pnpm rewrites the package's resolution to the delegated shape and runs the built-in fetcher on it. This is the portable delegation form that also works in pacquet, where `cafs` and `fetchers` cannot be passed to the hook. Related to [pnpm/pnpm#11685](https://github.com/pnpm/pnpm/issues/11685).
  3. ## Patch Changes
  4. * 2b02764: The changed-packages filter (`--filter "...[<since>]"`) no longer allows an option-like `<since>` value (such as `--output=<path>`) to be interpreted as a git option — git now rejects it as a bad revision. The repository root is also resolved to the nearest `.git` entry, so the filter works in a git worktree checked out inside another repository's tree.
  5. * 43711ce: `pnpm outdated` no longer checks the registry for dependencies that are resolved from local `link:`, `file:`, or `workspace:` references in the lockfile [#12827](https://github.com/pnpm/pnpm/issues/12827).
  6. * 3c6718b: Fixed a deadlock in peer dependency resolution: `pnpm install` hung forever when a peer dependency cycle spanned a project's own dependencies and auto-installed peer providers, for example when installing `electron-builder@26.15.3` [#12921](https://github.com/pnpm/pnpm/issues/12921).
  7. * 252f15e: Fixed peer dependency auto-install picking a version the peer range rejects. In a workspace with several projects, a package declaring a peer dependency with a semver range (for example `^1.0.0`) could get the highest version found anywhere in the workspace (for example a `2.0.0` resolved for another project) instead of a version that satisfies the range. Peers are now deduplicated onto the highest preferred version that satisfies the declared range, and when none does, the range is resolved from the registry.
  8. Also fixed re-resolving with an existing lockfile hoisting a different peer version than a fresh install of the same manifest: root dependencies reused from the lockfile were invisible to peer hoisting, so a peer that a root dependency provides could be bound to another version.
  9. * a38adda: `pnpm self-update <version>` now installs the requested pnpm version when it matches the currently running version but is missing from the global self-update directory.
  10. * 6a85968: `pnpm stage list` now stops paginating after a fail-safe cap of 1000 pages, so a misbehaving registry cannot keep the command looping forever.
  11. * eee7c9a: `verify-deps-before-run` no longer spawns a `pnpm install` when pnpm is executed in a directory that has no `package.json`. A mistyped command run outside a project (for example `pnpm witch 10 login`) used to crash with a confusing error from the spawned install; now it fails with the regular "no package.json found" error.
  12. <!-- sponsors -->
  13. ## Platinum Sponsors
  14. <table>
  15. <tbody>
  16. <tr>
  17. <td align="center" valign="middle">
  18. <a href="https://bit.cloud/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a>
  19. </td>
  20. </tr>
  21. <tr>
  22. <td align="center" valign="middle">
  23. <a href="https://openai.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  24. <picture>
  25. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/openai_dark.svg" />
  26. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/openai_light.svg" />
  27. <img src="https://pnpm.io/img/users/openai_dark.svg" width="160" alt="OpenAI" />
  28. </picture>
  29. </a>
  30. </td>
  31. </tr>
  32. </tbody>
  33. </table>
  34. ## Gold Sponsors
  35. <table>
  36. <tbody>
  37. <tr>
  38. <td align="center" valign="middle">
  39. <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  40. <picture>
  41. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
  42. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
  43. <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
  44. </picture>
  45. </a>
  46. </td>
  47. <td align="center" valign="middle">
  48. <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  49. <picture>
  50. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
  51. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
  52. <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
  53. </picture>
  54. </a>
  55. </td>
  56. <td align="center" valign="middle">
  57. <a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a>
  58. </td>
  59. </tr>
  60. <tr>
  61. <td align="center" valign="middle">
  62. <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  63. <picture>
  64. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
  65. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
  66. <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
  67. </picture>
  68. </a>
  69. </td>
  70. <td align="center" valign="middle">
  71. <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  72. <picture>
  73. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
  74. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
  75. <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
  76. </picture>
  77. </a>
  78. </td>
  79. <td align="center" valign="middle">
  80. <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  81. <picture>
  82. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
  83. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
  84. <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
  85. </picture>
  86. </a>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td align="center" valign="middle">
  91. <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  92. <picture>
  93. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
  94. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
  95. <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
  96. </picture>
  97. </a>
  98. </td>
  99. <td align="center" valign="middle">
  100. <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank" rel="noopener noreferrer">
  101. <picture>
  102. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
  103. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
  104. <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
  105. </picture>
  106. </a>
  107. </td>
  108. </tr>
  109. </tbody>
  110. </table>
  111. <!-- sponsors end -->

vedi su githubimported 2026-09-28 via npm