Configurazione
Repomix può essere configurato usando un file di configurazione o opzioni da linea di comando. Il file di configurazione ti permette di personalizzare vari aspetti dell'elaborazione e dell'output della tua codebase.
Overview
Configurazione
Repomix può essere configurato usando un file di configurazione o opzioni da linea di comando. Il file di configurazione ti permette di personalizzare vari aspetti dell'elaborazione e dell'output della tua codebase.
Formati dei File di Configurazione
Repomix supporta diversi formati di file di configurazione per maggiore flessibilità e facilità d'uso.
Repomix cercherà automaticamente i file di configurazione nel seguente ordine di priorità:
- TypeScript (
repomix.config.ts,repomix.config.mts,repomix.config.cts) - JavaScript/ES Module (
repomix.config.js,repomix.config.mjs,repomix.config.cjs) - JSON (
repomix.config.json5,repomix.config.jsonc,repomix.config.json)
Configurazione JSON
Crea un file di configurazione nella directory del tuo progetto:
repomix --init
Questo creerà un file repomix.config.json con le impostazioni predefinite. Puoi anche creare un file di configurazione globale che verrà usato come fallback quando non viene trovata una configurazione locale:
repomix --init --global
Configurazione TypeScript
I file di configurazione TypeScript offrono la migliore esperienza di sviluppo con verifica completa dei tipi e supporto IDE.
Installazione:
Per usare la configurazione TypeScript o JavaScript con defineConfig, devi installare Repomix come dipendenza di sviluppo:
npm install -D repomix
Esempio:
// repomix.config.ts
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});
Vantaggi:
- ✅ Verifica completa dei tipi TypeScript nel tuo IDE
- ✅ Eccellente autocompletamento e IntelliSense
- ✅ Utilizzo di valori dinamici (timestamp, variabili d'ambiente, ecc.)
Esempio di Valori Dinamici:
// repomix.config.ts
// Genera un nome file basato sul timestamp
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');
output: {
filePath: `output-${timestamp}.xml`,
style: 'xml',
},
});
Configurazione JavaScript
I file di configurazione JavaScript funzionano allo stesso modo di TypeScript, supportando defineConfig e valori dinamici.
Opzioni di Configurazione
| Opzione | Descrizione | Predefinito |
|---|---|---|
input.maxFileSize | Dimensione massima dei file da elaborare in byte. I file più grandi saranno ignorati. Utile per escludere file binari grandi o file di dati | 50000000 |
output.filePath | Nome del file di output. Supporta formati XML, Markdown e testo semplice | "repomix-output.xml" |
output.style | Stile di output (xml, markdown, json, plain). Ogni formato ha i suoi vantaggi per diversi strumenti IA | "xml" |
output.parsableStyle | Se effettuare l'escape dell'output secondo lo schema di stile scelto. Permette una migliore analisi ma può aumentare il conteggio token | false |
output.compress | Se eseguire l'estrazione intelligente del codice usando Tree-sitter per ridurre il conteggio token preservando la struttura | false |
output.headerText | Testo personalizzato da includere nell'intestazione del file. Utile per fornire contesto o istruzioni agli strumenti IA | null |
output.instructionFilePath | Percorso a un file contenente istruzioni personalizzate dettagliate per l'elaborazione IA | null |
output.fileSummary | Se includere una sezione riepilogo all'inizio mostrando il conteggio file, dimensioni e altre metriche | true |
output.directoryStructure | Se includere la struttura delle directory nell'output. Aiuta l'IA a capire l'organizzazione del progetto | true |
output.files | Se includere il contenuto dei file nell'output. Impostare a false per includere solo struttura e metadati | true |
output.removeComments | Se rimuovere i commenti dai tipi di file supportati. Può ridurre il rumore e il conteggio token | false |
output.removeEmptyLines | Se rimuovere le righe vuote dall'output per ridurre il conteggio token | false |
output.showLineNumbers | Se aggiungere numeri di riga a ogni riga. Utile per riferirsi a parti specifiche del codice | false |
output.truncateBase64 | Se troncare le stringhe di dati base64 lunghe (es. immagini) per ridurre il conteggio token | false |
output.copyToClipboard | Se copiare l'output negli appunti di sistema oltre a salvare il file | false |
output.splitOutput | Dividi l'output in più file numerati per dimensione massima per parte (es., 1000000 per ~1MB). CLI accetta dimensioni leggibili come 500kb o 2mb. Mantiene ogni file sotto il limite ed evita di dividere i file di origine tra le parti | Non impostato |
output.topFilesLength | Numero dei file principali da mostrare nel riepilogo. Se impostato a 0, nessun riepilogo sarà mostrato | 5 |
output.includeEmptyDirectories | Se includere le directory vuote nella struttura del repository | false |
output.includeFullDirectoryStructure | Quando si usano pattern include, se mostrare l'albero completo delle directory (rispettando i pattern ignore) mentre si elaborano solo i file inclusi. Fornisce contesto completo del repository per l'analisi IA | false |
output.git.sortByChanges | Se ordinare i file per numero di modifiche git. I file con più modifiche appaiono in fondo | true |
output.git.sortByChangesMaxCommits | Numero massimo di commit da analizzare per le modifiche git. Limita la profondità della cronologia per le prestazioni | 100 |
output.git.includeDiffs | Se includere i diff git nell'output. Mostra separatamente le modifiche dell'albero di lavoro e le modifiche staged | false |
output.git.includeLogs | Se includere i log git nell'output. Mostra la cronologia dei commit con date, messaggi e percorsi file | false |
output.git.includeLogsCount | Numero di commit git recenti da includere nell'output | 50 |
include | Pattern dei file da includere usando pattern glob | [] |
ignore.useGitignore | Se usare i pattern dal file .gitignore del progetto | true |
ignore.useDotIgnore | Se usare i pattern dal file .ignore del progetto | true |
ignore.useDefaultPatterns | Se usare i pattern di ignore predefiniti (node_modules, .git, ecc.) | true |
ignore.customPatterns | Pattern aggiuntivi da ignorare usando pattern glob | [] |
security.enableSecurityCheck | Se eseguire controlli di sicurezza usando Secretlint per rilevare informazioni sensibili | true |
tokenCount.encoding | Encoding del conteggio token compatibile con OpenAI (ad es., o200k_base per GPT-4o, cl100k_base per GPT-4/3.5). Utilizza gpt-tokenizer. | "o200k_base" |
Il file di configurazione supporta la sintassi JSON5, che permette:
- Commenti (sia su singola riga che su più righe)
- Virgole finali in oggetti e array
- Nomi di proprietà non tra virgolette
- Sintassi stringa più flessibile
Validazione Schema
Puoi abilitare la validazione schema per il tuo file di configurazione aggiungendo la proprietà $schema:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.md",
"style": "markdown"
}
}
Questo fornisce autocompletamento e validazione negli editor che supportano gli schema JSON.
Esempio di File di Configurazione
Ecco un esempio completo di file di configurazione (repomix.config.json):
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"input": {
"maxFileSize": 50000000
},
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"parsableStyle": false,
"compress": false,
"headerText": "Informazioni di intestazione personalizzate per il file compresso.",
"fileSummary": true,
"directoryStructure": true,
"files": true,
"removeComments": false,
"removeEmptyLines": false,
"topFilesLength": 5,
"showLineNumbers": false,
"truncateBase64": false,
"copyToClipboard": false,
"includeEmptyDirectories": false,
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": false,
"includeLogs": false,
"includeLogsCount": 50
}
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
// I pattern possono essere specificati anche in .repomixignore
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}
Posizioni dei File di Configurazione
Repomix cerca i file di configurazione nel seguente ordine:
- File di configurazione locale nella directory corrente (ordine di priorità: TS > JS > JSON)
- TypeScript:
repomix.config.ts,repomix.config.mts,repomix.config.cts - JavaScript:
repomix.config.js,repomix.config.mjs,repomix.config.cjs - JSON:
repomix.config.json5,repomix.config.jsonc,repomix.config.json
- TypeScript:
- File di configurazione globale (ordine di priorità: TS > JS > JSON)
- Windows:
- TypeScript:
%LOCALAPPDATA%\\Repomix\\repomix.config.ts,.mts,.cts - JavaScript:
%LOCALAPPDATA%\\Repomix\\repomix.config.js,.mjs,.cjs - JSON:
%LOCALAPPDATA%\\Repomix\\repomix.config.json5,.jsonc,.json
- TypeScript:
- macOS/Linux:
- TypeScript:
~/.config/repomix/repomix.config.ts,.mts,.cts - JavaScript:
~/.config/repomix/repomix.config.js,.mjs,.cjs - JSON:
~/.config/repomix/repomix.config.json5,.jsonc,.json
- TypeScript:
- Windows:
Le opzioni da linea di comando hanno la priorità sulle impostazioni del file di configurazione.
Pattern di Inclusione
Repomix supporta la specifica dei file da includere usando pattern glob. Questo permette una selezione di file più flessibile e potente:
- Usa
**/*.jsper includere tutti i file JavaScript in qualsiasi directory - Usa
src/**/*per includere tutti i file nella directorysrce le sue sottodirectory - Combina più pattern come
["src/**/*.js", "**/*.md"]per includere i file JavaScript insrce tutti i file Markdown
Puoi specificare pattern di inclusione nel tuo file di configurazione:
{
"include": ["src/**/*", "tests/**/*.test.js"]
}
Oppure usa l'opzione da linea di comando --include per filtraggio una tantum.
Pattern di Esclusione
Repomix offre diversi metodi per definire pattern di esclusione per escludere file o directory specifici durante il processo di impacchettamento:
- .gitignore: Per impostazione predefinita, i pattern elencati nei file
.gitignoredel progetto e.git/info/excludesono usati. Questo comportamento può essere controllato con l'impostazioneignore.useGitignoreo l'opzione CLI--no-gitignore. - .ignore: Puoi usare un file
.ignorealla radice del progetto, seguendo lo stesso formato di.gitignore. Questo file è rispettato da strumenti come ripgrep e the silver searcher, riducendo la necessità di mantenere più file di esclusione. Questo comportamento può essere controllato con l'impostazioneignore.useDotIgnoreo l'opzione CLI--no-dot-ignore. - Pattern predefiniti: Repomix include una lista predefinita di file e directory comunemente esclusi (es. node_modules, .git, file binari). Questa funzionalità può essere controllata con l'impostazione
ignore.useDefaultPatternso l'opzione CLI--no-default-patterns. Consulta defaultIgnore.ts per dettagli. - .repomixignore: Puoi creare un file
.repomixignorealla radice del progetto per definire pattern di esclusione specifici per Repomix. Questo file segue lo stesso formato di.gitignore. - Pattern personalizzati: Pattern di esclusione aggiuntivi possono essere specificati usando l'opzione
ignore.customPatternsnel file di configurazione. Puoi sovrascrivere questa impostazione con l'opzione da linea di comando-i, --ignore.
Ordine di priorità (dal più alto al più basso):
- Pattern personalizzati (
ignore.customPatterns) - File di esclusione (
.repomixignore,.ignore,.gitignore, e.git/info/exclude):- Quando sono in directory annidate, i file nelle directory più profonde hanno priorità maggiore
- Quando sono nella stessa directory, questi file sono uniti senza ordine particolare
- Pattern predefiniti (se
ignore.useDefaultPatternsè true e--no-default-patternsnon è usato)
Questo approccio permette una configurazione flessibile dell'esclusione dei file in base alle esigenze del progetto. Aiuta a ottimizzare la dimensione del file impacchettato generato garantendo l'esclusione di file sensibili alla sicurezza e grandi file binari, mentre previene la fuga di informazioni confidenziali.
Nota: I file binari non sono inclusi nell'output impacchettato per impostazione predefinita, ma i loro percorsi sono elencati nella sezione "Struttura del Repository" del file di output. Questo fornisce una panoramica completa dell