Wed Jan 07 2026

Scaf, de Scaffolding

Eu queria uma ferramenta cli bem mínima que me mostrasse a estrutura de pastas e arquivos das minhas coisas. Já existiam algumas, mas nenhuma era do jeitinho que eu mais queria. Então desenvolvi scaf, que vem de scaffolding (estrtura de construção, andaimes, em inglês). Scaf é minimalista, para uso rápido, mas também tem algumas configurações interessantes para os mais nerds fazerem uma análise um pouco mais ampla.

Como também queria algo multi-plataforma, fiz scaf baseado em nodeJs. Para instalar globalmente em sua máquina, você precisa do node e de algum gerenciador de pacotes, como o npm. Mais abaixo.

Como usar

1. Instale

npm install -g @dandesdev/scaf

De maneira alguma você precisa usar npm, sinta-se livre para usar qualquer outro gerenciador de pacotes de sua preferência.

2. Execute

Decida de onde você quer ver seu scaffolding, então, pelo terminal, vá para esse local e execute

scaf

Você deve ver todo o scaffolding se materializando bem ali diante de seus olhos. Mas pode ser tão rápido que você perca.

3. Faça mais

A partir daí, você pode fazer o uso de flags para fazer coisas mais interessantes; pedi ajuda a uma amiga IA e ela fez essas tabelas para explicar:

Tabela Completa de Flags do Scaf

Entrada e Saída

FlagDescriçãoExemploPadrão
-p, --path <dir>Diretório alvo para escanearscaf -p ./srcDiretório atual
-md, --maxdepth <n>Profundidade máxima de pastas para escanear (0 = infinito)scaf -md 3Infinito
-o <file>Salvar saída em arquivo, pode ser texto ou json. Formato é auto-detectado pela extensão (.txt, .json).scaf -o mystuff.jsonSem arquivo de saída, exibe no console
-b, --bufferedUsar modo buffered para saída de texto (constrói scaffolding completo antes de exibir) AVISO: Pode travar seu computador em estruturas muito grandes.scaf -b -o out.txtModo streaming, imprime enquanto lê, assim há um limite baixo de uso de memória.

Filtragem de Arquivos e Diretórios

FlagDescriçãoExemploPadrão
-i, --ignore <...>Padrões para ignorar (separados por espaço)scaf -i node_modules dist config.yml *.logNão ignorar nada, exceto o que é especificado em arquivos .gitignore, .dockerignore ou .scafignore, veja mais abaixo.
-ti, --typed-ignoreHabilitar modo de ignore tipado, onde arquivos não precisam ter as extensões especificadas e as pastas devem ter ”/” finais (veja tabela abaixo).scaf -ti -i node_modules/ dist/ configfalse
-n, --only <...>Mostrar apenas arquivos correspondentes aos padrões (diretórios sempre mostrados para navegação)scaf -n .ts .tsx[]
-d, --dirs-onlyExibir apenas diretórios, ocultando arquivosscaf -dfalse
--gitignore [true|false]Respeitar regras de .gitignore. Aceita valor booleano opcionalscaf --gitignore falsetrue
--dockerignoreRespeitar regras de .dockerignorescaf --dockerignoretrue
-a, --show-hiddenMostrar arquivos e pastas ocultos (dotfiles)scaf -afalse

Exibição e Formato

FlagDescriçãoExemploPadrão
--sizeExibir tamanho de cada arquivoscaf --sizefalse
--sort <type>Ordenar entradas por: name, size, datescaf --sort sizename
-q, --quietSuprimir mensagens (útil para pipelines)scaf -qfalse

Estatísticas

FlagDescriçãoExemploPadrão
--stats [mode]Exibir estatísticas básicas. Modos: console, include (em arquivo), all (ambos)scaf --stats include -o out.txtconsole
--stats-only [mode]Exibir apenas estatísticas detalhadas. Modos: strict (honra filtros) ou all (ignora filtros)scaf --stats-only allstrict

Geral

FlagDescriçãoExemploPadrão
-h, --helpExibir mensagem de ajuda e sairscaf --help-

Modo de Ignore Tipado (-ti)

Quando -ti está habilitado, padrões em -i se comportam diferentemente:

PadrãoEfeitoExemplo
nameIgnora arquivos com esse basename (qualquer extensão)scaf -ti -i index ignora index.js, index.ts
folder/Ignora pastas com esse nomescaf -ti -i bin/ ignora pasta bin/
*.Ignora todos os arquivos (deixa apenas pastas)scaf -ti -i *.
*/Ignora todas as pastas (mostra apenas arquivos na raiz)scaf -ti -i */

Importante: No modo tipado, -ti e -i são destinados a serem usados juntos, e padrões devem vir imediatamente após -i.

Arquivos de Ignore Automático

Scaf sempre carrega esses arquivos, se presentes na raiz:

ArquivoCarregado por padrão?Comentário
.scafignore✅ SempreCrie seus padrões personalizados
.gitignore✅ Com —gitignore (padrão: true)
.dockerignore✅ Com —dockerignore (padrão: true)

Dica: Use scaf —help para ver exemplos práticos e casos de uso comuns.

Entre em contato

Se você tiver ideias, críticas, amor ou ódio em relação a scaf, entre em contato. <3

Mais sobre mim