pnpm 12 es la nueva versión estable del gestor de paquetes para Node.js y supone una reescritura completa del proyecto en Rust, según anuncia el equipo de pnpm. El lanzamiento no constituye una migración: comandos, banderas, ajustes y el formato del archivo de bloqueo de la versión 11 se conservan sin cambios, y la documentación describe ambas variantes. Mientras la rama de pnpm 11 sigue siendo la última publicada en npm, pnpm 12 se instala mediante el comando pnpm self-update next-12. Distribuidores como Homebrew, winget, Scoop y Chocolatey aún no lo ofrecen.
Entre los cambios incompatibles destacan: las dependencias Git de GitHub, GitLab y Bitbucket ahora se identifican por el repositorio y se resuelven siempre a la URL HTTPS canónica, sin registrar URLs SSH en el lockfile; los ajustes no reconocidos en pnpm-workspace.yaml pasan a notificarse, con sugerencia del nombre correcto cuando parece un error tipográfico; los ciclos de dependencias se rompen de forma canónica durante la resolución de pares, lo que convierte el lockfile en una función pura del grafo, acelera la resolución entre 2 y 3 veces en espacios de trabajo con muchos ciclos, reduce el uso de memoria alrededor del 25 % y produce un archivo de bloqueo más pequeño; en Linux, packageImportMethod: auto prioriza el hardlink frente al reflink; y la opción engineStrict deja de instalarpackages incompatibles aunque estén en subárboles opcionales.
Como novedades, pnpm 12 introduce bins globales sensibles al proyecto para node, deno y bun, ahora provistos por pnpm junto a npm, Yarn Classic, Yarn Berry, Yarn 6 y Bun con verificación de firma. También incorpora el concepto de revisiones de registro para artefactos de reemplazo, conservando el número de versión original.
