Change8

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

15
Breaking Changes
10
Migration Steps
27
Affected Symbols

⚠️ 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

  1. 1
    If you relied on INI output from `pnpm config get` or `pnpm config list`, update scripts to use `--json` or handle JSON output.
  2. 2
    Migrate configuration settings from project-specific `.npmrc` files to the `packageConfigs` section in `pnpm-workspace.yaml`.
  3. 3
    Replace usages of deprecated build dependency settings (`onlyBuiltDependencies`, etc.) with the `allowBuilds` map in configuration.
  4. 4
    Replace usages of `allowNonAppliedPatches` with `allowUnusedPatches`.
  5. 5
    Remove usages of `ignorePatchFailures` as patch failures now always throw.
  6. 6
    Replace usages of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime`.
  7. 7
    When linking packages locally, use explicit paths: change `pnpm link foo` to `pnpm link ./foo`.
  8. 8
    To register a local package's bins globally, use `pnpm add -g .` instead of the removed `pnpm link --global`.
  9. 9
    Use `pnpm link <dir>` with an explicit path instead of `pnpm link` without arguments.
  10. 10
    If 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