33 lines
918 B
TypeScript
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])}`
|
|
);
|
|
}
|