Pitch: Pumu: Liberte seu disco de dependências inchadas
O Pumu foi desenvolvido para resolver um problema comum no dia a dia de qualquer desenvolvedor: o acúmulo de pastas de dependências gigantescas que consomem GB preciosos do nosso disco rígido.
O que o Pumu faz
Ele escanea seu sistema de arquivos, identifica e gerencia pastas de dependências de diversos gerenciadores de pacotes, como node_modules (npm, Yarn, pnpm, Bun, Deno), target (Cargo - Rust), .venv (Pip - Python), entre outros. O objetivo é simples: ajudar você a recuperar espaço em disco de forma inteligente e segura.
Por que o Pumu é diferente?
existem muitas ferramentas para limpar node_modules, mas o Pumu se destaca por algumas características:
-
Velocidade e Concorrência: o pumu utiliza goroutines para escanear e deletar pastas de forma concorrente. Isso significa que ele é muito rápido, mesmo em diretórios grandes e complexos. Um sistema de semáforos garante que a concorrência seja controlada, evitando sobrecarga no sistema.
-
Detecção Inteligente: aqui ele não apenas procura por nomes de pastas. O Pumu detecta o gerenciador de pacotes correto através de arquivos de lock (
package-lock.json,yarn.lock,pnpm-lock.yaml,Cargo.toml,go.mod, etc.), garantindo que a limpeza seja contextualizada. -
Modos de Operação Seguros: Além da simples listagem (
pumu list) e deleção (pumu sweep), o Pumu oferece:- Modo Interativo: Permite que você selecione quais pastas deseja deletar através de uma interface de usuário no terminal (TUI) intuitiva, construída com
Bubble Tea. - Modo de Reparo (
pumu repair): Identifica projetos com dependências corrompidas e tenta repará-las automaticamente, removendo e reinstalando. - Modo de Poda Inteligente (
pumu prune): Este é um dos grandes diferenciais. O Pumu analisa as pastas e atribui uma "pontuação de segurança" (score) para a deleção. Por exemplo, caches de build ou pastas sem lockfile recebem pontuações altas, indicando que são seguras para remover. Isso minimiza o risco de apagar algo essencial para um projeto ativo.
- Modo Interativo: Permite que você selecione quais pastas deseja deletar através de uma interface de usuário no terminal (TUI) intuitiva, construída com
Como usar?
É bem simples. Você pode instalar via Homebrew:
brew install carlosedujs/pumu/pumu //or
brew install pumu
Ou, se preferir, via go install:
go install github.com/carlosedujs/pumu@latest
E até na pagina de releases:
https://github.com/CarlosEduJs/pumu/releases
Depois, basta rodar comandos como:
pumu list # Lista as pastas que podem ser limpas (dry-run)
pumu sweep # Deleta pastas interativamente
pumu prune # Deleta pastas com base na pontuação de segurança
pumu repair # Repara dependências corrompidas
Convido a todos para testarem, darem feedback e contribuírem com o projeto no GitHub: https://github.com/CarlosEduJs/pumu