Ir al contenido
verdict:

pnpm 11.3.0

notable

note: la síntesis y las notas de la versión están en inglés

note: sin síntesis para esta release más antigua

Sintetizamos las releases recientes. Las notas de la versión originales de esta versión están aquí abajo.

release-notesgithub.com/pnpm/pnpm · 116 líneas
  1. > See full [v11.0.0 changelog](https://github.com/pnpm/pnpm/releases/tag/v11.0.0)
  2. > Migration guide: [Migrating from v10 to v11](https://pnpm.io/11.x/migration)
  3. ## Minor Changes
  4. * Added `pnpm stage` with `publish`, `list`, `view`, `approve`, `reject`, and `download` subcommands for npm staged publishing.
  5. * Added a new setting `trustLockfile`. When `true`, `pnpm install` skips the supply-chain verification pass that re-applies `minimumReleaseAge` / `trustPolicy='no-downgrade'` to every entry in the loaded lockfile. The install treats the lockfile as already-trusted — useful for closed-source projects where every commit comes from a trusted author. Defaults to `false`; verification stays on by default. Set in `pnpm-workspace.yaml`.
  6. Also cut the memory footprint of the verification pass itself: the per-(registry, name) trust-meta cache previously retained the full packument — dependency graphs, scripts, README, and per-version manifests — for the entire install. On large workspaces (`~4k` lockfile entries with `minimumReleaseAge` + `trustPolicy: no-downgrade` enabled) this could OOM CI runners with a 2GB heap cap. The cache now stores only the fields the trust check actually reads (`time`, per-version `_npmUser.trustedPublisher`, `dist.attestations.provenance`). The abbreviated-metadata cache is similarly projected to just the package-level `modified` field and the set of currently-listed version names. Fixes [#11860](https://github.com/pnpm/pnpm/issues/11860).
  7. * Implemented `pnpm pkg` command natively, following `npm pkg` standards.
  8. * Implemented `pnpm repo` command natively, following `npm repo` standards.
  9. * Implemented `pnpm set-script` (alias `ss`) natively. Adds or updates an entry in the `scripts` field of the project manifest, supporting `package.json`, `package.json5`, and `package.yaml` formats.
  10. * Add a `skip-manifest-obfuscation` option for `pnpm pack` and `pnpm publish`. When enabled, the original `packageManager` field and publish lifecycle scripts are kept in the packed/published manifest instead of being stripped. The pnpm-specific `pnpm` field continues to be omitted.
  11. ## Patch Changes
  12. * Fixed `pnpm dlx` failing with `ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND` when the installed package's CAS slot is missing its `package.json`. Observed in the wild for `pnpm dlx node@runtime:<version>` when the GVS slot was populated without the synthesized manifest runtime archives need (they don't ship a `package.json` of their own, so the synthesized one is the only way it gets there; an existing slot from an earlier code path that skipped the synthesis stays incomplete). The bin link itself is wired up from the resolution and remains valid, so `dlx` now falls back to the scopeless package name when the slot's manifest is unreadable — for single-bin packages (the dlx common case, including every `runtime:` spec) this matches what `manifest.bin` would have named. Multi-bin packages already require `--package=<spec> <bin>` to disambiguate and don't enter this code path.
  13. * Fixed non-determinism in `pnpm dedupe` and `pnpm install` when a dependency graph contains packages with transitive peer dependencies on each other (e.g. `@aws-sdk/client-sts` and `@aws-sdk/client-sso-oidc`) and `auto-install-peers` is enabled. The lockfile no longer flips between two equally-valid forms across consecutive runs. The root cause was that `resolveDependencies` pushed onto its `pkgAddresses` / `postponedResolutionsQueue` arrays from inside `Promise.all`-spawned callbacks, so completion-order timing leaked into the array order and downstream cyclic-peer suffix assignment. Fixes [#8155](https://github.com/pnpm/pnpm/issues/8155).
  14. * Fixed a regression introduced by [#11711](https://github.com/pnpm/pnpm/pull/11711) where `pnpm add <github-shorthand>` (and any other wanted-dependency whose alias can't be parsed from the user-supplied spec, e.g. tarball URLs or `pnpm/test-git-fetch#sha`) was silently dropped from the manifest update and from `pendingBuilds`. The alias-keyed lookup added in that PR couldn't find a `wantedDependency` whose `alias` was `undefined` at parse time but resolved to a package name only after fetching, so the entry never made it into `specsToUpsert`. Restored the original index-based pairing between `directDependencies` and `wantedDependencies`; the catalog-protocol preservation that PR was originally fixing is unaffected because it's driven by `rdd.catalogLookup.userSpecifiedBareSpecifier`, not by the lookup. Fixes the three `rebuilds dependencies` / `rebuilds specific dependencies` / `rebuild with pending option` failures in `building/commands/test/build/index.ts`.
  15. * Fixed `pnpm add --config` leaving orphan entries in `pnpm-lock.env.yaml` (the optional subdependencies of the previously resolved version of the updated config dependency).
  16. <!-- sponsors -->
  17. ## Platinum Sponsors
  18. <table>
  19. <tbody>
  20. <tr>
  21. <td align="center" valign="middle">
  22. <a href="https://bit.cloud/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a>
  23. </td>
  24. </tr>
  25. </tbody>
  26. </table>
  27. ## Gold Sponsors
  28. <table>
  29. <tbody>
  30. <tr>
  31. <td align="center" valign="middle">
  32. <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  33. <picture>
  34. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
  35. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
  36. <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
  37. </picture>
  38. </a>
  39. </td>
  40. <td align="center" valign="middle">
  41. <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  42. <picture>
  43. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
  44. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
  45. <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
  46. </picture>
  47. </a>
  48. </td>
  49. <td align="center" valign="middle">
  50. <a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td align="center" valign="middle">
  55. <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  56. <picture>
  57. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
  58. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
  59. <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
  60. </picture>
  61. </a>
  62. </td>
  63. <td align="center" valign="middle">
  64. <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  65. <picture>
  66. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
  67. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
  68. <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
  69. </picture>
  70. </a>
  71. </td>
  72. <td align="center" valign="middle">
  73. <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  74. <picture>
  75. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
  76. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
  77. <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
  78. </picture>
  79. </a>
  80. </td>
  81. </tr>
  82. <tr>
  83. <td align="center" valign="middle">
  84. <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  85. <picture>
  86. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
  87. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
  88. <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
  89. </picture>
  90. </a>
  91. </td>
  92. <td align="center" valign="middle">
  93. <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  94. <picture>
  95. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
  96. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
  97. <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
  98. </picture>
  99. </a>
  100. </td>
  101. </tr>
  102. </tbody>
  103. </table>
  104. <!-- sponsors end -->

ver en githubimported 2026-09-28 vía npm