UNPKG

deadcode

Version:

Deadcode shows you source files that are not required

150 lines (116 loc) 5.34 kB
#!/usr/bin/env node "use strict"; 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);