RepoMix est un outil puissant qui emballe l'ensemble de votre référentiel en un seul fichier adapté à l'IA.
Il est parfait pour quand vous avez besoin de nourrir votre base de code avec de grands modèles de langue (LLMS) ou d'autres outils d'IA comme Claude, Chatgpt et Gemini.
Note
En raison de considérations juridiques, ce projet a été renommé de "Repopack" à "REPOMIX". Seul le nom change; REPOMIX All Fonctionnality et le mainteller (@yamadashy) restent les mêmes. Nous nous engageons à assurer une transition en douceur pour tous les utilisateurs.
Pour continuer à utiliser l'outil, installez simplement le nouveau package:
# Install new package
npm install -g repomix
# Or use directly with npx
npx repomixFacultativement, vous pouvez également désinstaller l'ancien package:
npm uninstall -g repopack Vos fichiers de configuration existants ( repopack.config.json et .repopackignore ) continueront de fonctionner pendant la période de transition.
repomix détectera automatiquement ces fichiers et offrira de les migrer vers le nouveau format ( repomix.config.json et .repomixignore ).
Nous apprécions votre compréhension et votre coopération pendant cette transition.
Vous pouvez essayer RepoMix instantanément dans votre répertoire de projet sans installation:
npx repomixOu installer globalement pour une utilisation répétée:
# 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 C'est ça! RepoMix générera un fichier repomix-output.txt dans votre répertoire actuel, contenant l'intégralité de votre référentiel dans un format convivial AI.
Pour emballer l'intégralité de votre référentiel:
repomixPour emballer un répertoire spécifique:
repomix path/to/directoryPour emballer des fichiers ou des répertoires spécifiques à l'aide de modèles GLOB:
repomix --include " src/**/*.ts,**/*.md "Pour exclure des fichiers ou des répertoires spécifiques:
repomix --ignore " **/*.log,tmp/ "Pour emballer un référentiel distant:
repomix --remote https://github.com/yamadashy/repomix
# You can also use GitHub shorthand:
repomix --remote yamadashy/repomix Pour initialiser un nouveau fichier de configuration ( repomix.config.json ):
repomix --initUne fois que vous avez généré le fichier emballé, vous pouvez l'utiliser avec des outils AI génératifs comme Claude, Chatgpt et Gemini.
Une fois que vous avez généré le fichier emballé avec Repomix, vous pouvez l'utiliser avec des outils AI comme Claude, Chatgpt et Gemini. Voici quelques exemples d'invites pour vous aider à démarrer:
Pour une revue complète du code et des suggestions de refactorisation:
This file contains my entire codebase. Please review the overall structure and suggest any improvements or refactoring opportunities, focusing on maintainability and scalability.
Pour générer la documentation du projet:
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.
Pour générer des cas de test:
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.
Évaluer la qualité du code et l'adhésion aux meilleures pratiques:
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.
Obtenez une compréhension de haut niveau de la bibliothèque
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.
N'hésitez pas à modifier ces invites en fonction de vos besoins spécifiques et des capacités de l'outil d'IA que vous utilisez.
Consultez notre discussion communautaire où les utilisateurs partagent:
N'hésitez pas à participer à la discussion et à partager vos propres expériences! Vos idées pourraient aider les autres à mieux utiliser REBOMIX.
REPOMIX génère un seul fichier avec des séparateurs clairs entre différentes parties de votre base de code.
Pour améliorer la compréhension de l'IA, le fichier de sortie commence par une explication axée sur l'IA, ce qui permet aux modèles d'IA de comprendre plus facilement le contexte et la structure du référentiel emballé.
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`)
Pour générer une sortie au format XML, utilisez l'option --style xml :
repomix --style xmlLe format XML structure le contenu de manière hiérarchique:
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 > Pour ceux qui s'intéressent au potentiel des balises XML dans les contextes IA:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags
Lorsque vos invites impliquent plusieurs composants comme le contexte, les instructions et les exemples, les balises XML peuvent changer la donne. Ils aident Claude à analyser vos invites plus précisément, ce qui conduit à des sorties de meilleure qualité.
Cela signifie que la sortie XML de RepoMix n'est pas seulement un format différent, mais potentiellement un moyen plus efficace de transmettre votre base de code dans des systèmes d'IA pour l'analyse, l'examen du code ou d'autres tâches.
Pour générer une sortie au format Markdown, utilisez l'option --style markdown :
repomix --style markdownLe format Markdown structure le contenu de manière hiérarchique:
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 ` )Ce format fournit une structure propre et lisible qui est à la fois adaptée aux humains et facilement analysable par les systèmes d'IA.
-v, --version : afficher la version de l'outil-o, --output <file> : Spécifiez le nom du fichier de sortie--include <patterns> : Liste des modèles incluent (séparés des virgules)-i, --ignore <patterns> : modèles d'ignoré supplémentaires (séparés par la virgule)-c, --config <path> : chemin vers un fichier de configuration personnalisé--style <style> : Spécifiez le style de sortie ( plain , xml , markdown )--top-files-len <number> : nombre de fichiers top à afficher dans le résumé--output-show-line-numbers : Afficher les numéros de ligne dans la sortie--copy : Copiez en outre la sortie générée dans le presse-papiers système--remote <url> : traitez un référentiel git distant--verbose : activer la journalisation verbaleExemples:
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 srcPour mettre à jour un RepoMix installé à l'échelle mondiale:
# Using npm
npm update -g repomix
# Using yarn
yarn global upgrade repomix L'utilisation npx repomix est généralement plus pratique car elle utilise toujours la dernière version.
RepoMix prend en charge le traitement des référentiels git distants sans avoir besoin de clonage manuel. Cette fonctionnalité vous permet d'analyser rapidement n'importe quel référentiel Git public avec une seule commande.
Pour traiter un référentiel distant, utilisez l'option --remote suivie de l'URL du référentiel:
repomix --remote https://github.com/user/repo.gitVous pouvez également utiliser le format raccourci de Github:
repomix --remote user/repo Créez un fichier repomix.config.json dans la racine de votre projet pour les configurations personnalisées.
repomix --initVoici une explication des options de configuration:
| Option | Description | Défaut |
|---|---|---|
output.filePath | Le nom du fichier de sortie | "repomix-output.txt" |
output.style | Le style de la sortie ( plain , xml , markdown ) | "plain" |
output.headerText | Texte personnalisé à inclure dans l'en-tête de fichier | null |
output.instructionFilePath | Chemin vers un fichier contenant des instructions personnalisées détaillées | null |
output.removeComments | S'il faut supprimer les commentaires des types de fichiers pris en charge | false |
output.removeEmptyLines | S'il faut supprimer les lignes vides de la sortie | false |
output.showLineNumbers | S'il faut ajouter des numéros de ligne à chaque ligne de la sortie | false |
output.copyToClipboard | S'il faut copier la sortie dans le presse-papiers système en plus d'enregistrer le fichier | false |
output.topFilesLength | Nombre de fichiers supérieurs à afficher dans le résumé. S'il est réglé sur 0, aucun résumé ne sera affiché | 5 |
output.includeEmptyDirectories | Il faut inclure des répertoires vides dans la structure du référentiel | false |
include | Modèles de fichiers à inclure (en utilisant des modèles GLOB) | [] |
ignore.useGitignore | Que ce soit à utiliser les modèles du fichier .gitignore du projet | true |
ignore.useDefaultPatterns | L'avoir utilisé par défaut Ignore Modèles | true |
ignore.customPatterns | Modèles supplémentaires à ignorer (en utilisant des modèles glob) | [] |
security.enableSecurityCheck | S'il faut effectuer des vérifications de sécurité sur les fichiers | true |
Exemple de configuration:
{
"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
}
}Pour créer un fichier de configuration global:
repomix --init --globalLe fichier de configuration global sera créé dans:
%LOCALAPPDATA%Repomixrepomix.config.json$XDG_CONFIG_HOME/repomix/repomix.config.json ou ~/.config/repomix/repomix.config.jsonRemarque: la configuration locale (si présente) a priorité sur la configuration globale.
RepoMix prend désormais en charge la spécification des fichiers pour inclure l'utilisation de modèles GLOB. Cela permet une sélection de fichiers plus flexible et puissante:
**/*.js pour inclure tous les fichiers JavaScript dans n'importe quel répertoiresrc/**/* pour inclure tous les fichiers dans le répertoire src et ses sous-répertoires["src/**/*.js", "**/*.md"] pour inclure des fichiers JavaScript dans src et tous les fichiers de démarrage RepoMix propose plusieurs méthodes pour définir les modèles Ignore pour exclure des fichiers ou des répertoires spécifiques pendant le processus d'emballage:
.gitignore de votre projet sont utilisés. Ce comportement peut être contrôlé avec le paramètre ignore.useGitignore .ignore.useDefaultPatterns . Veuillez consulter DefaultIgnore.ts pour plus de détails..repomixignore dans la racine de votre projet pour définir les modèles d'ignore spécifiques à Repomix. Ce fichier suit le même format que .gitignore .ignore.customPatterns dans le fichier de configuration. Vous pouvez écraser ce paramètre avec l'option de ligne de commande -i, --ignore .Ordre de priorité (du plus haut au plus bas):
ignore.customPatterns.repomixignore.gitignore (si ignore.useGitignore est vrai)ignore.useDefaultPatterns est vrai)Cette approche permet une configuration d'exclusion de fichiers flexible en fonction des besoins de votre projet. Il aide à optimiser la taille du fichier de pack généré en assurant l'exclusion de fichiers sensibles à la sécurité et de grands fichiers binaires, tout en empêchant la fuite d'informations confidentielles.
Remarque: les fichiers binaires ne sont pas inclus dans la sortie emballée par défaut, mais leurs chemins sont répertoriés dans la section "Structure du référentiel" du fichier de sortie. Cela donne un aperçu complet de la structure du référentiel tout en gardant le fichier emballé efficace et basé sur du texte.
L'option output.instructionFilePath vous permet de spécifier un fichier séparé contenant des instructions ou un contexte détaillées sur votre projet. Cela permet aux systèmes d'IA de comprendre le contexte et les exigences spécifiques de votre projet, conduisant potentiellement à des analyses ou des suggestions plus pertinentes et personnalisées.
Voici un exemple de la façon dont vous pourriez utiliser cette fonctionnalité:
repomix-instruction.md dans la racine de votre projet: # 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 , ajoutez l'option instructionFilePath : {
"output" : {
"instructionFilePath" : "repomix-instruction.md" ,
// other options...
}
} Lorsque REPOMIX génère la sortie, il inclura le contenu de repomix-instruction.md dans une section dédiée.
Remarque: Le contenu d'instruction est ajouté à la fin du fichier de sortie. Ce placement peut être particulièrement efficace pour les systèmes d'IA. Pour ceux qui souhaitent comprendre pourquoi cela pourrait être bénéfique, Anthropic fournit quelques informations dans leur documentation:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips
Mettez les données de forme longue en haut: placez vos longs documents et entrées (~ 20K + jetons) près du haut de votre invite, au-dessus de votre requête, des instructions et des exemples. Cela peut améliorer considérablement les performances de Claude sur tous les modèles. Les requêtes à la fin peuvent améliorer la qualité de la réponse jusqu'à 30% dans les tests, en particulier avec des entrées complexes et multi-documents.
Lorsque output.removeComments est défini sur true , RepoMix tentera de supprimer les commentaires des types de fichiers pris en charge. Cette fonction peut aider à réduire la taille du fichier de sortie et à se concentrer sur le contenu du code essentiel.
Les langues prises en charge comprennent:
HTML, CSS, JavaScript, TypeScript, Vue, Svelte, Python, PHP, Ruby, C, C #, Java, Go, Rust, Swift, Kotlin, Dart, Shell et Yaml.
Remarque: Le processus de suppression des commentaires est conservateur pour éviter de supprimer accidentellement le code. Dans des cas complexes, certains commentaires pourraient être conservés.
RepoMix comprend une fonction de vérification de sécurité qui utilise Secretlint pour détecter des informations potentiellement sensibles dans vos fichiers. Cette fonctionnalité vous aide à identifier les risques de sécurité possibles avant de partager votre référentiel emballé.
Les résultats de vérification de sécurité seront affichés dans la sortie CLI une fois le processus d'emballage terminé. Si des fichiers suspects sont détectés, vous verrez une liste de ces fichiers ainsi qu'un message d'avertissement.
Exemple de sortie:
? 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.
Par défaut, la fonction de vérification de sécurité de RepoMix est activée. Vous pouvez le désactiver en définissant security.enableSecurityCheck sur false dans votre fichier de configuration:
{
"security" : {
"enableSecurityCheck" : false
}
}Nous accueillons les contributions de la communauté! Pour commencer, veuillez vous référer à notre guide de contribution.
Ce projet est autorisé sous la licence du MIT.
Retour en haut