@cordxapp/lintydeps
Version:
Finds and reports missing or unused dependencies and dev dependencies
73 lines • 3.71 kB
JavaScript
;
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