Reimplementei em Bun + TypeScript um script Python que resume a estrutura de um projeto e o conteúdo dos arquivos.
Referências originais
- Como fazer um LLM ler o código-fonte de um repositório inteiro
- Um script Python que resume automaticamente a estrutura do projeto e o conteúdo dos arquivos para jogar tudo no Claude 3
Motivação e contexto
- Não tenho muita afinidade com Python
- Queria praticar a reimplementação em JS/TS de algo escrito por outra pessoa em outra linguagem
- Tenho familiaridade razoável com JS e TS
- Queria um CLI que reunisse o conteúdo do repositório em um único arquivo para LLMs
- Queria transformá-lo em um binário portátil executável em qualquer plataforma
Código-fonte
Stack técnica
| Linguagem | TypeScript |
| Gerenciador | Bun |
| Runtime JS | Bun |
| Linter/Formatter | Biome |
| Editor | VS Code |
Ponto difícil / pendência
Tive dificuldade para reproduzir exatamente o comportamento que eu queria com a API Glob nativa do Bun e acabei recorrendo ao minimatch.
Pontos principais da implementação
- Single File Executable: usar a opção
--compiledo Bun para gerar um binário executável - Processamento de glob: filtrar arquivos com minimatch
- Saída para LLM: reunir a estrutura do projeto e o conteúdo dos arquivos em um único arquivo markdown
Resumo
Reimplementar o script Python me ajudou a aprofundar meu entendimento de TypeScript e Bun.
Como a ferramenta pode ser distribuída como binário executável, não é preciso instalar Node.js, o que facilita o uso entre plataformas.
Se você quiser fazer um LLM ler um repositório inteiro, esta ferramenta facilita a geração do contexto necessário.
hsb.horse