Ir al contenido
verdict:

pnpm 10.34.3

digest

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

note: sin síntesis para esta release digest

Las releases digest se listan sin síntesis. Las notas de la versión originales de esta versión están aquí abajo.

release-notesgithub.com/pnpm/pnpm · 122 líneas
  1. ### ⚠️ Security fix — environment variables in a project `.npmrc` (action may be required)
  2. Following [GHSA-3qhv-2rgh-x77r](https://github.com/pnpm/pnpm/security/advisories/GHSA-3qhv-2rgh-x77r), pnpm no longer expands `${ENV_VAR}` placeholders that come from a **repository-controlled** config file, because a malicious repository could otherwise use them to leak your environment secrets (npm tokens, CI job tokens, etc.) to an attacker-controlled registry during install. This applies to:
  3. - the project/workspace `.npmrc` — `registry`, `@scope:registry`, proxy URLs, URL-scoped keys (`//host/…`), and credential values (`_authToken`, `_auth`, `_password`, `username`, `tokenHelper`, `cert`, `key`);
  4. - registry URLs in `pnpm-workspace.yaml`.
  5. This release also closes a bypass where a project `.npmrc` could set `userconfig`, `globalconfig`, or `prefix` to make pnpm load a repo-supplied file as *trusted* config (via `@pnpm/npm-conf@3.0.3`).
  6. Environment variables are **still** expanded in trusted config: your user-level `~/.npmrc`, the global config, CLI options, and environment config.
  7. **If your authentication broke after upgrading**, move the token out of the committed `.npmrc`:
  8. ```sh
  9. # Writes to your user/global config, not the repository:
  10. pnpm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN"
  11. ```
  12. Or keep the `${NPM_TOKEN}` line but put it in your user-level `~/.npmrc` instead of the repo. In **GitHub Actions**, `actions/setup-node` with `registry-url` already writes a user-level `.npmrc`, so `NODE_AUTH_TOKEN` keeps working. For other CI where editing each pipeline is hard, set `NPM_CONFIG_USERCONFIG=.npmrc` in the CI environment to declare the project `.npmrc` trusted.
  13. See https://pnpm.io/npmrc for full migration details.
  14. ## Patch Changes
  15. * Improved the warning printed when a project `.npmrc` uses an environment variable in a registry/proxy URL or in registry credentials. The message now explains why the setting was ignored and how to migrate it to a trusted source — for example by running `pnpm config set "<key>" <value>` to store it in the global config, or by keeping the `${...}` line in the user-level `~/.npmrc` — with a link to https://pnpm.io/npmrc.
  16. * A repository-controlled project or workspace `.npmrc` can no longer redirect which files pnpm loads as its trusted user and global configuration. Previously such a file could set `userconfig`, `globalconfig`, or `prefix` to point at an attacker-supplied file shipped in the repository, and pnpm would load it as a trusted config source — bypassing the protection that prevents repository config from expanding environment variables into registry request destinations and credentials, and allowing it to set `tokenHelper`. The user/global config file locations are now resolved only from trusted sources (CLI options, environment config, the npm builtin config, and defaults) before the project and workspace `.npmrc` files are read. Fixed by upgrading `@pnpm/npm-conf` to `3.0.3`.
  17. <!-- sponsors -->
  18. ## Platinum Sponsors
  19. <table>
  20. <tbody>
  21. <tr>
  22. <td align="center" valign="middle">
  23. <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>
  24. </td>
  25. </tr>
  26. </tbody>
  27. </table>
  28. ## Gold Sponsors
  29. <table>
  30. <tbody>
  31. <tr>
  32. <td align="center" valign="middle">
  33. <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  34. <picture>
  35. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
  36. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
  37. <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
  38. </picture>
  39. </a>
  40. </td>
  41. <td align="center" valign="middle">
  42. <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  43. <picture>
  44. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
  45. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
  46. <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
  47. </picture>
  48. </a>
  49. </td>
  50. <td align="center" valign="middle">
  51. <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>
  52. </td>
  53. </tr>
  54. <tr>
  55. <td align="center" valign="middle">
  56. <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  57. <picture>
  58. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
  59. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
  60. <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
  61. </picture>
  62. </a>
  63. </td>
  64. <td align="center" valign="middle">
  65. <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  66. <picture>
  67. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
  68. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
  69. <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
  70. </picture>
  71. </a>
  72. </td>
  73. <td align="center" valign="middle">
  74. <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  75. <picture>
  76. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
  77. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
  78. <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
  79. </picture>
  80. </a>
  81. </td>
  82. </tr>
  83. <tr>
  84. <td align="center" valign="middle">
  85. <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  86. <picture>
  87. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
  88. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
  89. <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
  90. </picture>
  91. </a>
  92. </td>
  93. <td align="center" valign="middle">
  94. <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
  95. <picture>
  96. <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
  97. <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
  98. <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
  99. </picture>
  100. </a>
  101. </td>
  102. </tr>
  103. </tbody>
  104. </table>
  105. <!-- sponsors end -->

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