Skip to content

Konfiguration

Repomix kann über eine Konfigurationsdatei oder Kommandozeilenoptionen konfiguriert werden. Die Konfigurationsdatei ermöglicht es Ihnen, die Verarbeitung und Ausgabe Ihres Codes anzupassen.

Konfigurationsdateiformate

Repomix unterstützt mehrere Konfigurationsdateiformate für Flexibilität und Benutzerfreundlichkeit.

Repomix sucht automatisch nach Konfigurationsdateien in der folgenden Prioritätsreihenfolge:

  1. TypeScript (repomix.config.ts, repomix.config.mts, repomix.config.cts)
  2. JavaScript/ES Module (repomix.config.js, repomix.config.mjs, repomix.config.cjs)
  3. JSON (repomix.config.json5, repomix.config.jsonc, repomix.config.json)

JSON-Konfiguration

Erstellen Sie eine Konfigurationsdatei in Ihrem Projektverzeichnis:

bash
repomix --init

Dies erstellt eine repomix.config.json-Datei mit Standardeinstellungen. Sie können auch eine globale Konfigurationsdatei erstellen, die als Fallback verwendet wird, wenn keine lokale Konfiguration gefunden wird:

bash
repomix --init --global

TypeScript-Konfiguration

TypeScript-Konfigurationsdateien bieten die beste Entwicklererfahrung mit vollständiger Typüberprüfung und IDE-Unterstützung.

Installation:

Um TypeScript- oder JavaScript-Konfiguration mit defineConfig zu verwenden, müssen Sie Repomix als Entwicklungsabhängigkeit installieren:

bash
npm install -D repomix

Beispiel:

typescript
// repomix.config.ts
import { defineConfig } from 'repomix';

export default defineConfig({
  output: {
    filePath: 'output.xml',
    style: 'xml',
    removeComments: true,
  },
  ignore: {
    customPatterns: ['**/node_modules/**', '**/dist/**'],
  },
});

Vorteile:

  • ✅ Vollständige TypeScript-Typüberprüfung in Ihrer IDE
  • ✅ Hervorragende IDE-Autovervollständigung und IntelliSense
  • ✅ Verwendung dynamischer Werte (Zeitstempel, Umgebungsvariablen usw.)

Beispiel für dynamische Werte:

typescript
// repomix.config.ts
import { defineConfig } from 'repomix';

// Zeitstempel-basierten Dateinamen generieren
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');

export default defineConfig({
  output: {
    filePath: `output-${timestamp}.xml`,
    style: 'xml',
  },
});

JavaScript-Konfiguration

JavaScript-Konfigurationsdateien funktionieren genauso wie TypeScript und unterstützen defineConfig und dynamische Werte.

Konfigurationsoptionen

