Configuração
O Repomix pode ser configurado usando um arquivo de configuração (repomix.config.json
) ou opções de linha de comando. O arquivo de configuração permite que você personalize vários aspectos de como seu código-fonte é processado e gerado.
Início rápido
Crie um arquivo de configuração no diretório do seu projeto:
bash
repomix --init
Isso criará um arquivo repomix.config.json
com as configurações padrão. Você também pode criar um arquivo de configuração global que será usado como fallback quando nenhuma configuração local for encontrada:
bash
repomix --init --global
Opções de configuração
Opção | Descrição | Padrão |
---|---|---|
input.maxFileSize | Tamanho máximo do arquivo em bytes para processar. Arquivos maiores serão ignorados. Útil para excluir arquivos binários grandes ou arquivos de dados | 50000000 |
output.filePath | Nome do arquivo de saída. Suporta formatos XML, Markdown e texto simples | "repomix-output.xml" |
output.style | Estilo de saída (xml , markdown , plain ). Cada formato tem suas próprias vantagens para diferentes ferramentas de IA | "xml" |
output.parsableStyle | Indica se a saída deve ser escapada de acordo com o esquema de estilo escolhido. Permite melhor análise mas pode aumentar a contagem de tokens | false |
output.compress | Indica se deve realizar extração inteligente de código usando Tree-sitter para reduzir a contagem de tokens enquanto preserva a estrutura | false |
output.headerText | Texto personalizado para incluir no cabeçalho do arquivo. Útil para fornecer contexto ou instruções para ferramentas de IA | null |
output.instructionFilePath | Caminho para um arquivo contendo instruções personalizadas detalhadas para processamento de IA | null |
output.fileSummary | Indica se deve incluir uma seção de resumo no início mostrando contagens de arquivos, tamanhos e outras métricas | true |
output.directoryStructure | Indica se deve incluir a estrutura de diretórios na saída. Ajuda a IA a entender a organização do projeto | true |
output.files | Indica se deve incluir o conteúdo dos arquivos na saída. Defina como false para incluir apenas estrutura e metadados | true |
output.removeComments | Indica se deve remover comentários dos tipos de arquivos suportados. Pode reduzir ruído e contagem de tokens | false |
output.removeEmptyLines | Indica se deve remover linhas vazias da saída para reduzir a contagem de tokens | false |
output.showLineNumbers | Indica se deve adicionar números de linha a cada linha. Útil para referenciar partes específicas do código | false |
output.copyToClipboard | Indica 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 para exibir no resumo. Se definido como 0, nenhum resumo será exibido | 5 |
output.includeEmptyDirectories | Indica se deve incluir diretórios vazios na estrutura do repositório | false |
output.git.sortByChanges | Indica se deve ordenar arquivos por número de alterações git. Arquivos com mais alterações aparecem no final | true |
output.git.sortByChangesMaxCommits | Número máximo de commits para analisar ao contar alterações git. Limita a profundidade do histórico por desempenho | 100 |
output.git.includeDiffs | Indica se deve incluir as diferenças git na saída. Mostra separadamente as alterações da árvore de trabalho e as alterações preparadas | false |
include | Padrões de arquivos para incluir usando padrões glob | [] |
ignore.useGitignore | Indica se deve usar os padrões do arquivo .gitignore do projeto | true |
ignore.useDefaultPatterns | Indica se deve usar os padrões de ignorar padrão (node_modules, .git, etc.) | true |
ignore.customPatterns | Padrões adicionais para ignorar usando padrões glob | [] |
security.enableSecurityCheck | Indica se deve realizar verificações de segurança usando Secretlint para detectar informações sensíveis | true |
tokenCount.encoding | Codificação de contagem de tokens usada pelo tokenizador tiktoken da OpenAI. Use o200k_base para GPT-4o, cl100k_base para GPT-4/3.5. Veja tiktoken model.py para mais detalhes. | "o200k_base" |
O arquivo de configuração suporta a sintaxe JSON5, que permite:
- Comentários (tanto de uma linha quanto multilinha)
- Vírgulas finais em objetos e arrays
- Nomes de propriedades sem aspas
- Sintaxe de string mais flexível
Validação de esquema
Você pode habilitar a validação de esquema para seu arquivo de configuração adicionando a propriedade $schema
:
json
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.md",
"style": "markdown"
}
}
Isso fornece autocompletar e validação em editores que suportam esquema JSON.
Exemplo de arquivo de configuração
Aqui está um exemplo de um arquivo de configuração completo (repomix.config.json
):
json
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"input": {
"maxFileSize": 50000000
},
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"parsableStyle": false,
"compress": false,
"headerText": "Informações de cabeçalho personalizadas para o arquivo empacotado.",
"fileSummary": true,
"directoryStructure": true,
"files": true,
"removeComments": false,
"removeEmptyLines": false,
"topFilesLength": 5,
"showLineNumbers": false,
"copyToClipboard": false,
"includeEmptyDirectories": false,
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": false
}
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
// Os padrões também podem ser especificados em .repomixignore
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}
Locais dos arquivos de configuração
O Repomix procura os arquivos de configuração na seguinte ordem:
- Arquivo de configuração local (
repomix.config.json
) no diretório atual - Arquivo de configuração global:
- Windows:
%LOCALAPPDATA%\Repomix\repomix.config.json
- macOS/Linux:
~/.config/repomix/repomix.config.json
- Windows:
As opções de linha de comando têm precedência sobre as configurações do arquivo.
Padrões de ignorar
O Repomix fornece múltiplas formas de especificar quais arquivos devem ser ignorados. Os padrões são processados na seguinte ordem de prioridade:
- Opções de CLI (
--ignore
) - Arquivo
.repomixignore
no diretório do projeto .gitignore
e.git/info/exclude
(seignore.useGitignore
for verdadeiro)- Padrões padrão (se
ignore.useDefaultPatterns
for verdadeiro)
Exemplo de .repomixignore
:
text
# Diretórios de cache
.cache/
tmp/
# Saídas de compilação
dist/
build/
# Registros
*.log
Padrões de ignorar padrão
Quando ignore.useDefaultPatterns
é verdadeiro, o Repomix ignora automaticamente padrões comuns:
text
node_modules/**
.git/**
coverage/**
dist/**
Para a lista completa, veja defaultIgnore.ts
Recursos avançados
Compressão de código
O recurso de compressão de código, habilitado com output.compress: true
, usa Tree-sitter para extrair inteligentemente estruturas de código essenciais enquanto remove detalhes de implementação. Isso ajuda a reduzir a contagem de tokens enquanto mantém informações estruturais importantes.
Benefícios principais:
- Reduz significativamente a contagem de tokens
- Preserva as assinaturas de classes e funções
- Mantém importações e exportações
- Conserva definições de tipos e interfaces
- Remove corpos de funções e detalhes de implementação
Para mais detalhes e exemplos, consulte o Guia de compressão de código.
Integração com Git
A configuração output.git
fornece recursos poderosos relacionados ao Git:
sortByChanges
: Quando verdadeiro, os arquivos são ordenados por número de alterações Git (commits que modificaram o arquivo). Arquivos com mais alterações aparecem no final da saída. Isso ajuda a priorizar os arquivos mais ativamente desenvolvidos. Padrão:true
sortByChangesMaxCommits
: O número máximo de commits para analisar ao contar alterações de arquivos. Padrão:100
includeDiffs
: Quando verdadeiro, inclui as diferenças Git na saída (inclui separadamente as alterações da árvore de trabalho e as alterações preparadas). Isso permite que o leitor veja as alterações pendentes no repositório. Padrão:false
Exemplo de configuração:
json
{
"output": {
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": true
}
}
}
Verificações de segurança
Quando security.enableSecurityCheck
está habilitado, o Repomix usa Secretlint para detectar informações sensíveis em seu código-fonte antes de incluí-las na saída. Isso ajuda a prevenir a exposição acidental de:
- Chaves de API
- Tokens de acesso
- Chaves privadas
- Senhas
- Outras credenciais sensíveis
Remoção de comentários
Quando output.removeComments
é definido como true
, os comentários são removidos dos tipos de arquivos suportados para reduzir o tamanho da saída e focar no conteúdo essencial do código. Isso pode ser particularmente útil quando:
- Você está trabalhando com código altamente documentado
- Você está tentando reduzir a contagem de tokens
- Você está focando na estrutura e lógica do código
Para os idiomas suportados e exemplos detalhados, consulte o Guia de remoção de comentários.