UNPKG

@nntdgrss/node-modules-cleaner

Version:

Утилита для поиска и удаления неиспользуемых node_modules директорий

92 lines (91 loc) 3.75 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const os_1 = __importDefault(require("os")); const types_1 = require("./types/types"); const remove_command_1 = require("./commands/remove.command"); const find_command_1 = require("./commands/find.command"); const spinner_1 = require("./ui/spinner"); const program = new commander_1.Command(); // Основная информация о программе program .name("nmcleaner") .description("Утилита для поиска и удаления node_modules") .version("1.0.0"); // Команда поиска node_modules program .command("list") .description("Показать все найденные директории node_modules") .option("-p, --path <path>", "Начальная директория для поиска", os_1.default.homedir()) .option("-d, --depth <depth>", "Максимальная глубина поиска (-1 для неограниченной)", "-1") .action(async (options) => { try { await find_command_1.FindCommand.execute(options.path, parseInt(options.depth)); } catch (err) { spinner_1.Spinner.error(`Ошибка при выполнении команды: ${err}`); } }); // Команда удаления node_modules program .command("rm") .description("Удаление директорий node_modules") .option("-p, --path <path>", "Начальная директория", os_1.default.homedir()) .option("-m, --mode <mode>", "Режим удаления: all - все, unused - неиспользуемые, interactive - выборочно", "interactive") .option("--dry-run", "Тестовый режим (без реального удаления)", false) .option("--backup", "Создать резервную копию перед удалением", false) .action(async (options) => { try { let mode; switch (options.mode.toLowerCase()) { case "all": mode = types_1.RemoveMode.ALL; break; case "unused": mode = types_1.RemoveMode.UNUSED; break; case "interactive": default: mode = types_1.RemoveMode.INTERACTIVE; break; } const removeOptions = { path: options.path, mode, dryRun: options.dryRun, backup: options.backup, }; await remove_command_1.RemoveCommand.execute(removeOptions); } catch (err) { spinner_1.Spinner.error(`Ошибка при выполнении команды: ${err}`); } }); // Дефолтная команда - интерактивное удаление program.action(async () => { try { await remove_command_1.RemoveCommand.execute({ mode: types_1.RemoveMode.INTERACTIVE, dryRun: false, backup: false, }); } catch (err) { spinner_1.Spinner.error(`Ошибка при выполнении команды: ${err}`); } }); // Обработка неизвестных команд program.on("command:*", () => { spinner_1.Spinner.error("Неизвестная команда"); console.log("\nДоступные команды:"); program.commands.forEach((cmd) => { console.log(` ${cmd.name()}\t${cmd.description()}`); }); process.exit(1); }); // Запуск программы program.parse(process.argv);