Change8

Migrating to pnpm v11.0.0-alpha.15

Version v11.0.0-alpha.15 introduces 15 breaking changes. This guide details how to update your code.

Released: 3/15/2026

15
Breaking Changes
12
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`rc files configuration loading`.npmrc` in workspace projects`onlyBuiltDependencies``onlyBuiltDependenciesFile``neverBuiltDependencies``ignoredBuiltDependencies``allowBuilds``allowNonAppliedPatches``allowUnusedPatches``ignorePatchFailures``pnpm server``useNodeVersion``executionEnv.nodeVersion``devEngines.runtime``engines.runtime``hooks.fetchers``fetchers` field in `pnpmfile``pnpm init` default type`pnpm link <pkg-name>``pnpm link --global``pnpm link` (no arguments)`pnpm add -d``pnpm add -p``PNPM_CONFIG_OTP``NPM_CONFIG_OTP`

Breaking Changes

Issue #1

The `pnpm config get` command (without `--json`) now outputs JSON for objects/arrays and raw strings for primitives, instead of INI formatted text. Use `pnpm config get --json` if you require JSON output for all types.

Issue #2

The `pnpm config list` command now outputs a JSON object instead of INI formatted text.

Issue #3

Configuration keys shown by `pnpm config list` and `pnpm config get` (without argument) are now camelCased, except for keys starting with @ or //.

Issue #4

pnpm no longer loads non-auth and non-registry settings from rc files. These settings must now be defined in `pnpm-workspace.yaml`.

Issue #5

Workspace project specific `.npmrc` files are replaced by the `packageConfigs` field in `pnpm-workspace.yaml`.

Issue #6

Deprecated build dependency settings (`onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies`) are removed. Use the `allowBuilds` setting instead.

Issue #7

The deprecated `allowNonAppliedPatches` setting is completely removed; use `allowUnusedPatches` instead.

Issue #8

The `ignorePatchFailures` setting is removed; all patch application failures will now throw an error.

Issue #9

The `pnpm server` command has been removed.

Issue #10

Support for `useNodeVersion` and `executionEnv.nodeVersion` fields is removed. Use `devEngines.runtime` and `engines.runtime` instead.

Issue #11

Support for `hooks.fetchers` is removed. Use the new API via the `fetchers` field of `pnpmfile`.

Issue #12

The default value for the `type` field in projects initialized by `pnpm init` is now `module`.

Issue #13

`pnpm link <pkg-name>` no longer resolves packages from the global store; only relative or absolute paths are accepted. Use `pnpm link ./foo` instead of `pnpm link foo`.

Issue #14

`pnpm link --global` is removed. Use `pnpm add -g .` to register a local package's bins globally.

Issue #15

`pnpm link` (no arguments) is removed. Use `pnpm link <dir>` instead.

Migration Steps

  1. 1
    If you relied on the output format of `pnpm config get` (without `--json`), update scripts to handle JSON output or use `pnpm config get --json`.
  2. 2
    Review configuration settings in rc files and move non-auth/non-registry settings to `pnpm-workspace.yaml`.
  3. 3
    Replace workspace project specific `.npmrc` files with configuration defined in the `packageConfigs` field of `pnpm-workspace.yaml`.
  4. 4
    Replace usage of deprecated build dependency settings (`onlyBuiltDependencies`, etc.) with the `allowBuilds` map in configuration.
  5. 5
    Remove usage of `allowNonAppliedPatches`; use `allowUnusedPatches` if necessary.
  6. 6
    Remove usage of `ignorePatchFailures`; ensure patches are applied correctly or handle resulting errors.
  7. 7
    Replace usage of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime` in configuration.
  8. 8
    Replace usage of `hooks.fetchers` with the new API using the `fetchers` field of `pnpmfile`.
  9. 9
    Update scripts that rely on `pnpm link <pkg-name>` to use paths, e.g., `pnpm link ./path/to/pkg`.
  10. 10
    Replace `pnpm link --global` with `pnpm add -g .`.
  11. 11
    Remove calls to `pnpm link` without arguments; use `pnpm link <dir>` instead.
  12. 12
    If using OTP with `pnpm publish`, change environment variable from `NPM_CONFIG_OTP` to `PNPM_CONFIG_OTP`.

Release Summary

This release introduces major architectural changes to the pnpm store, moving to SQLite for indexing and isolating global packages for better stability. Configuration handling has been significantly overhauled, moving away from rc files and standardizing output formats.

Need More Details?

View the full release notes and all changes for pnpm v11.0.0-alpha.15.

View Full Changelog