OptionBeschreibungStandardwert
input.maxFileSizeMaximale zu verarbeitende Dateigröße in Bytes. Größere Dateien werden übersprungen. Nützlich zum Ausschließen großer Binär- oder Datendateien50000000
input.processorsGeordnetes Array von { pattern, command, timeout?, onError? }-Einträgen, die einen externen Befehl ausführen, um passende Dateien vor dem Packen zu transformieren (z.B. JSON→TOON). Das erste passende Glob-Muster gewinnt. Führt beliebige Befehle aus, daher nur für lokale CLI-Ausführungen (und Remote-Repositories mit --remote-trust-config) aktiviert. Siehe DateiprozessorenNicht gesetzt
output.filePathName der Ausgabedatei. Unterstützt XML-, Markdown- und Textformate"repomix-output.xml"
output.styleAusgabestil (xml, markdown, json, plain). Jedes Format hat seine Vorteile für verschiedene KI-Tools"xml"
output.filePathStyleDarstellung der Dateipfade in der Ausgabe (target-relative hält Pfade relativ zum jeweiligen Zielverzeichnis, cwd-relative hält Pfade relativ zum aktuellen Arbeitsverzeichnis)"target-relative"
output.parsableStyleOb die Ausgabe gemäß dem gewählten Stilschema escaped werden soll. Ermöglicht besseres Parsing, kann aber die Token-Anzahl erhöhenfalse
output.compressOb Tree-sitter verwendet werden soll, um intelligente Codeextraktion durchzuführen und dabei die Struktur beizubehalten, während die Token-Anzahl reduziert wirdfalse
output.patternsInklusionsstufen pro Datei. Ein geordnetes Array von { pattern, compress?, directoryStructureOnly? }-Einträgen; das erste passende Glob-Muster gewinnt und überschreibt für diese Datei das globale output.compress. Siehe Inklusionsstufen pro DateiNicht gesetzt
output.headerTextBenutzerdefinierter Text für den Dateikopf. Nützlich für die Bereitstellung von Kontext oder Anweisungen für KI-Toolsnull
output.instructionFilePathPfad zu einer Datei mit detaillierten benutzerdefinierten Anweisungen für die KI-Verarbeitungnull
output.fileSummaryOb eine Zusammenfassung mit Dateianzahl, -größen und anderen Metriken am Anfang der Ausgabe eingefügt werden solltrue
output.directoryStructureOb die Verzeichnisstruktur in der Ausgabe enthalten sein soll. Hilft der KI, die Projektorganisation zu verstehentrue
output.filesOb Dateiinhalte in der Ausgabe enthalten sein sollen. Bei false werden nur Struktur und Metadaten einbezogentrue
output.removeCommentsOb Kommentare aus unterstützten Dateitypen entfernt werden sollen. Kann Rauschen und Token-Anzahl reduzierenfalse
output.removeEmptyLinesOb leere Zeilen aus der Ausgabe entfernt werden sollen, um die Token-Anzahl zu reduzierenfalse
output.showLineNumbersOb Zeilennummern hinzugefügt werden sollen. Hilfreich für das Referenzieren bestimmter Codestellenfalse
output.truncateBase64Ob lange base64-Datenstrings (z.B. Bilder) abgeschnitten werden sollen, um die Token-Anzahl zu reduzierenfalse
output.copyToClipboardOb die Ausgabe zusätzlich zum Speichern in die Zwischenablage kopiert werden sollfalse
output.splitOutputAusgabe in mehrere nummerierte Dateien nach maximaler Größe pro Teil aufteilen (z.B. 1000000 für ~1MB). CLI akzeptiert lesbare Größen wie 500kb oder 2mb. Hält jede Datei unter dem Limit und verhindert, dass Quelldateien auf mehrere Ausgabedateien aufgeteilt werdenNicht gesetzt
output.tokenBudgetMit einem von Null verschiedenen Exit-Code fehlschlagen, wenn die gepackte Ausgabe diese Anzahl an Token überschreitet. Dient als Schutz für CI-/Agent-Kontextgrenzen; die Ausgabe wird trotzdem generiertNicht gesetzt
output.topFilesLengthAnzahl der in der Zusammenfassung anzuzeigenden Top-Dateien. Bei 0 wird keine Zusammenfassung angezeigt5
output.includeEmptyDirectoriesOb leere Verzeichnisse in der Repository-Struktur enthalten sein sollenfalse
output.includeFullDirectoryStructureBei Verwendung von include-Mustern, ob der vollständige Verzeichnisbaum (unter Beachtung von Ignorier-Mustern) angezeigt werden soll, während nur die inkludierten Dateien verarbeitet werden. Bietet vollständigen Repository-Kontext für die KI-Analysefalse
output.git.sortByChangesOb Dateien nach Git-Änderungen sortiert werden sollen. Häufiger geänderte Dateien erscheinen am Endetrue
output.git.sortByChangesMaxCommitsMaximale Anzahl zu analysierender Commits für Git-Änderungen. Begrenzt die Historien-Tiefe für bessere Performance100
output.git.includeDiffsOb Git-Unterschiede in der Ausgabe enthalten sein sollen. Zeigt Arbeitsverzeichnis- und Stage-Änderungen separat anfalse
output.git.includeLogsOb Git-Logs in der Ausgabe enthalten sein sollen. Zeigt Commit-Historie mit Daten, Nachrichten und Dateipfaden anfalse
output.git.includeLogsCountAnzahl der Git-Log-Commits, die in die Ausgabe einbezogen werden sollen50
includeZu einschließende Dateimuster (verwendet glob-Muster)[]
ignore.useGitignoreOb Muster aus der .gitignore-Datei des Projekts verwendet werden sollentrue
ignore.useDotIgnoreOb Muster aus der .ignore-Datei des Projekts verwendet werden sollentrue
ignore.useDefaultPatternsOb Standard-Ignorier-Muster (node_modules, .git etc.) verwendet werden sollentrue
ignore.customPatternsZusätzliche Ignorier-Muster (verwendet glob-Muster)[]
security.enableSecurityCheckOb Secretlint verwendet werden soll, um Sicherheitsprüfungen auf sensible Informationen durchzuführentrue
tokenCount.encodingOpenAI-kompatibles Token-Count-Encoding (z.B. o200k_base für GPT-4o, cl100k_base für GPT-4/3.5). Verwendet gpt-tokenizer."o200k_base"

