deadcode
Version:
Deadcode shows you source files that are not required
150 lines (116 loc) • 5.34 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _commander = _interopRequireDefault(require("commander"));
var _chalk = _interopRequireDefault(require("chalk"));
var _index = _interopRequireDefault(require("./index"));
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var list = function list(arg) {
return arg.split(",");
};
_commander["default"].version("0.3.5").option("-c, --config <config>", "Config file", function (entry) {
return JSON.parse(_fs["default"].readFileSync(_path["default"].resolve(process.cwd(), entry), "utf-8"));
}).option("-e, --entry <entry>", "Entry point files", list).option("-i, --ignore <ignore>", "Files to ignore (glob pattern(s))", list).option("-s, --src <src>", "Files to check (glob pattern(s))", list).option("--list-all", "Display all dependencies lists").option("--list-dynamic", "Display dynamic dependencies list").option("--list-found", "Display found dependencies lists").option("--list-ignored", "Display ignored dependencies list").option("--list-unparsed", "Display unparsed dependencies list").option("--list-unresolved", "Display unresolved dependencies list").parse(process.argv);
var cwdPackage;
try {
cwdPackage = JSON.parse(_fs["default"].readFileSync(_path["default"].resolve(process.cwd(), "./package.json"), "utf8"));
} catch (_unused) {
cwdPackage = {};
}
var fileConfig = _commander["default"].config || {};
var packageConfig = cwdPackage.deadcode || {};
var config = {
include: _commander["default"].src || fileConfig.src || packageConfig.src,
entry: _commander["default"].entry || fileConfig.entry || packageConfig.entry,
ignore: _commander["default"].ignore || fileConfig.ignore || packageConfig.ignore
};
if (!config.entry) {
if (cwdPackage.main) {
config.entry = "./".concat(cwdPackage.main);
} else {
console.error("No entrypoint found");
process.exit(1);
}
}
var traversedCursor = 0;
var onTraverseFile = function onTraverseFile(filename) {
process.stdout.clearLine();
process.stdout.cursorTo(0);
process.stdout.write("".concat(_chalk["default"].blue("info"), " ").concat(++traversedCursor, " files traversed"));
};
var willTraverseFiles = function willTraverseFiles() {
process.stdout.write("".concat(_chalk["default"].blue("info"), " 0 files traversed"));
};
var didTraverseFiles = function didTraverseFiles() {
process.stdout.clearLine();
process.stdout.cursorTo(0);
};
var logInfo = function logInfo(title) {
console.log(_chalk["default"].blue("info"), title);
};
var logWarning = function logWarning(title) {
console.warn(_chalk["default"].yellow("warning"), title);
};
var logSuccess = function logSuccess(title) {
console.log(_chalk["default"].green("success"), title);
};
var logDependencyItem = function logDependencyItem(dependency, key, list) {
console.log(list.length - 1 === key ? "└─" : "├─", dependency);
};
(0, _index["default"])((0, _objectSpread2["default"])({
onTraverseFile: onTraverseFile
}, config)).then(function (_ref) {
var deadFiles = _ref.deadFiles,
dependencies = _ref.dependencies,
dynamicDependencies = _ref.dynamicDependencies,
unparsedDependencies = _ref.unparsedDependencies,
unresolvedDependencies = _ref.unresolvedDependencies,
ignoredDependencies = _ref.ignoredDependencies;
didTraverseFiles();
logInfo("".concat(dependencies.length, " dependencies found"));
if (_commander["default"].listAll || _commander["default"].listFound) {
dependencies.map(logDependencyItem);
}
if (dynamicDependencies.length) {
logWarning("".concat(dynamicDependencies.length, " files with dynamic dependencies found"));
if (_commander["default"].listAll || _commander["default"].listDynamic) {
dynamicDependencies.map(logDependencyItem);
}
} else {
logSuccess("0 dynamic dependencies found");
}
if (ignoredDependencies.length) {
logWarning("".concat(ignoredDependencies.length, " ignored dependencies found"));
if (_commander["default"].listAll || _commander["default"].listIgnored) {
ignoredDependencies.map(logDependencyItem);
}
} else {
logSuccess("0 ignored dependencies");
}
if (unparsedDependencies.length) {
logWarning("".concat(unparsedDependencies.length, " unparsed dependencies found"));
if (_commander["default"].listAll || _commander["default"].listUnparsed) {
unparsedDependencies.map(logDependencyItem);
}
} else {
logSuccess("0 unparsed dependencies found");
}
if (unresolvedDependencies.length) {
logWarning("".concat(unresolvedDependencies.length, " unresolved dependencies"));
if (_commander["default"].listAll || _commander["default"].listUnresolved) {
unresolvedDependencies.map(logDependencyItem);
}
} else {
logSuccess("0 unresolved dependencies");
}
console.log("");
if (deadFiles.length) {
logWarning(_chalk["default"].bold("".concat(deadFiles.length, " dead files found")));
deadFiles.map(logDependencyItem);
} else {
logSuccess(_chalk["default"].bold("0 dead files found"));
}
process.exit(deadFiles.length ? 1 : 0);
})["catch"](console.log);