Changelog

pnpm/pnpm · · 21 commits

pnpm lands import and install speedups

New import behavior, audit resilience, compatibility fixes, and several resolver/install performance wins shipped today.

pnpm import now preserves source lockfile versions (everett19924f98dbd)

pnpm import now reads versions from package-lock.json, npm-shrinkwrap.json, or yarn.lock and uses them as preferred versions when generating pnpm-lock.yaml. It also imports every workspace project into the shared lockfile and now errors instead of silently generating a fresh lockfile when no source lockfile exists or yarn.lock fails to parse.

pnpm audit --fix update keeps going when no safe version exists (zkochan1a7e720)

When a dependency range contains only vulnerable versions, audit --fix update no longer aborts the whole run. pnpm now updates what it can and leaves the unresolved advisories reported as remaining.

pnpm install skips redundant work on warm global virtual store restores (zkochanc1cef52)

Restoring a deleted node_modules from a warm global virtual store no longer re-links slots that are already fully present. That removes a big source of reinstall slowness after wipes, especially on filesystems where symlink storms are expensive.

pnpm install now ignores stale build markers outside the current lockfile (zkochan68e582b)

Build-marker checks are now scoped to the exact slots used by the current lockfile, so markers in sibling dependency-graph hashes no longer trigger unnecessary rebuilds. The fix also aligns Node-version selection for marker probes with installability constraints and avoids extra hashing/discovery work on repeat installs.

Unchanged local tarballs stay on the fast path (zkochanb82d1ba)

Repeat installs now recognize unchanged file: tarball dependencies as reusable instead of forcing a full re-resolve. That lets pnpm preserve the “Already up to date” fast path even when local tarball deps are present.

pnpm 11 compatibility is restored for native pnpm 12 installs (zkochan58779a3)

The pnpm 12 wrapper now keeps its placeholder shebang-less so pnpm 11 can still install future pnpm 12 versions through the version store. This repairs the handoff between old shims and the native binary that was broken by the newer placeholder layout.

Global shims survive pnpm 12.2 → 12.3 upgrades (zkochan9273144)

pnpm now recognizes the legacy --shim invocation path before native dispatch and migrates the global bin directory on first launch. That keeps self-updated global commands working across the shim protocol change.

Resolver and workspace discovery got faster (zkochanaacd005, zkochandc81bf1, zkochan27654d7, zkochan543c857)

Several hot paths were optimized: subtree metadata warmup now recurses, workspace project discovery avoids directory enumeration and extra stats, link-anchor rendering uses cheaper string-suffix math, and per-edge resolver allocations were trimmed. Together these cut CPU and I/O overhead in large installs and resolution-heavy workspaces.

Other misc changes

  • Release/changelog updates for pacquet 12.3.1 and 12.3.2
  • Dependency bumps and workspace metadata updates
  • Docs and changelog text tweaks
  • Small test updates and internal refactors