v11.14.0
📦 pnpmView on GitHub →
✨ 3 features🐛 9 fixes🔧 9 symbols
Summary
This release introduces `pnpm doctor` for diagnosing installation issues and enhances `pnpm run` to support RegExp matching for scripts. It also includes numerous bug fixes, improving robustness for lockfile handling, dependency resolution, and self-updates.
Migration Steps
- Peer dependencies can now accept scheme-carrying specifiers (e.g., `<registry>:<version>`, `npm:`, `file:`, git/URL). Bare `name@version` values are still rejected.
✨ New Features
- Added `pnpm doctor` command to diagnose pnpm installation and environment issues, including version, install method, global bin directory PATH, store/cache writability, link strategies, registry connectivity, and offline file install. Each check provides fix instructions and the command exits non-zero on failure. Supports `--offline`, `--json`, and `--benchmark` flags.
- Added support for executing multiple scripts matching a RegExp passed to `pnpm run` (e.g., `pnpm run "/^build:.*/"`), running matched scripts in deterministic lexicographical order.
- Restored the `--sequential` (`-s`) CLI option for `pnpm run`, which forces `workspaceConcurrency` to 1 so that matched scripts run sequentially one by one across and within packages.
🐛 Bug Fixes
- Fixed `pnpm install` failing with `ERR_PNPM_LOCKFILE_IS_SYMLINK` when `pnpm-lock.yaml` is a symlink, allowing reading lockfiles through symlinks again. Installs that don't change the lockfile no longer rewrite it, so `--frozen-lockfile` doesn't need to write. Writing a changed lockfile through a symlink is still refused.
- Fixed frozen installs incorrectly treating equivalent Git dependency specifiers as a stale lockfile.
- `pnpm owner ls` now reports authentication and authorization failures (401/403) as dedicated errors including the registry's response body, instead of a generic message.
- Recovers from a metadata cache entry disappearing after the registry responded with `304 Not Modified` by re-requesting metadata without cache validators, instead of failing with `ERR_PNPM_CACHE_MISSING_AFTER_304`.
- Projects pinned to a broken pnpm release via `packageManager` or `devEngines.packageManager` now report the broken release and how to fix it, instead of failing during installation.
- Prevented broken-lockfile errors from including snippets of the lockfile's contents.
- `pnpm self-update` now checks if the installed version can run before making it active, discarding unusable releases with an error.
- Fixed an out-of-memory regression when workspace projects concurrently resolve a package with large registry metadata.
- Fixed `pnpm update` rewriting exact version pins using the `=` operator (e.g., `=3.5.1`) to caret ranges (`^3.5.1`). Exact pins are now preserved and written back as the bare version.