Ir al contenido
verdict:

pnpm 10.34.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 · 114 líneas
  1. ## Minor Changes
  2. * Treat tarball-integrity mismatches against the lockfile as a hard failure by default. Previously, `pnpm install` (non-frozen) would log `ERR_PNPM_TARBALL_INTEGRITY`, silently re-resolve from the registry, and overwrite the locked integrity — which meant a compromised registry, proxy, or republished version could substitute attacker-controlled content on a clean machine even though the project shipped a committed lockfile.
  3. `pnpm install` now exits with `ERR_PNPM_TARBALL_INTEGRITY` and a hint pointing at the new opt-in flag.
  4. The only opt-in is **`pnpm install --update-checksums`** — narrowly scoped to refreshing the locked integrity values from what the registry currently serves. Mirrors yarn's flag of the same name. A warning still prints when the bypass takes effect so the operation is auditable.
  5. `--force` and `pnpm update` deliberately do **not** bypass the integrity check. They are routine refresh operations; silently overwriting a locked integrity in those flows would erase the protection a committed lockfile is supposed to provide. `--frozen-lockfile` behavior is unchanged. `--fix-lockfile` keeps its documented purpose (filling in missing lockfile entries) and is also not a bypass.
  6. ## Patch Changes
  7. * Pin unscoped per-registry settings (`_authToken`, `_auth`, `username`/`_password`, `tokenHelper`, inline `cert`/`key`) to the registry declared in the same config source at load time, so a later layer overriding `registry=` (workspace `.npmrc`, `pnpm-workspace.yaml`, CLI `--registry`) cannot redirect a credential or client certificate authored for a different host. A deprecation warning is emitted whenever an unscoped per-registry setting is encountered, naming the source and the URL it was pinned to. Reported by JUNYI LIU.
  8. * Fixed `minimumReleaseAge` handling when cached metadata is abbreviated. The npm registry returns abbreviated package metadata (without the per-version `time` field) by default, which made the maturity check throw `ERR_PNPM_MISSING_TIME` whenever cached abbreviated metadata was reused. pnpm now upgrades cached abbreviated metadata to the full document via a follow-up fetch when `minimumReleaseAge` is active, persists the upgrade to the on-disk cache so subsequent installs skip the extra fetch, and lets `ERR_PNPM_MISSING_TIME` from the cache fast-path fall through to the network fetch even under strict mode.
  9. * Reject git resolutions whose `commit` field is not a 40-character hexadecimal SHA before invoking `git`. A malicious lockfile could otherwise smuggle a value such as `--upload-pack=<command>` through `git fetch` / `git checkout`, which on SSH or local-file transports executes the supplied command.
  10. * Reject patch files whose `diff --git` headers reference paths outside the patched package directory. Previously a malicious `.patch` file added via a pull request could write, delete, or rename arbitrary files reachable by the user running `pnpm install`.
  11. * Fixed `--prefix=<dir>` not being honored when locating the workspace root. The `--prefix → dir` rename was applied after workspace detection, so workspace settings declared in `<dir>/pnpm-workspace.yaml` were not loaded when pnpm was invoked from outside `<dir>` [#11535](https://github.com/pnpm/pnpm/issues/11535).
  12. * Reject dependency aliases that contain path-traversal segments (such as `@x/../../../../../.git/hooks`) when reading them from a package manifest or symlinking them into `node_modules`. A malicious registry package could otherwise use a transitive dependency key to make `pnpm install` create symlinks at attacker-chosen paths outside the intended `node_modules` directory.
  13. <!-- sponsors -->
  14. ## Platinum Sponsors
  15. <table>
  16. <tbody>
  17. <tr>
  18. <td align="center" valign="middle">
  19. <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>
  20. </td>
  21. </tr>
  22. </tbody>
  23. </table>
  24. ## Gold Sponsors
  25. <table>
  26. <tbody>
  27. <tr>
  28. <td align="center" valign="middle">
  29. <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  30. <picture>
  31. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
  32. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
  33. <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
  34. </picture>
  35. </a>
  36. </td>
  37. <td align="center" valign="middle">
  38. <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  39. <picture>
  40. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
  41. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
  42. <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
  43. </picture>
  44. </a>
  45. </td>
  46. <td align="center" valign="middle">
  47. <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>
  48. </td>
  49. </tr>
  50. <tr>
  51. <td align="center" valign="middle">
  52. <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  53. <picture>
  54. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
  55. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
  56. <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
  57. </picture>
  58. </a>
  59. </td>
  60. <td align="center" valign="middle">
  61. <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  62. <picture>
  63. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
  64. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
  65. <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
  66. </picture>
  67. </a>
  68. </td>
  69. <td align="center" valign="middle">
  70. <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  71. <picture>
  72. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
  73. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
  74. <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
  75. </picture>
  76. </a>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td align="center" valign="middle">
  81. <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  82. <picture>
  83. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
  84. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
  85. <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
  86. </picture>
  87. </a>
  88. </td>
  89. <td align="center" valign="middle">
  90. <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  91. <picture>
  92. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
  93. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
  94. <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
  95. </picture>
  96. </a>
  97. </td>
  98. </tr>
  99. </tbody>
  100. </table>
  101. <!-- sponsors end -->

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