repo-tools: fix peer-deps check to skip unreferenced dependencies

The peer-deps verification was requiring all tracked peer dependencies
(including react-router-dom) for every package that references any of
them. Now it only requires a peer dependency if the package actually
references it or if it belongs to a group containing a referenced dep.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
This commit is contained in:
Patrik Oldsberg
2026-04-13 00:53:54 +02:00
parent 90d8bfcfd3
commit 377de3645f
2 changed files with 20 additions and 0 deletions
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': patch
---
Fixed the `peer-deps` command to only require peer dependencies that are actually referenced by each package, rather than requiring all tracked peer dependencies for every package with any React dependency.
@@ -143,7 +143,22 @@ export default async ({ fix }: { fix: boolean }) => {
for (const pkg of packagesWithRelevantDependencies) {
const packageJson = pkg.packageJson as ExtendedPackageJSON;
const expectedPeerDeps = getExpectedPeerDependencies(packageJson);
const allDeps = {
...packageJson.dependencies,
...packageJson.devDependencies,
...packageJson.peerDependencies,
};
for (const dep of Object.keys(peerDependencies)) {
const isReferencedInPackage = !!allDeps[dep];
const isInGroupWithReferencedDep = groupsOfPeerDependencies.some(
group =>
group.includes(dep) && group.some(groupDep => !!allDeps[groupDep]),
);
if (!isReferencedInPackage && !isInGroupWithReferencedDep) {
continue;
}
// Validate that the peer dependencies are present.
if (isPeerDependency(dep, packageJson)) {
if (isOptional(dep) && !isMarkedAsOptional(dep, packageJson)) {