UNPKG

@nntdgrss/node-modules-cleaner

Version:

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

88 lines (87 loc) 3.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Progress = void 0; const cli_progress_1 = __importDefault(require("cli-progress")); const chalk_1 = __importDefault(require("chalk")); const file_utils_1 = require("../utils/file.utils"); /** * Класс для отображения прогресса операций в консоли */ class Progress { /** * Создание и старт прогресс-бара * @param total - общее количество операций * @param message - сообщение прогресс-бара */ static start(total, message) { // Очищаем консоль для лучшего отображения console.clear(); this.bar = new cli_progress_1.default.SingleBar({ format: `${message} |${chalk_1.default.cyan("{bar}")}| {percentage}% | {value}/{total} | {size}`, barCompleteChar: "█", barIncompleteChar: "░", hideCursor: true, clearOnComplete: true, }); this.bar.start(total, 0, { size: "0 Б" }); } /** * Обновление прогресса * @param current - текущий прогресс * @param size - обработанный размер (в байтах) */ static update(current, size = 0) { if (this.bar) { this.bar.update(current, { size: file_utils_1.FileUtils.formatSize(size) }); } } /** * Остановка прогресс-бара */ static stop() { if (this.bar) { this.bar.stop(); } } /** * Группировка node_modules по размеру * @param sizes - массив размеров в байтах * @returns объект с группами */ static getSizeGroup(size) { const GB = 1024 * 1024 * 1024; const MB = 1024 * 1024; if (size >= GB) { return { color: chalk_1.default.red, label: "Очень большой" }; } else if (size >= 100 * MB) { return { color: chalk_1.default.yellow, label: "Большой" }; } else if (size >= 10 * MB) { return { color: chalk_1.default.blue, label: "Средний" }; } else { return { color: chalk_1.default.green, label: "Малый" }; } } /** * Форматирование текста с цветом в зависимости от размера * @param text - текст для форматирования * @param size - размер в байтах * @returns отформатированный текст */ static colorizeBySize(text, size) { const { color } = this.getSizeGroup(size); return color(text); } /** * Очистка консоли */ static clearConsole() { console.clear(); } } exports.Progress = Progress;