Die Konfigurationsdatei unterstützt JSON5-Syntax, die Folgendes erlaubt:

  • Kommentare (einzeilig und mehrzeilig)
  • Nachfolgende Kommas in Objekten und Arrays
  • Unquotierte Eigenschaftsnamen
  • Flexiblere String-Syntax

Schema-Validierung

Sie können die Schema-Validierung für Ihre Konfigurationsdatei aktivieren, indem Sie die Eigenschaft $schema hinzufügen:

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.json",
  "output": {
    "filePath": "repomix-output.md",
    "style": "markdown"
  }
}

Dies bietet Autovervollständigung und Validierung in Editoren, die JSON-Schema unterstützen.

Beispiel-Konfigurationsdatei

Hier ist ein Beispiel einer vollständigen Konfigurationsdatei (repomix.config.json):

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.json",
  "input": {
    "maxFileSize": 50000000,
    // "processors": [
    //   { "pattern": "**/*.json", "command": "npx @toon-format/cli {file}" }
    // ]
  },
  "output": {
    "filePath": "repomix-output.xml",
    "style": "xml",
    "filePathStyle": "target-relative",
    "parsableStyle": false,
    "compress": false,
    "headerText": "Benutzerdefinierte Header-Informationen für die gepackte Datei",
    "fileSummary": true,
    "directoryStructure": true,
    "files": true,
    "removeComments": false,
    "removeEmptyLines": false,
    "topFilesLength": 5,
    "showLineNumbers": false,
    // "patterns": [
    //   { "pattern": "docs/**/*", "compress": true },
    //   { "pattern": "website/**/*", "directoryStructureOnly": true }
    // ],
    "truncateBase64": false,
    "copyToClipboard": false,
    "includeEmptyDirectories": false,
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": false,
      "includeLogs": false,
      "includeLogsCount": 50
    }
  },
  "include": ["**/*"],
  "ignore": {
    "useGitignore": true,
    "useDefaultPatterns": true,
    // Muster können auch in .repomixignore angegeben werden
    "customPatterns": [
      "additional-folder",
      "**/*.log"
    ],
  },
  "security": {
    "enableSecurityCheck": true
  },
  "tokenCount": {
    "encoding": "o200k_base"
  }
}

Speicherorte der Konfigurationsdatei

