Skip to content

Formats de sortie

Repomix prend en charge quatre formats de sortie:

  • XML (par défaut)
  • Markdown
  • JSON
  • Texte brut

Format XML

bash
repomix --style xml

Le format XML est optimisé pour le traitement par l'IA:

xml
Ce fichier est une représentation fusionnée de toute la base de code...
<file_summary>
(Métadonnées et instructions pour l'IA)
</file_summary>
<directory_structure>
src/
  index.ts
  utils/
    helper.ts
</directory_structure>
<files>
<file path="src/index.ts">
// Contenu du fichier ici
</file>
</files>

<git_logs>
2025-08-20 00:47:19 +0900|feat(cli): Add --include-logs option for git commit history
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts

2025-08-21 00:09:43 +0900|Merge pull request #795 from yamadashy/chore/ratchet-update-ci
.github/workflows/ratchet-update.yml
</git_logs>

Pourquoi XML comme format par défaut ?

Repomix utilise XML comme format de sortie par défaut basé sur des recherches et tests approfondis. Cette décision se fonde sur des preuves empiriques et des considérations pratiques pour l'analyse de code assistée par IA.

Notre choix de XML est principalement influencé par les recommandations officielles des principaux fournisseurs d'IA :

  • Anthropic (Claude) : Recommande explicitement l'utilisation de balises XML pour structurer les prompts, déclarant que "Claude a été exposé à de tels prompts pendant l'entraînement" (documentation)
  • Google (Gemini) : Recommande les formats structurés incluant XML pour les tâches complexes (documentation)
  • OpenAI (GPT) : Préconise le prompting structuré dans les scénarios complexes (annonce, cookbook)

Format Markdown

bash
repomix --style markdown

Le Markdown offre un formatage lisible:

markdown
Ce fichier est une représentation fusionnée de toute la base de code...
# Résumé du fichier
(Métadonnées et instructions pour l'IA)
# Structure des répertoires
```
src/
index.ts
utils/
helper.ts
```
# Fichiers
## Fichier: src/index.ts
```typescript
// Contenu du fichier ici
```

# Journaux Git
```
2025-08-20 00:47:19 +0900|feat(cli): Add --include-logs option for git commit history
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts

2025-08-21 00:09:43 +0900|Merge pull request #795 from yamadashy/chore/ratchet-update-ci
.github/workflows/ratchet-update.yml
```

Format JSON

bash
repomix --style json

Le format JSON fournit une sortie structurée et programmatiquement accessible avec des noms de propriétés en camelCase :

json
{
  "fileSummary": {
    "generationHeader": "Ce fichier est une représentation fusionnée de toute la base de code, combinée en un seul document par Repomix.",
    "purpose": "Ce fichier contient une représentation compactée du contenu de tout le dépôt...",
    "fileFormat": "Le contenu est organisé comme suit...",
    "usageGuidelines": "- Ce fichier doit être traité comme étant en lecture seule...",
    "notes": "- Certains fichiers peuvent avoir été exclus selon les règles .gitignore..."
  },
  "userProvidedHeader": "Texte d'en-tête personnalisé si spécifié",
  "directoryStructure": "src/
  cli/
    cliOutput.ts
    index.ts
  config/
    configLoader.ts",
  "files": {
    "src/index.js": "// Contenu du fichier ici",
    "src/utils.js": "// Contenu du fichier ici"
  },
  "instruction": "Instructions personnalisées depuis instructionFilePath"
}

Avantages du format JSON

Le format JSON est idéal pour :

  • Traitement programmatique : Facile à analyser et manipuler avec les bibliothèques JSON dans n'importe quel langage de programmation
  • Intégration API : Consommation directe par les services web et applications
  • Compatibilité outils IA : Format structuré optimisé pour l'apprentissage automatique et les systèmes IA
  • Analyse de données : Extraction simple d'informations spécifiques avec des outils comme jq

Travailler avec la sortie JSON en utilisant jq

Le format JSON facilite l'extraction programmatique d'informations spécifiques. Voici des exemples courants :

Opérations de fichiers de base

bash
# Lister tous les chemins de fichiers
cat repomix-output.json | jq -r '.files | keys[]'

# Compter le nombre total de fichiers
cat repomix-output.json | jq '.files | keys | length'

# Extraire le contenu d'un fichier spécifique
cat repomix-output.json | jq -r '.files["README.md"]'
cat repomix-output.json | jq -r '.files["src/index.js"]'

Filtrage et analyse de fichiers

bash
# Trouver des fichiers par extension
cat repomix-output.json | jq -r '.files | keys[] | select(endswith(".ts"))'
cat repomix-output.json | jq -r '.files | keys[] | select(endswith(".js") or endswith(".ts"))'

# Obtenir des fichiers contenant un texte spécifique
cat repomix-output.json | jq -r '.files | to_entries[] | select(.value | contains("function")) | .key'

# Créer une liste de fichiers avec nombre de caractères
cat repomix-output.json | jq -r '.files | to_entries[] | "\(.key): \(.value | length) caractères"'

Extraction de métadonnées

bash
# Extraire la structure des répertoires
cat repomix-output.json | jq -r '.directoryStructure'

# Obtenir les informations du résumé de fichier
cat repomix-output.json | jq '.fileSummary.purpose'
cat repomix-output.json | jq -r '.fileSummary.generationHeader'

# Extraire l'en-tête fourni par l'utilisateur (s'il existe)
cat repomix-output.json | jq -r '.userProvidedHeader // "Aucun en-tête fourni"'

# Obtenir les instructions personnalisées
cat repomix-output.json | jq -r '.instruction // "Aucune instruction fournie"'

Analyse avancée

bash
# Trouver les plus gros fichiers par longueur de contenu
cat repomix-output.json | jq -r '.files | to_entries[] | [.key, (.value | length)] | @tsv' | sort -k2 -nr | head -10

# Rechercher des fichiers contenant des motifs spécifiques
cat repomix-output.json | jq -r '.files | to_entries[] | select(.value | test("import.*react"; "i")) | .key'

# Extraire les chemins de fichiers correspondant à plusieurs extensions
cat repomix-output.json | jq -r '.files | keys[] | select(test("\.(js|ts|jsx|tsx)$"))'

Format texte brut

bash
repomix --style plain

Structure de sortie:

text
Ce fichier est une représentation fusionnée de toute la base de code...
================
Résumé du fichier
================
(Métadonnées et instructions pour l'IA)
================
Structure des répertoires
================
src/
  index.ts
  utils/
    helper.ts
================
Fichiers
================
================
Fichier: src/index.ts
================
// Contenu du fichier ici

================
Journaux Git
================
2025-08-20 00:47:19 +0900|feat(cli): Add --include-logs option for git commit history
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts

2025-08-21 00:09:43 +0900|Merge pull request #795 from yamadashy/chore/ratchet-update-ci
.github/workflows/ratchet-update.yml

Utilisation avec les modèles d'IA

Chaque format fonctionne bien avec les modèles d'IA, mais considérez :

  • Utilisez XML pour Claude (meilleure précision d'analyse)
  • Utilisez Markdown pour une meilleure lisibilité générale
  • Utilisez JSON pour le traitement programmatique et l'intégration API
  • Utilisez le texte brut pour la simplicité et une compatibilité universelle

Personnalisation

Définissez le format par défaut dans repomix.config.json:

json
{
  "output": {
    "style": "xml",
    "filePath": "output.xml"
  }
}

Released under the MIT License.