nx/scripts/depcheck.js
Tasos Bekos b11a50f9a0 cleanup(repo): add packages to dependency lists in package.json
This commit also adds a dependency check tool.
2020-09-14 13:07:45 -04:00

65 lines
1.5 KiB
JavaScript

const argv = require('yargs')
.usage('Check projects for dependency discrepancies.')
.option('projects', {
alias: 'p',
type: 'array',
description: 'Projects to check',
})
.option('verbose', {
alias: 'v',
type: 'boolean',
description: 'Run with verbose logging',
}).argv;
const depcheck = require('depcheck');
const { readFileSync, readdirSync } = require('fs');
const path = require('path');
const chalk = require('chalk');
const options = {
skipMissing: false, // skip calculation of missing dependencies
ignorePatterns: ['*.spec*'],
};
const packagesDirectory = path.join(__dirname, '..', 'packages');
const projects =
argv.projects ||
readdirSync(packagesDirectory, { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name);
projects.forEach((project) => {
const projectPath = path.join(packagesDirectory, project);
const projectPackageJson = JSON.parse(
readFileSync(`${projectPath}/package.json`)
);
depcheck(
projectPath,
{ ...options, ...{ dependencies: projectPackageJson.dependencies } },
({
dependencies,
devDependencies,
missing,
using,
invalidFiles,
invalidDirs,
}) => {
const keys = Object.keys(missing).sort();
if (keys.length > 0) {
console.log(
`\n${chalk.bold.inverse(` ${project.toUpperCase()} `)}\n${chalk.bgRed(
'Missing'
)}: ${keys.join(` | `)}`
);
if (argv.verbose) {
console.log(missing);
}
}
}
);
});