123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import { basename } from 'node:path';
- import * as p from 'picocolors';
- import { getDepsCount } from './get-deps-count';
- import { getRecursiveFileList } from './get-recursive-file-list';
- export function commandCheck(path = '.') {
- const files = getRecursiveFileList(path).filter((file) => basename(file) === 'package.json');
- const depsCounter = getDepsCount(files);
- const single: string[] = [];
- const multiple: string[] = [];
- Object.keys(depsCounter)
- .sort()
- .map((pkg) => {
- const versions = depsCounter[pkg];
- const versionMap = Object.keys(versions).sort();
- const versionsLength = versionMap.length;
- if (versionsLength === 1) {
- const count = versions[versionMap[0]].length;
- single.push(`${p.green('✔')} ${pkg}@${versionMap[0]} (${count})`);
- return;
- }
- const versionCount: { version: string; count: number }[] = [];
- for (const version of versionMap) {
- versionCount.push({ version, count: versions[version].length });
- }
- versionCount.sort((a, b) => b.count - a.count);
- multiple.push(`${p.yellow('⚠')} ${pkg} has ${versionsLength} versions:`);
- for (const { count, version } of versionCount) {
- multiple.push(` - ${p.bold(version)} (${count})`);
- }
- });
- for (const string of [...single.sort(), ...multiple]) {
- console.log(string);
- }
- }
|