dependency-smell-reporter
Version:
A CLI tool that detects unused, outdated, and missing dependencies with reporting.
63 lines (51 loc) • 1.71 kB
JavaScript
const chalk = require("chalk");
const fs = require("fs");
const path = require("path");
function printReport(report) {
const {
unused,
missing,
outdated,
largeNodeModules,
usingTooMany
} = report;
if (unused.length) {
console.log(chalk.yellow("⚠️ Unused Dependencies"));
unused.forEach(dep => console.log(` - ${dep}`));
console.log();
}
if (missing.length) {
console.log(chalk.red("⚠️ Missing Dependencies"));
missing.forEach(dep => console.log(` - ${dep}`));
console.log();
}
if (outdated.length) {
console.log(chalk.cyan("⚠️ Outdated Dependencies"));
outdated.forEach(dep => console.log(` - ${dep}`));
console.log();
}
if (largeNodeModules) {
console.log(chalk.magenta(`📦 Node_modules size: ${largeNodeModules} MB`));
}
console.log(chalk.green(`📚 Total Dependencies in use: ${usingTooMany}`));
if (largeNodeModules > 200) {
console.log(chalk.red("❗ Warning: node_modules folder is unusually large!"));
}
if (usingTooMany > 80) {
console.log(chalk.red("❗ Warning: Too many dependencies may increase complexity."));
}
console.log(chalk.green("\n✅ Dependency Smell Check Complete!"));
}
function writeLogFile(report, outputPath = "dependency-smell-log.json") {
try {
const fullPath = path.join(process.cwd(), outputPath);
fs.writeFileSync(fullPath, JSON.stringify(report, null, 2), "utf-8");
console.log(chalk.gray(`📝 Log saved to ${outputPath}`));
} catch (err) {
console.error("❌ Failed to write log file:", err.message);
}
}
module.exports = {
printReport,
writeLogFile
};