@nntdgrss/node-modules-cleaner
Version:
Утилита для поиска и удаления неиспользуемых node_modules директорий
92 lines (91 loc) • 3.75 kB
JavaScript
;
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);