[rush] strictPeerDependencies are on, but do not complain if internal (inter-subspace) peers are missing
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- nodejs, typescript
- Ambito
- build-system, tooling
Direzione di ricerca
Reproduce the issue with rush update using common/config/rush/pnpm-config.json, subspaces/sdk/pnpm-config.json, and the package-a, package-b, and package-c package.json files. Start by tracing how Rush handles strictPeerDependencies across subspaces and workspace injection. Done means the missing made-up-package peer is reported for both package B and package C.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Imagine a rush.js managed monorepo, with two subspaces, default and sdk.
strictPeerDependencies are on, in both the global config and both subspace configs.
BUT
Imagine packages A, B, C
Package A has a peerDependency for "madeUpPackage". Package A is in the SDK subspace.
Package B consumes package A. Package B does not have madeUpPackage installed. Package B is in the SDK subspace.
Package C consumes package A. Package C does not have madeUpPackage installed. Package C is in the default subspace.
When I run rush update, only complains on Package C.
But how do I make it complain about missing peer from perspective of package B
Repro steps
Expected result: rush install/update command failed
Actual result: rush install pass correctly
Details
Reproduction Setup
Monorepo Structure
monorepo/
├── rush.json
├── common/
│ └── config/
│ └── rush/
│ └── pnpm-config.json # Global config
├── subspaces/
│ ├── default/
│ │ └── pnpm-config.json # Default subspace config
│ └── sdk/
│ └── pnpm-config.json # SDK subspace config
└── packages/
├── package-a/package.json # SDK subspace - declares peerDependency
├── package-b/package.json # SDK subspace - consumes A, missing peer
└── package-c/package.json # default subspace - consumes A, missing peer
Configuration
common/config/rush/pnpm-config.json (Global):
{
"useWorkspaces": true,
"strictPeerDependencies": true
"alwaysInjectDependenciesFromOtherSubspaces": true,
}
subspaces/sdk/pnpm-config.json:
{
"useWorkspaces": true,
"strictPeerDependencies": true
}
Package Definitions
packages/package-a/package.json (SDK subspace):
{
"name": "@myorg/package-a",
"version": "1.0.0",
"devDependencies": {
"made-up-package": "^2.0.0"
},
"peerDependencies": {
"made-up-package": "^2.0.0"
}
}
packages/package-b/package.json (SDK subspace):
{
"name": "@myorg/package-b",
"version": "1.0.0",
"devDependencies": {
"@myorg/package-a": "workspace:*"
// ❌ "made-up-package" is NOT installed - should trigger error
}
}
packages/package-c/package.json (deafult subspace):
{
"name": "@myorg/package-c",
"version": "1.0.0",
"devDependencies": {
"@myorg/package-a": "workspace:*"
// ❌ "made-up-package" is NOT installed - should trigger error
}
}
Expected Behavior
Running rush update should fail and report missing peer dependencies for both Package B and Package C:
ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies
@myorg/package-b
└─┬ @myorg/package-a
└── ✕ missing peer made-up-package@^2.0.0
@myorg/package-c
└─┬ @myorg/package-a
└── ✕ missing peer made-up-package@^2.0.0
Actual Behavior
Running rush update only complains about Package C:
ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies
@myorg/package-c
└─┬ @myorg/package-a
└── ✕ missing peer made-up-package@^2.0.0
Package B is silently ignored, even though it has the exact same missing peer dependency.
Standard questions
Please answer these questions to help us investigate your issue more quickly:
| Question | Answer |
|---|---|
@microsoft/rush globally installed version? |
5.158.1 |
rushVersion from rush.json? |
5.158.1 |
pnpmVersion, npmVersion, or yarnVersion from rush.json? |
[email protected] |
(if pnpm) useWorkspaces from pnpm-config.json? |
yes |
| Operating system? | Mac |
| Would you consider contributing a PR? | yes |
Node.js version (node -v)? |
22.13.0 |
- Lingua principale
- TypeScript
- Stelle
- 6.5k
- Fork
- 708
- Merge medio
- 4g 13h
- PR unite (30g)
- 62
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/rushstack
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
microsoft/rushstack#5971 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
microsoft/rushstack#5902 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
microsoft/rushstack#5839 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
microsoft/rushstack#5683 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di microsoft/rushstack
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
diegosouzapw/OmniRoute#14869 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 94/100
I maintainer di solito rispondono entro 1 giorno
-
status: waiting triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
freeCodeCamp/freeCodeCamp#70412 ·
I maintainer di solito rispondono entro 1 giorno
-
Mend: dependency security vulnerability untriaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
opensearch-project/OpenSearch-Dashboards#12816 ·
I maintainer di solito rispondono entro 1 giorno