Repomix sucht in folgender Reihenfolge nach Konfigurationsdateien:

  1. Lokale Konfigurationsdatei im aktuellen Verzeichnis (Priorität: 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
  2. Globale Konfigurationsdatei (Priorität: 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
    • 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

Kommandozeilenoptionen haben Vorrang vor Einstellungen in der Konfigurationsdatei.

Include-Muster

Repomix unterstützt die Angabe einzuschließender Dateien mittels Glob-Mustern. Dies ermöglicht eine flexiblere und leistungsfähigere Dateiauswahl:

  • Verwenden Sie **/*.js, um alle JavaScript-Dateien in jedem Verzeichnis einzuschließen
  • Verwenden Sie src/**/*, um alle Dateien innerhalb des src-Verzeichnisses und seiner Unterverzeichnisse einzuschließen
  • Kombinieren Sie mehrere Muster wie ["src/**/*.js", "**/*.md"], um JavaScript-Dateien in src und alle Markdown-Dateien einzuschließen

Sie können Include-Muster in Ihrer Konfigurationsdatei angeben:

json
{
  "include": ["src/**/*", "tests/**/*.test.js"]
}

Oder verwenden Sie die Kommandozeilenoption --include für einmaliges Filtern.

Ignorier-Muster

Repomix bietet mehrere Methoden zum Festlegen von Ignorier-Mustern, um bestimmte Dateien oder Verzeichnisse während des Packprozesses auszuschließen:

  • .gitignore: Standardmäßig werden die in den .gitignore-Dateien und .git/info/exclude Ihres Projekts aufgelisteten Muster verwendet. Dieses Verhalten kann über die Einstellung ignore.useGitignore oder die CLI-Option --no-gitignore gesteuert werden.
  • .ignore: Sie können eine .ignore-Datei im Stammverzeichnis Ihres Projekts verwenden, die dem gleichen Format wie .gitignore folgt. Diese Datei wird von Tools wie ripgrep und the silver searcher respektiert und reduziert die Notwendigkeit, mehrere Ignorier-Dateien zu pflegen. Dieses Verhalten kann über die Einstellung ignore.useDotIgnore oder die CLI-Option --no-dot-ignore gesteuert werden.
  • Standardmuster: Repomix enthält eine Standardliste häufig ausgeschlossener Dateien und Verzeichnisse (z.B. node_modules, .git, Binärdateien). Diese Funktion kann über die Einstellung ignore.useDefaultPatterns oder die CLI-Option --no-default-patterns gesteuert werden. Weitere Details finden Sie in defaultIgnore.ts.
  • .repomixignore: Sie können eine .repomixignore-Datei in Ihrem Projektstamm erstellen, um Repomix-spezifische Ignorier-Muster zu definieren. Diese Datei folgt dem gleichen Format wie .gitignore.
  • Benutzerdefinierte Muster: Zusätzliche Ignorier-Muster können über die Option ignore.customPatterns in der Konfigurationsdatei angegeben werden. Sie können diese Einstellung mit der Kommandozeilenoption -i, --ignore überschreiben.

Prioritätsreihenfolge (von höchster zu niedrigster):

  1. Benutzerdefinierte Muster (ignore.customPatterns)
  2. Ignorier-Dateien (.repomixignore, .ignore, .gitignore und .git/info/exclude):
    • Bei verschachtelten Verzeichnissen haben Dateien in tieferen Verzeichnissen höhere Priorität
    • Bei Dateien im selben Verzeichnis werden diese ohne bestimmte Reihenfolge zusammengeführt
  3. Standardmuster (wenn ignore.useDefaultPatterns true ist und --no-default-patterns nicht verwendet wird)

Dieser Ansatz ermöglicht eine flexible Konfiguration des Dateiausschlusses basierend auf den Anforderungen Ihres Projekts. Er hilft, die Größe der generierten Packdatei zu optimieren, indem er den Ausschluss sicherheitssensibler Dateien und großer Binärdateien gewährleistet und gleichzeitig die Preisgabe vertraulicher Informationen verhindert.

Hinweis: Binärdateien werden standardmäßig nicht in der gepackten Ausgabe enthalten, aber ihre Pfade werden im Abschnitt "Repository-Struktur" der Ausgabedatei aufgelistet. Dies bietet einen vollständigen Überblick über die Repository-Struktur und hält gleichzeitig die gepackte Datei effizient und textbasiert. Weitere Details finden Sie unter Binärdateiverarbeitung.

Beispiel für .repomixignore:

text
# Cache-Verzeichnisse
.cache/
tmp/

# Build-Ausgaben
dist/
build/

# Logs
*.log

Standard-Ignorier-Muster

Wenn ignore.useDefaultPatterns true ist, ignoriert Repomix automatisch folgende häufige Muster:

text
node_modules/**
.git/**
coverage/**
dist/**

Die vollständige Liste finden Sie in defaultIgnore.ts

Binärdateiverarbeitung

Binärdateien (wie Bilder, PDFs, kompilierte Binärdateien, Archive usw.) werden speziell behandelt, um eine effiziente, textbasierte Ausgabe zu gewährleisten:

  • Dateiinhalte: Binärdateien werden nicht in die gepackte Ausgabe aufgenommen, um die Datei textbasiert und effizient für die KI-Verarbeitung zu halten
  • Verzeichnisstruktur: Binärdateipfade werden im Abschnitt der Verzeichnisstruktur aufgelistet, um einen vollständigen Überblick über Ihr Repository zu bieten

Dieser Ansatz stellt sicher, dass Sie eine vollständige Ansicht Ihrer Repository-Struktur erhalten und gleichzeitig eine effiziente, textbasierte Ausgabe beibehalten, die für den KI-Konsum optimiert ist.

Beispiel:

Wenn Ihr Repository logo.png und app.jar enthält:

  • Sie erscheinen im Abschnitt Verzeichnisstruktur
  • Ihre Inhalte werden nicht im Abschnitt Dateien enthalten sein

Verzeichnisstruktur-Ausgabe:

src/
  index.ts
  utils.ts
assets/
  logo.png
build/
  app.jar

Auf diese Weise können KI-Tools verstehen, dass diese Binärdateien in Ihrer Projektstruktur existieren, ohne deren Binärinhalte zu verarbeiten.

Hinweis: Sie können den Schwellenwert für die maximale Dateigröße über die Konfigurationsoption input.maxFileSize steuern (Standard: 50MB). Dateien, die größer als dieser Grenzwert sind, werden vollständig übersprungen.

Erweiterte Funktionen

Code-Komprimierung

Die Code-Komprimierungsfunktion (aktiviert durch output.compress: true) verwendet Tree-sitter, um wesentliche Code-Strukturen intelligent zu extrahieren und dabei Implementierungsdetails zu entfernen. Dies hilft, die Token-Anzahl zu reduzieren und gleichzeitig wichtige strukturelle Informationen beizubehalten.

Hauptvorteile:

  • Signifikante Reduzierung der Token-Anzahl
  • Beibehaltung von Klassen- und Funktionssignaturen
  • Beibehaltung von Imports und Exports
  • Beibehaltung von Typdefinitionen und Interfaces
  • Entfernung von Funktionskörpern und Implementierungsdetails

Weitere Details und Beispiele finden Sie im Code-Komprimierungs-Leitfaden.

Inklusionsstufen pro Datei

Während output.compress für jede Datei eine einzige Stufe anwendet, können Sie mit output.patterns die Detailstufe pro Glob-Muster über Ihre Konfigurationsdatei steuern. Jeder Eintrag adressiert Dateien per Glob-Muster (auf die gleiche Weise abgeglichen wie include/ignore) und überschreibt für passende Dateien die globale Einstellung output.compress.

json5
{
  "output": {
    "compress": false, // globaler Standardwert dient als Catch-all
    "patterns": [
      { "pattern": "docs/**/*", "compress": true },
      { "pattern": "website/**/*", "directoryStructureOnly": true }
    ]
  }
}

