Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions scopes/dependencies/dependencies/dependencies-cmd.ts
Original file line number Diff line number Diff line change
Expand Up @@ -381,9 +381,14 @@ export class DependenciesDiagnoseCmd implements Command {
}

if (report.peerPermutations.length) {
const peerTable = borderlessTable({ head: ['Package', 'Versions'], paddingLeft: 2, paddingRight: 1 });
const peerTable = borderlessTable({
head: ['Package', 'Declared versions', 'Installed copies'],
paddingLeft: 2,
paddingRight: 1,
});
report.peerPermutations.forEach((entry) => {
peerTable.push([entry.packageName, `${entry.versions.length} (${entry.versions.join(', ')})`]);
const copies = entry.installedCopies > 0 ? String(entry.installedCopies) : chalk.dim('0 (not installed)');
peerTable.push([entry.packageName, `${entry.versions.length} (${entry.versions.join(', ')})`, copies]);
Comment thread
davidfirst marked this conversation as resolved.
});
sections.push('', chalk.bold('Peer dependencies causing permutations:'), peerTable.toString());

Expand Down
8 changes: 6 additions & 2 deletions scopes/dependencies/dependencies/dependencies.main.runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ export interface DiagnosisReport {
}>;
peerPermutations: Array<{
packageName: string;
/** declared peer-dep version ranges across components */
Comment thread
davidfirst marked this conversation as resolved.
versions: string[];
/** actual .pnpm directories for this package (0 means declared but not installed) */
installedCopies: number;
versionOrigins: VersionOrigin[];
}>;
}
Expand Down Expand Up @@ -523,7 +526,7 @@ export class DependenciesMain {
.sort((a, b) => b.installedCopies - a.installedCopies)
.slice(0, 30);

// 4. Peer deps with multiple versions
// 4. Peer deps with multiple versions, enriched with actual .pnpm copy count
const peerPermutations = Array.from(packageVersionMap.entries())
.filter(([, data]) => data.lifecycles.has('peer') && data.versions.size > 1)
.map(([pkgName, data]) => {
Expand All @@ -543,10 +546,11 @@ export class DependenciesMain {
return {
packageName: pkgName,
versions: Array.from(data.versions).sort(compareVersions),
installedCopies: pnpmPackageCopies.get(pkgName) || 0,
versionOrigins,
};
})
.sort((a, b) => b.versions.length - a.versions.length);
.sort((a, b) => b.installedCopies - a.installedCopies || b.versions.length - a.versions.length);
Comment thread
davidfirst marked this conversation as resolved.

return {
componentCount,
Expand Down
Loading