UNPKG

dependency-smell-reporter

Version:

A CLI tool that detects unused, outdated, and missing dependencies with reporting.

63 lines (51 loc) 1.71 kB
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 };