Jede Datei wird einer von drei Stufen zugeordnet:

  • Vollständiger Inhalt (Standard): Der vollständige Inhalt der Datei wird einbezogen.
  • Komprimiert (compress: true): Der Inhalt wird durch dieselbe Tree-sitter-Pipeline wie bei output.compress geleitet.
  • Nur Verzeichnisstruktur (directoryStructureOnly: true): Die Datei wird in der Verzeichnisstruktur aufgeführt, aber ihr Inhaltsblock wird vollständig aus der Ausgabe weggelassen.

Die Regeln:

  • Muster werden in der Array-Reihenfolge ausgewertet und das erste passende Muster gewinnt für eine gegebene Datei.
  • Die Flags eines passenden Musters überschreiben die globale Einstellung output.compress. Ein Muster, das ohne Setzen eines Flags passt, erzwingt vollständigen Inhalt für diese Datei, was praktisch ist, um Dateien aus einer globalen compress-Einstellung auf eine Whitelist zu setzen.
  • directoryStructureOnly hat Vorrang vor compress, wenn beide im selben Muster gesetzt sind.
  • Wenn kein Muster passt, gilt das globale Verhalten (vollständiger Inhalt oder komprimiert, wenn output.compress auf true steht).

Diese Option ist nur in der Konfigurationsdatei verfügbar; es gibt keine entsprechende CLI-Option.

Dateiprozessoren

