O Repomix é uma ferramenta poderosa que inclui todo o seu repositório em um único arquivo amigável à IA.
É perfeito para quando você precisa alimentar sua base de código com grandes modelos de idiomas (LLMS) ou outras ferramentas de IA como Claude, ChatGPT e Gêmeos.
Observação
Devido a considerações legais, este projeto foi renomeado de "Repopack" para "Repomix". Somente o nome está mudando; Repomix toda a funcionalidade e mantenedor (@yamadashy) permanecem os mesmos. Estamos comprometidos em garantir uma transição suave para todos os usuários.
Para continuar usando a ferramenta, basta instalar o novo pacote:
# Install new package
npm install -g repomix
# Or use directly with npx
npx repomixOpcionalmente, você também pode desinstalar o pacote antigo:
npm uninstall -g repopack Seus arquivos de configuração existentes ( repopack.config.json e .repopackignore ) continuarão trabalhando durante o período de transição.
repomix detectará automaticamente esses arquivos e oferecerá migrá -los para o novo formato ( repomix.config.json e .repomixignore ).
Agradecemos sua compreensão e cooperação durante esta transição.
Você pode tentar repomixar instantaneamente no diretório do seu projeto sem instalação:
npx repomixOu instalar globalmente para uso repetido:
# Install using npm
npm install -g repomix
# Alternatively using yarn
yarn global add repomix
# Alternatively using Homebrew (macOS)
brew install repomix
# Then run in any project directory
repomix É isso! O Repomix gerará um arquivo repomix-output.txt no seu diretório atual, contendo todo o seu repositório em um formato amigável à IA.
Para embalar todo o seu repositório:
repomixPara embalar um diretório específico:
repomix path/to/directoryPara embalar arquivos ou diretórios específicos usando padrões globais:
repomix --include " src/**/*.ts,**/*.md "Para excluir arquivos ou diretórios específicos:
repomix --ignore " **/*.log,tmp/ "Para embalar um repositório remoto:
repomix --remote https://github.com/yamadashy/repomix
# You can also use GitHub shorthand:
repomix --remote yamadashy/repomix Para inicializar um novo arquivo de configuração ( repomix.config.json ):
repomix --initDepois de gerar o arquivo embalado, você pode usá -lo com ferramentas generativas de IA como Claude, ChatGPT e Gemini.
Depois de gerar o arquivo empacotado com o REPomix, você pode usá -lo com ferramentas de IA como Claude, Chatgpt e Gemini. Aqui estão alguns exemplos de avisos para você começar:
Para uma revisão abrangente de código e refatoração de sugestões:
This file contains my entire codebase. Please review the overall structure and suggest any improvements or refactoring opportunities, focusing on maintainability and scalability.
Para gerar documentação do projeto:
Based on the codebase in this file, please generate a detailed README.md that includes an overview of the project, its main features, setup instructions, and usage examples.
Para gerar casos de teste:
Analyze the code in this file and suggest a comprehensive set of unit tests for the main functions and classes. Include edge cases and potential error scenarios.
Avalie a qualidade do código e a adesão às melhores práticas:
Review the codebase for adherence to coding best practices and industry standards. Identify areas where the code could be improved in terms of readability, maintainability, and efficiency. Suggest specific changes to align the code with best practices.
Obtenha uma compreensão de alto nível da biblioteca
This file contains the entire codebase of library. Please provide a comprehensive overview of the library, including its main purpose, key features, and overall architecture.
Sinta -se à vontade para modificar esses avisos com base em suas necessidades específicas e nos recursos da ferramenta de IA que você está usando.
Confira nossa discussão na comunidade onde os usuários compartilham:
Sinta -se à vontade para participar da discussão e compartilhar suas próprias experiências! Suas idéias podem ajudar os outros a fazer melhor uso do repomix.
O Repomix gera um único arquivo com separadores claros entre diferentes partes da sua base de código.
Para aprimorar a compreensão da IA, o arquivo de saída começa com uma explicação orientada para a AI-I-i-II, facilitando a compreensão dos modelos de IA para entender o contexto e a estrutura do repositório embalado.
This file is a merged representation of the entire codebase, combining all repository files into a single document.
================================================================
File Summary
================================================================
(Metadata and usage AI instructions)
================================================================
Repository Structure
================================================================
src/
cli/
cliOutput.ts
index.ts
config/
configLoader.ts
(...remaining directories)
================================================================
Repository Files
================================================================
================
File: src/index.js
================
// File contents here
================
File: src/utils.js
================
// File contents here
(...remaining files)
================================================================
Instruction
================================================================
(Custom instructions from `output.instructionFilePath`)
Para gerar saída no formato XML, use a opção --style xml :
repomix --style xmlO formato XML estrutura o conteúdo de maneira hierárquica:
This file is a merged representation of the entire codebase, combining all repository files into a single document.
< file_summary >
(Metadata and usage AI instructions)
</ file_summary >
< repository_structure >
src/
cli/
cliOutput.ts
index.ts
(...remaining directories)
</ repository_structure >
< repository_files >
< file path = " src/index.js " >
// File contents here
</ file >
(...remaining files)
</ repository_files >
< instruction >
(Custom instructions from `output.instructionFilePath`)
</ instruction > Para aqueles interessados no potencial das tags XML em contextos de IA:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags
Quando seus avisos envolvem vários componentes, como contexto, instruções e exemplos, as tags XML podem mudar o jogo. Eles ajudam a Claude a analisar suas solicitações com mais precisão, levando a saídas de alta qualidade.
Isso significa que a saída XML do REPomix não é apenas um formato diferente, mas potencialmente uma maneira mais eficaz de alimentar sua base de código nos sistemas de IA para análise, revisão de código ou outras tarefas.
Para gerar saída no formato de marcação, use a opção --style markdown :
repomix --style markdownO formato de marcação estrutura o conteúdo de maneira hierárquica:
This file is a merged representation of the entire codebase, combining all repository files into a single document.
# File Summary
(Metadata and usage AI instructions)
# Repository Structure
```
src/
cli/
cliOutput.ts
index.ts
```
(...remaining directories)
# Repository Files
## File: src/index.js
```
// File contents here
```
(...remaining files)
# Instruction
(Custom instructions from ` output.instructionFilePath ` )Este formato fornece uma estrutura limpa e legível que é amiga do ser humano e facilmente parsexível pelos sistemas de IA.
-v, --version : mostre a versão da ferramenta-o, --output <file> : Especifique o nome do arquivo de saída--include <patterns> : Lista de padrões de inclusão (separados por vírgula)-i, --ignore <patterns> : Padrões de ignorar adicionais (separados por vírgula)-c, --config <path> : caminho para um arquivo de configuração personalizado--style <style> : especifique o estilo de saída ( plain , xml , markdown )--top-files-len <number> : Número de arquivos principais a serem exibidos no resumo--output-show-line-numbers : mostre números de linha na saída--copy : copiar saída gerada por cópia para a área de transferência do sistema--remote <url> : Processe um repositório Git remoto--verbose : atabilite o registro detalhadoExemplos:
repomix -o custom-output.txt
repomix -i " *.log,tmp " -v
repomix -c ./custom-config.json
repomix --style xml
repomix --remote https://github.com/user/repo.git
npx repomix srcPara atualizar um repomix instalado globalmente:
# Using npm
npm update -g repomix
# Using yarn
yarn global upgrade repomix O uso npx repomix geralmente é mais conveniente, pois sempre usa a versão mais recente.
O Repomix suporta o processamento de repositórios Git remotos sem a necessidade de clonagem manual. Esse recurso permite analisar rapidamente qualquer repositório público do Git com um único comando.
Para processar um repositório remoto, use a opção --remote seguida pelo URL do repositório:
repomix --remote https://github.com/user/repo.gitVocê também pode usar o formato abreviado do Github:
repomix --remote user/repo Crie um arquivo repomix.config.json na sua raiz do projeto para configurações personalizadas.
repomix --initAqui está uma explicação das opções de configuração:
| Opção | Descrição | Padrão |
|---|---|---|
output.filePath | O nome do arquivo de saída | "repomix-output.txt" |
output.style | O estilo da saída ( plain , xml , markdown ) | "plain" |
output.headerText | Texto personalizado para incluir no cabeçalho do arquivo | null |
output.instructionFilePath | Caminho para um arquivo contendo instruções personalizadas detalhadas | null |
output.removeComments | Se deve remover os comentários dos tipos de arquivo suportados | false |
output.removeEmptyLines | Se deve remover linhas vazias da saída | false |
output.showLineNumbers | Se deve adicionar números de linha a cada linha na saída | false |
output.copyToClipboard | Se deve copiar a saída para a área de transferência do sistema, além de salvar o arquivo | false |
output.topFilesLength | Número de arquivos principais a serem exibidos no resumo. Se definido como 0, nenhum resumo será exibido | 5 |
output.includeEmptyDirectories | Se deve incluir diretórios vazios na estrutura do repositório | false |
include | Padrões de arquivos a serem incluídos (usando padrões globais) | [] |
ignore.useGitignore | Se deve usar padrões do arquivo .gitignore do projeto | true |
ignore.useDefaultPatterns | Se deve usar padrões de ignorar padrão | true |
ignore.customPatterns | Padrões adicionais a serem ignorados (usando padrões globais) | [] |
security.enableSecurityCheck | Se deve executar verificações de segurança nos arquivos | true |
Exemplo de configuração:
{
"output" : {
"filePath" : " repomix-output.xml " ,
"style" : " xml " ,
"headerText" : " Custom header information for the packed file. " ,
"removeComments" : false ,
"removeEmptyLines" : false ,
"showLineNumbers" : false ,
"copyToClipboard" : true ,
"topFilesLength" : 5 ,
"includeEmptyDirectories" : false
},
"include" : [ " **/* " ],
"ignore" : {
"useGitignore" : true ,
"useDefaultPatterns" : true ,
"customPatterns" : [ " additional-folder " , " **/*.log " ]
},
"security" : {
"enableSecurityCheck" : true
}
}Para criar um arquivo de configuração global:
repomix --init --globalO arquivo de configuração global será criado em:
%LOCALAPPDATA%Repomixrepomix.config.json$XDG_CONFIG_HOME/repomix/repomix.config.json OU ~/.config/repomix/repomix.config.jsonNota: Configuração local (se presente) tem precedência sobre a configuração global.
O REPomix agora suporta especificar arquivos para incluir o uso de padrões GLOB. Isso permite uma seleção de arquivos mais flexível e poderosa:
**/*.js para incluir todos os arquivos JavaScript em qualquer diretóriosrc/**/* para incluir todos os arquivos no diretório src e seus subdiretossrc ["src/**/*.js", "**/*.md"] O REPomix oferece vários métodos para definir padrões de ignorar para excluir arquivos ou diretórios específicos durante o processo de embalagem:
.gitignore do seu projeto são usados. Esse comportamento pode ser controlado com a configuração ignore.useGitignore .ignore.useDefaultPatterns . Consulte o DefaultIignore.ts para mais detalhes..repomixignore no seu projeto root para definir padrões de ignorar específicos do repomix. Este arquivo segue o mesmo formato que .gitignore .ignore.customPatterns no arquivo de configuração. Você pode substituir essa configuração com a opção -i, --ignore Line.Ordem prioritária (do mais alto ao mais baixo):
ignore.customPatterns.repomixignore.gitignore (se ignore.useGitignore é verdadeiro)ignore.useDefaultPatterns é verdadeiro)Essa abordagem permite configuração flexível de exclusão de arquivos com base nas necessidades do seu projeto. Ajuda a otimizar o tamanho do arquivo de pacote gerado, garantindo a exclusão de arquivos sensíveis à segurança e grandes arquivos binários, impedindo o vazamento de informações confidenciais.
Nota: Os arquivos binários não estão incluídos na saída embalada por padrão, mas seus caminhos estão listados na seção "Estrutura do repositório" do arquivo de saída. Isso fornece uma visão geral completa da estrutura do repositório, mantendo o arquivo embalado eficiente e baseado em texto.
A opção de output.instructionFilePath permite especificar um arquivo separado contendo instruções ou contexto detalhados sobre o seu projeto. Isso permite que os sistemas de IA entendam o contexto e os requisitos específicos do seu projeto, levando potencialmente a análises ou sugestões mais relevantes e personalizadas.
Aqui está um exemplo de como você pode usar esse recurso:
repomix-instruction.md em seu projeto Root: # Coding Guidelines
- Follow the Airbnb JavaScript Style Guide
- Suggest splitting files into smaller, focused units when appropriate
- Add comments for non-obvious logic. Keep all text in English
- All new features should have corresponding unit tests
# Generate Comprehensive Output
- Include all content without abbreviation, unless specified otherwise
- Optimize for handling large codebases while maintaining output qualityrepomix.config.json , adicione a opção instructionFilePath : {
"output" : {
"instructionFilePath" : "repomix-instruction.md" ,
// other options...
}
} Quando o Repomix gera a saída, ele incluirá o conteúdo do repomix-instruction.md em uma seção dedicada.
Nota: O conteúdo da instrução é anexado no final do arquivo de saída. Esse posicionamento pode ser particularmente eficaz para os sistemas de IA. Para os interessados em entender por que isso pode ser benéfico, o Antrópico fornece algumas idéias em sua documentação:
https://docs.antrópica.com/en/docs/build-with-claude/prompt-engineering/long-context-tips
Coloque dados de formato longo na parte superior: Coloque seus documentos e insumos longos (~ 20k+ tokens) perto do topo do seu prompt, acima da sua consulta, instruções e exemplos. Isso pode melhorar significativamente o desempenho de Claude em todos os modelos. As consultas no final podem melhorar a qualidade da resposta em até 30% nos testes, especialmente com entradas complexas e multi-documentos.
Quando output.removeComments é definido como true , o REPomix tentará remover os comentários dos tipos de arquivo suportados. Esse recurso pode ajudar a reduzir o tamanho do arquivo de saída e se concentrar no conteúdo essencial do código.
Os idiomas suportados incluem:
HTML, CSS, JavaScript, TypeScript, Vue, Sieve, Python, Php, Ruby, C, C#, Java, Go, Rust, Swift, Kotlin, Dart, Shell e Yaml.
Nota: O processo de remoção de comentários é conservador para evitar a remoção acidental de código. Em casos complexos, alguns comentários podem ser mantidos.
O REPOMIX inclui um recurso de verificação de segurança que usa o SecretLint para detectar informações potencialmente sensíveis em seus arquivos. Esse recurso ajuda a identificar possíveis riscos de segurança antes de compartilhar seu repositório embalado.
Os resultados da verificação de segurança serão exibidos na saída da CLI após a conclusão do processo de embalagem. Se algum arquivo suspeito for detectado, você verá uma lista desses arquivos junto com uma mensagem de aviso.
Exemplo de saída:
? Security Check:
──────────────────
2 suspicious file(s) detected:
1. src/utils/test.txt
2. tests/utils/secretLintUtils.test.ts
Please review these files for potentially sensitive information.
Por padrão, o recurso de verificação de segurança do Repomix está ativado. Você pode desativá -lo definindo security.enableSecurityCheck para false em seu arquivo de configuração:
{
"security" : {
"enableSecurityCheck" : false
}
}Congratulamo -nos com contribuições da comunidade! Para começar, consulte o nosso guia contribuinte.
Este projeto está licenciado sob a licença do MIT.
De volta ao topo