|
| 1 | +--- |
| 2 | +date: 2026-06-14 |
| 3 | +repo: pnpm/pnpm |
| 4 | +size: L |
| 5 | +title: "Pacquet gets faster, safer, and more consistent" |
| 6 | +excerpt: "Big pnpm/pacquet updates: end-to-end delegation, Windows fixes, auth scoping, and a real speedup for failed exits." |
| 7 | +commits: 20 |
| 8 | +authors: [zkochan, tsushanth, davidbarratt, dasa, felipecrs, mcmxcdev, kimulaco, AhmedBaset] |
| 9 | +commit_authors: {"a6d485a": zkochan, "3a27141": davidbarratt, "5f63458": zkochan, "74a2dc9": zkochan, "23716ed": felipecrs, "0fe6ea9": zkochan, "7cdf9f8": mcmxcdev, "681b593": zkochan, "2da0444": kimulaco, "ab0b7d1": AhmedBaset, "baf1502": zkochan} |
| 10 | +--- |
| 11 | + |
| 12 | +### **pnpm install can now delegate resolution to pacquet too** (74a2dc9) |
| 13 | +When `pacquet` is configured in `configDependencies` and is new enough, pnpm no longer has to resolve the graph itself first — pacquet can resolve, write `pnpm-lock.yaml`, and materialize `node_modules` in one pass. That reduces duplicated work on non-frozen installs and makes the Rust engine the primary install path when available. |
| 14 | + |
| 15 | +### **Scope-specific registry auth tokens are now supported** (681b593) |
| 16 | +pnpm can now pick auth tokens by both registry URL and package scope, so different orgs on the same registry can use different credentials. This fixes a real limitation for registries that issue per-scope tokens, and `pnpm login --scope` now writes the matching scoped auth entry. |
| 17 | + |
| 18 | +### **Windows failed commands exit faster instead of hanging** (5f63458) |
| 19 | +A failed pnpm command on Windows could stall for tens of seconds while enumerating descendant processes during error cleanup. The lookup is now bounded, which avoids the long exit hang and also unblocks Windows CI suites that were getting stuck. |
| 20 | + |
| 21 | +### **Lockfile and pacquet Windows install tests are stabilized** (a6d485a) |
| 22 | +pnpm now waits for lockfile reads to close deterministically and aligns pacquet’s virtual store length handling with pnpm on Windows. It also forwards the effective virtual-store max length into delegated pacquet installs, preventing mismatched `.modules.yaml` output on Windows. |
| 23 | + |
| 24 | +### **Locked peer pinning no longer leaks across siblings** (3a27141) |
| 25 | +A pinned locked peer provider could bleed into sibling resolution when the node had no children of its own, making lockfile output depend on resolution order. The fix scopes the pinned state to the current node, eliminating intermittent `pnpm dedupe --check` failures. |
| 26 | + |
| 27 | +### **Pacquet preserves executable files on copy fallback** (2da0444) |
| 28 | +When pacquet fell back to copying instead of hardlinking/reflinking, executable binaries could lose their exec bit and fail to spawn with `EACCES`. The copy path now preserves executable status based on CAFS path metadata, fixing a class of CI and overlayfs install failures. |
| 29 | + |
| 30 | +### **Pacquet now matches pnpm’s lockfile and metadata behavior more closely** (baf1502) |
| 31 | +This is a broad correctness pass over pacquet’s resolver and installer behavior, including syncing package-manager dependency metadata, better optional-dependency and platform handling, and improved mirror/cache support. It narrows the remaining gaps between pacquet and pnpm, especially for installs that depend on exact lockfile output. |
| 32 | + |
| 33 | +### **Lifecycle scripts now preserve user-defined `npm_config_*` env vars** (23716ed) |
| 34 | +pnpm previously stripped all `npm_config_*` environment variables during lifecycle execution, which also removed user-provided settings like `npm_config_platform_arch`. The env filter now keeps user-defined config vars while still stripping auth-related ones. |
| 35 | + |
| 36 | +### **`pnpm publish` now forwards `strictSsl` correctly** (7cdf9f8) |
| 37 | +Publishing to self-signed or otherwise non-standard registries now respects `strictSsl: false` from config. That restores parity with npm registry fetch behavior and fixes publishes that were failing behind custom certificate setups. |
| 38 | + |
| 39 | +### **`pnpm setup` skips unnecessary `@pnpm/exe` build scripts** (0fe6ea9) |
| 40 | +The standalone executable’s self-install path no longer triggers `preinstall`/`prepare` scripts for `@pnpm/exe`. That avoids a pointless build-approval prompt and makes setup workable on hosts without Node tooling. |
| 41 | + |
| 42 | +### **`pnpm link` gains `--trust-lockfile`** (ab0b7d1) |
| 43 | +`pnpm link` now accepts the same trust-lockfile flag that other install flows already support. This brings the command in line with the rest of pnpm’s install surface. |
| 44 | + |
| 45 | +### Other misc changes |
| 46 | +- CI performance upload / bencher workflow updates (4 commits) |
| 47 | +- AI review guidance and config docs tweaks (1 commit) |
| 48 | +- Interactive prompt summary and test determinism fixes (2 commits) |
| 49 | +- Windows test workflow cache and setup adjustments (2 commits) |
| 50 | +- Lockfile stream close fix in `lockfile.fs` (1 commit) |
| 51 | +- View command tarball size calculation fix (1 commit) |
0 commit comments