input.processors führt einen externen Befehl aus, um den Inhalt einer Datei zu transformieren, bevor sie gepackt wird. Jeder Eintrag adressiert Dateien per Glob-Muster (auf die gleiche Weise abgeglichen wie include/ignore) und ersetzt den Inhalt der passenden Dateien durch die Standardausgabe des Befehls. Dies ist nützlich für Token-reduzierende oder formatkonvertierende Transformationen, zum Beispiel die Konvertierung von JSON zu TOON, das Minifizieren von SVGs oder die Konvertierung von Notebooks in einfache Skripte.

json5
{
  "input": {
    "processors": [
      {
        "pattern": "**/*.json",
        "command": "npx @toon-format/cli {file}"
      }
    ]
  }
}

Funktionsweise:

  • Repomix schreibt den Inhalt jeder passenden Datei in eine temporäre Datei und ersetzt deren Pfad durch den Platzhalter {file} im Befehl (der Platzhalter ist erforderlich).
  • Der Befehl wird über die Shell ausgeführt, sodass Pipes und Tools wie npx funktionieren. Seine Standardausgabe wird zum neuen Inhalt der Datei, der anschließend wie jede andere Datei den Rest der Pipeline durchläuft (Sicherheitsprüfung, Token-Zählung und Ausgabeerstellung).
  • Muster werden in der Array-Reihenfolge ausgewertet und das erste passende Muster gewinnt — eine Datei wird von höchstens einem Prozessor transformiert (keine Verkettung).

Optionen pro Prozessor:

  • timeout: Maximale Wartezeit in Millisekunden für den Befehl. Standard: 60000 (60s). Beachten Sie, dass npx bei einem kalten Cache zusätzliche Zeit zum Herunterladen eines Pakets benötigen kann.
  • onError: Was zu tun ist, wenn der Befehl mit einem Status ungleich Null endet oder eine Zeitüberschreitung auftritt. "fail" (Standard) bricht den gesamten Packvorgang ab; "skip" protokolliert eine Warnung und greift auf den ursprünglichen Inhalt der Datei zurück.

Beispielbefehle (jeweils ein command-Wert, gepaart mit einem passenden pattern):

MustercommandWas er tut
**/*.jsonjq -c . {file}JSON durch Entfernen von Leerzeichen komprimieren
**/*.jsonnpx @toon-format/cli {file}JSON in TOON konvertieren, ein kompaktes, token-effizientes Format
**/*.svgnpx svgo -i {file} -o -SVG minimieren
**/*.ipynbjupyter nbconvert --to script --stdout {file}Ein Jupyter-Notebook in ein einfaches Python-Skript konvertieren

