[rush] pnpm 11: allow supportedArchitectures setting
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- node.js, typescript
- Domain
- build-system, tooling
Research direction
Start with pnpm-config.json handling and the generation of common/temp/package.json and common/temp/pnpm-workspace.yaml. Compare the regular install path with the rush add/remove paths and review issue #5168 about plugin hooks. Done means supportedArchitectures takes effect under pnpm 11, or Rush clearly warns or fails when the setting cannot be applied.
Written by the indexing model from the issue text.
Description
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
-
rushVersion5.179.0,pnpmVersion11.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
unsupportedPackageJsonSettingsbut forpnpm-workspace.yaml. - Add a first-class
supportedArchitecturesfield topnpm-config.json. - Separately, warn loudly when
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.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 |
- Dominant language
- TypeScript
- Stars
- 6.5k
- Forks
- 708
- Avg merge
- 5d 7h
- Merged PRs (30d)
- 44
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/rushstack
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 4/5 3-5 days Newbie friendliness 62/100
All issues in microsoft/rushstack
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
danielmiessler/LifeOS#2218 ·