Migrating to pnpm v11.0.0-alpha.12
Version v11.0.0-alpha.12 introduces 15 breaking changes. This guide details how to update your code.
Released: 3/1/2026
⚠️ Check Your Code
If you use any of these symbols, you need to read this guide:
`pnpm config get``pnpm config list``.npmrc` (workspace specific)`packageConfigs` (in `pnpm-workspace.yaml`)`onlyBuiltDependencies``onlyBuiltDependenciesFile``neverBuiltDependencies``ignoredBuiltDependencies``allowBuilds``allowNonAppliedPatches``allowUnusedPatches``ignorePatchFailures``pnpm server``useNodeVersion``executionEnv.nodeVersion``devEngines.runtime``engines.runtime``hooks.fetchers``fetchers` (in `pnpmfile`)`pnpm init` (default type)`pnpm add` aliases (-d, -p, -o, -e)`pnpm publish``PNPM_CONFIG_OTP``NPM_CONFIG_OTP``pnpm link``pnpm add -g``pnpm dlx`Breaking Changes
●Issue #1
The `pnpm config get` command (without `--json`) now outputs JSON for objects/arrays and raw values for strings/numbers/booleans/nulls, instead of INI format. If you relied on INI output, you must now use `pnpm config get --json` or adjust parsing logic.
●Issue #2
The `pnpm config list` command now outputs a JSON object instead of INI formatted text. If you relied on INI output, you must now use `--json` or adjust parsing logic.
●Issue #3
pnpm no longer loads non-auth and non-registry settings from rc files. These settings must now be defined in `pnpm-workspace.yaml`.
●Issue #4
Workspace project specific `.npmrc` files are replaced by the `packageConfigs` field in `pnpm-workspace.yaml`. You must migrate configuration settings from `.npmrc` files to `packageConfigs` in the workspace manifest.
●Issue #5
Deprecated build dependency settings (`onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies`) are removed. Use the `allowBuilds` setting instead, which is a map defining which packages can run build scripts.
●Issue #6
The deprecated `allowNonAppliedPatches` setting is completely removed in favor of `allowUnusedPatches`. Remove all usages of `allowNonAppliedPatches`.
●Issue #7
The `ignorePatchFailures` setting is removed; all patch application failures will now throw an error.
●Issue #8
The `pnpm server` command has been removed.
●Issue #9
Support for `useNodeVersion` and `executionEnv.nodeVersion` fields in configuration is removed. Use `devEngines.runtime` and `engines.runtime` instead.
●Issue #10
`pnpm link <pkg-name>` no longer resolves packages from the global store; only relative or absolute paths are accepted (e.g., use `pnpm link ./foo`).
●Issue #11
`pnpm link --global` is removed. Use `pnpm add -g .` to register a local package's bins globally.
●Issue #12
`pnpm link` (no arguments) is removed. Use `pnpm link <dir>` with an explicit path instead.
●Issue #13
The default value for the `type` field in `package.json` initialized by `pnpm init` is now `module`.
●Issue #14
For `pnpm add` command only: `-p` is now an alias for `--save-prod` (was `--parseable`), and `-d` is now an alias for `--save-dev` (was `--loglevel=info`).
●Issue #15
The One-time Password feature for `pnpm publish` now reads from `PNPM_CONFIG_OTP` instead of `NPM_CONFIG_OTP`.
Migration Steps
- 1If you relied on INI output from `pnpm config get` or `pnpm config list`, update scripts to use `--json` or handle JSON output.
- 2Migrate configuration settings from project-specific `.npmrc` files to the `packageConfigs` section in `pnpm-workspace.yaml`.
- 3Replace usages of deprecated build dependency settings (`onlyBuiltDependencies`, etc.) with the `allowBuilds` map in configuration.
- 4Replace usages of `allowNonAppliedPatches` with `allowUnusedPatches`.
- 5Remove usages of `ignorePatchFailures` as patch failures now always throw.
- 6Replace usages of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime`.
- 7When linking packages locally, use explicit paths: change `pnpm link foo` to `pnpm link ./foo`.
- 8To register a local package's bins globally, use `pnpm add -g .` instead of the removed `pnpm link --global`.
- 9Use `pnpm link <dir>` with an explicit path instead of `pnpm link` without arguments.
- 10If relying on OTP during publish, export `PNPM_CONFIG_OTP` instead of `NPM_CONFIG_OTP`.
Release Summary
This release introduces major architectural changes focused on performance and isolation, including switching internal store formats to MessagePack, isolating global packages, and updating configuration handling. Several deprecated features and configuration options related to build dependencies and linking have been removed.
Need More Details?
View the full release notes and all changes for pnpm v11.0.0-alpha.12.
View Full Changelog