Da das erste passende Muster gewinnt, wenden Sie pro Datei nur einen Prozessor an — wählen Sie zum Beispiel für **/*.json entweder jq oder den TOON-Konverter. Der Befehl muss den transformierten Inhalt in die Standardausgabe schreiben, und das aufgerufene Werkzeug muss in Ihrem PATH verfügbar sein (npx-basierte Befehle laden das Werkzeug bei der ersten Verwendung herunter).

Sicherheit

Dateiprozessoren führen beliebige Befehle aus Ihrer Konfigurationsdatei aus und folgen daher einem strikten Vertrauensmodell:

  • Sie laufen nur bei lokalen CLI-Ausführungen, wobei Repomix davon ausgeht, dass die Konfiguration in Ihrem Arbeitsverzeichnis Ihre eigene ist — dieselbe Vertrauensgrenze wie bei einem npm-Skript oder einem Makefile. Wenn Sie repomix in einem Repository ausführen, das Sie von jemand anderem erhalten haben, ohne vorher dessen repomix.config.json zu prüfen, werden dessen Prozessorbefehle auf Ihrem Rechner ausgeführt. Prüfen Sie die Konfiguration nicht vertrauenswürdiger Repositories, bevor Sie sie packen.
  • Sie sind für die Bibliotheks-API (pack() / runCli()), den MCP-Server und das gehostete repomix.com deaktiviert, sodass keines davon Befehle aus einer Konfiguration ausführen kann.
  • Bei Remote-Repositories (--remote) wird die Konfiguration des geklonten Repositories — und damit dessen Prozessoren — nur vertraut, wenn Sie explizit --remote-trust-config übergeben. Ohne diese Option wird die Remote-Konfiguration nicht einmal geladen.

Aktive Prozessoren werden beim Start protokolliert, sodass unerwartete Prozessoren aus einer unbekannten Konfiguration sichtbar sind. Da der Befehl beim Start und in Fehlermeldungen ausgegeben wird, referenzieren Sie Zugangsdaten über Umgebungsvariablen (z. B. $TOKEN), die dabei nicht aufgelöst protokolliert werden, statt sie direkt in den Befehl einzubetten.

Hinweise:

  • Die Kombination eines formatändernden Prozessors mit output.compress, output.removeComments oder einem output.patterns-compress für dieselbe Datei wird nicht empfohlen: Diese Schritte werden anhand der ursprünglichen Dateierweiterung ausgewählt, sodass sie den falschen Sprach-Handler auf den transformierten Inhalt anwenden würden. Aus demselben Grund kennzeichnet die Markdown-Ausgabe den Code-Block weiterhin anhand der ursprünglichen Dateierweiterung (z. B. wird eine JSON→TOON-Datei als json markiert). Die Komprimierung erfolgt nach bestem Bemühen und greift bei einem Parsing-Fehler stillschweigend auf den transformierten Inhalt zurück.
  • Bei --watch werden passende Dateien bei jedem Rebuild erneut verarbeitet, wodurch der Befehl jedes Mal erneut ausgeführt wird.
  • Bei einer Zeitüberschreitung beendet Repomix die Shell des Befehls; ein Befehl, der eigene langlebige Hintergrundprozesse startet, kann diese weiterlaufen lassen.
  • Prozessoren sehen nur Textdateien (Binärdateien werden vor der Verarbeitung ausgeschlossen), und ihre Ausgabe wird als UTF-8 gelesen.

Git-Integration

Die output.git-Konfiguration bietet leistungsstarke Git-bewusste Funktionen:

  • sortByChanges: Wenn auf true gesetzt, werden Dateien nach der Anzahl der Git-Änderungen (Commits, die die Datei modifiziert haben) sortiert. Häufiger geänderte Dateien erscheinen am Ende der Ausgabe. Dies hilft, aktiver entwickelte Dateien zu priorisieren. Standard: true
  • sortByChangesMaxCommits: Maximale Anzahl zu analysierender Commits bei der Zählung von Dateiänderungen. Standard: 100
  • includeDiffs: Wenn auf true gesetzt, werden Git-Unterschiede in die Ausgabe einbezogen (enthält sowohl Arbeitsverzeichnis- als auch Stage-Änderungen separat). Dies ermöglicht es dem Leser, ausstehende Änderungen im Repository zu sehen. Standard: false
  • includeLogs: Wenn auf true gesetzt, werden Git-Logs in die Ausgabe einbezogen. Zeigt Commit-Historie mit Daten, Nachrichten und Dateipfaden für jeden Commit an. Dies hilft der KI, Entwicklungsmuster und Dateibeziehungen zu verstehen. Standard: false
  • includeLogsCount: Die Anzahl der letzten Commits, die in die Git-Logs einbezogen werden sollen. Standard: 50

Beispielkonfiguration:

json
{
  "output": {
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": true,
      "includeLogs": true,
      "includeLogsCount": 25
    }
  }
}

Sicherheitsprüfungen

Wenn security.enableSecurityCheck aktiviert ist, verwendet Repomix Secretlint, um sensible Informationen zu erkennen, bevor der Code in die Ausgabe aufgenommen wird. Dies hilft, versehentliche Offenlegung zu verhindern von:

  • API-Schlüsseln
  • Zugriffstoken
  • Privaten Schlüsseln
  • Passwörtern
  • Anderen sensiblen Anmeldeinformationen

Kommentarentfernung

Wenn output.removeComments auf true gesetzt ist, werden Kommentare aus unterstützten Dateitypen entfernt, um die Ausgabegröße zu reduzieren und sich auf den wesentlichen Code-Inhalt zu konzentrieren. Dies ist besonders nützlich in folgenden Fällen:

  • Verarbeitung stark dokumentierten Codes
  • Versuch, die Token-Anzahl zu reduzieren
  • Fokussierung auf Code-Struktur und -Logik

Unterstützte Sprachen und detaillierte Beispiele finden Sie im Kommentarentfernungs-Leitfaden.

Verwandte Ressourcen

Released under the MIT License.