I have looked through the docs and related issues but didn't find anything that quite matches this issue.
Summary
Until pnpm 10 we could use the unsupportedPackageJsonSettings.pnpm.* in the pnpm-config.json to specify supportedArchitectures, but under pnpm 11, it no longer has an effect. Rush still copies it into the pnpm field of common/temp/package.json, but pnpm 11 no longer reads it. pnpm only prints a warning (see below) and rush install succeeds but the native dependencies are not installed.
Repro steps
-
rushVersion 5.179.0, pnpmVersion 11.26.0, useWorkspaces: true.
-
In common/config/rush/pnpm-config.json:
"unsupportedPackageJsonSettings": {
"pnpm": { "supportedArchitectures": { "libc": ["current", "musl"] } }
}
-
Add a dependency with native extensions such as @statsig/statsig-node-core
-
rush install
Expected result: pnpm applies supportedArchitectures as it did with pnpm 10. Failing that, Rush should warn or fail because the setting cannot take effect.
Actual result: rush install runs successfully, and pnpm prints:
[WARN] The "pnpm" field in package.json is no longer read by pnpm. The following keys were ignored: "pnpm.supportedArchitectures". See https://pnpm.io/settings for the new home of each setting.
Details
environmentVariables in pnpm-config.json cannot be used for this either. pnpm 11 does not parse an object setting from pnpm_config_supported_architectures or npm_config_supported_architectures, so pnpm config get supported-architectures returns undefined. It only reads the setting from pnpm-workspace.yaml.
Proposed solutions:
- Add a sibling escape hatch like
unsupportedPackageJsonSettings but for pnpm-workspace.yaml.
- Add a first-class
supportedArchitectures field to pnpm-config.json.
- Separately, warn loudly when
unsupportedPackageJsonSettings.pnpm is non-empty under pnpm >= 11.
As a workaround, we use a local Rush plugin that appends the key to common/temp/pnpm-workspace.yaml in beforeInstall. However it does not apply to the installs that rush add/rush remove run, because those installs do not fire plugin hooks (see: #5168).
Standard questions
| Question |
Answer |
@microsoft/rush globally installed version? |
5.179.0 |
rushVersion from rush.json? |
5.179.0 |
pnpmVersion, npmVersion, or yarnVersion from rush.json? |
pnpm@11.26.0 |
(if pnpm) useWorkspaces from pnpm-config.json? |
true |
| Operating system? |
Mac and Linux |
| Would you consider contributing a PR? |
Yes |
Node.js version (node -v)? |
24.20.0 |
I have looked through the docs and related issues but didn't find anything that quite matches this issue.
Summary
Until pnpm 10 we could use the
unsupportedPackageJsonSettings.pnpm.*in thepnpm-config.jsonto specifysupportedArchitectures, but under pnpm 11, it no longer has an effect. Rush still copies it into thepnpmfield ofcommon/temp/package.json, but pnpm 11 no longer reads it. pnpm only prints a warning (see below) andrush installsucceeds but the native dependencies are not installed.Repro steps
rushVersion5.179.0,pnpmVersion11.26.0,useWorkspaces: true.In
common/config/rush/pnpm-config.json:Add a dependency with native extensions such as
@statsig/statsig-node-corerush installExpected result: pnpm applies
supportedArchitecturesas it did with pnpm 10. Failing that, Rush should warn or fail because the setting cannot take effect.Actual result:
rush installruns successfully, and pnpm prints:Details
environmentVariablesinpnpm-config.jsoncannot be used for this either. pnpm 11 does not parse an object setting frompnpm_config_supported_architecturesornpm_config_supported_architectures, sopnpm config get supported-architecturesreturnsundefined. It only reads the setting frompnpm-workspace.yaml.Proposed solutions:
unsupportedPackageJsonSettingsbut forpnpm-workspace.yaml.supportedArchitecturesfield topnpm-config.json.unsupportedPackageJsonSettings.pnpmis non-empty under pnpm >= 11.As a workaround, we use a local Rush plugin that appends the key to
common/temp/pnpm-workspace.yamlinbeforeInstall. However it does not apply to the installs thatrush add/rush removerun, because those installs do not fire plugin hooks (see: #5168).Standard questions
@microsoft/rushglobally installed version?rushVersionfrom rush.json?pnpmVersion,npmVersion, oryarnVersionfrom rush.json?useWorkspacesfrom pnpm-config.json?node -v)?