UNPKG

@cordxapp/lintydeps

Version:

Finds and reports missing or unused dependencies and dev dependencies

73 lines 3.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const logger_1 = require("../utils/logger"); const status_1 = require("../utils/status"); const depcheck_1 = __importDefault(require("depcheck")); let BUILD_FAILED = { state: 'failed', message: 'Unable to lint dependencies,' }; let BUILD_PASSED = { state: 'passed', message: 'All dependencies are up to date,' }; let BUILD_PENDING = { state: 'pending', message: 'Checking dependencies, please wait...' }; const lintydeps = async (rootPath, config) => { logger_1.logger.process(`Analysing dependencies in ${rootPath}...`); await (0, status_1.buildStatus)(BUILD_PENDING); (0, depcheck_1.default)(rootPath, config, async (unused) => { const invalidFiles = Object.keys(unused.invalidFiles); const invalidDirs = Object.keys(unused.invalidDirs); const missingDependencies = Object.keys(unused.missing); const unusedDependencies = unused.dependencies; const unusedDevDependencies = unused.devDependencies; if (unusedDependencies.length) { logger_1.logger.error(`\n ${unusedDependencies.length} Unused Dependencies: Declared in the package.json file, but not used by any code.`); unusedDependencies.forEach((fileName) => { console.log(' -- ', fileName); }); BUILD_FAILED.message = `(${unusedDependencies.length}) Unused dependencies found.`; await (0, status_1.buildStatus)(BUILD_FAILED); throw new Error(BUILD_FAILED.message); } else { logger_1.logger.success('\n✓ No unused dependencies found.'); } if (unusedDevDependencies.length) { logger_1.logger.error(`\n ${unusedDevDependencies.length} Unused Dev Dependencies: Declared in the package.json file, but not used by any code.`); unusedDevDependencies.forEach((fileName) => { console.log(' -- ', fileName); }); BUILD_FAILED.message = `(${unusedDevDependencies.length}) Unused dev dependencies found.`; await (0, status_1.buildStatus)(BUILD_FAILED); throw new Error(BUILD_FAILED.message); } else { logger_1.logger.success('\n✓ No unused dev dependencies found.'); } if (missingDependencies.length) { logger_1.logger.error(`\n ${missingDependencies.length} Missing Dependencies: is used somewhere in the code, but not declared in the package.json file.`); missingDependencies.forEach(fileName => { console.log(' -- ', fileName); }); BUILD_FAILED.message = `(${missingDependencies.length}) Missing dependencies found.`; await (0, status_1.buildStatus)(BUILD_FAILED); throw new Error(BUILD_FAILED.message); } else { logger_1.logger.success('\n✓ No missing dependencies found.'); } if (invalidFiles.length) { logger_1.logger.warning(`\nFailed to parse ${invalidFiles.length} files`); invalidFiles.forEach(fileName => { console.log(' -- ', fileName); }); } if (invalidDirs.length) { logger_1.logger.warning(`Failed to parse ${invalidDirs.length} directories`); invalidDirs.forEach(fileName => { console.log(' -- ', fileName); }); } await (0, status_1.buildStatus)(BUILD_PASSED); }); }; exports.default = lintydeps; //# sourceMappingURL=lintydeps.js.map