nx/scripts/depcheck/discrepancies.ts
2022-09-15 12:54:15 -06:00

33 lines
918 B
TypeScript

import * as chalk from 'chalk';
import { satisfies } from 'semver';
// Ignore packages that are defined here per package
const IGNORE_MATCHES = {
'*': [],
angular: ['webpack-merge', '@phenomnomnominal/tsquery'],
cypress: ['webpack', '@babel/core', 'babel-loader'],
};
export default function getDiscrepancies(
name: string,
projectDependencies: JSON,
devDependencies: JSON
) {
return Object.keys(projectDependencies)
.filter((p) => !p.startsWith('@nrwl/') && p !== 'nx')
.filter((p) =>
!IGNORE_MATCHES['*'].includes(p) && IGNORE_MATCHES[name]
? !IGNORE_MATCHES[name].includes(p)
: true
)
.filter(
(p) =>
devDependencies[p] &&
projectDependencies[p] !== devDependencies[p] &&
!satisfies(devDependencies[p], projectDependencies[p])
)
.map(
(p) => `${p}@${devDependencies[p]} ${chalk.dim(projectDependencies[p])}`
);
}