Skip to content

Utiliser Repomix comme bibliothèque

En plus d'utiliser Repomix comme outil CLI, vous pouvez intégrer ses fonctionnalités directement dans vos applications Node.js.

Installation

Installez Repomix comme dépendance dans votre projet :

bash
npm install repomix

Utilisation de base

La façon la plus simple d'utiliser Repomix est via la fonction runCli, qui fournit les mêmes fonctionnalités que l'interface en ligne de commande :

javascript
import { runCli, type CliOptions } from 'repomix';

// Traiter le répertoire courant avec des options personnalisées
async function packProject() {
  const options = {
    output: 'output.xml',
    style: 'xml',
    compress: true,
    quiet: true
  } as CliOptions;
  
  const result = await runCli(['.'], process.cwd(), options);
  return result.packResult;
}

Le result.packResult contient des informations sur les fichiers traités, notamment :

  • totalFiles : Nombre de fichiers traités
  • totalCharacters : Nombre total de caractères
  • totalTokens : Nombre total de tokens (utile pour les limites de contexte des LLM)
  • fileCharCounts : Nombre de caractères par fichier
  • fileTokenCounts : Nombre de tokens par fichier

Traitement des dépôts distants

Vous pouvez cloner et traiter un dépôt distant :

javascript
import { runCli, type CliOptions } from 'repomix';

// Cloner et traiter un dépôt GitHub
async function processRemoteRepo(repoUrl) {
  const options = {
    remote: repoUrl,
    output: 'output.xml',
    compress: true
  } as CliOptions;
  
  return await runCli(['.'], process.cwd(), options);
}

Utilisation des composants principaux

Pour un contrôle plus précis, vous pouvez utiliser directement les API de bas niveau de Repomix :

javascript
import { searchFiles, collectFiles, processFiles, TokenCounter } from 'repomix';

async function analyzeFiles(directory) {
  // Rechercher et collecter les fichiers
  const { filePaths } = await searchFiles(directory, { /* configuration */ });
  const rawFiles = await collectFiles(filePaths, directory);
  const processedFiles = await processFiles(rawFiles, { /* configuration */ });
  
  // Compter les tokens
  const tokenCounter = new TokenCounter('o200k_base');
  
  // Retourner les résultats d'analyse
  return processedFiles.map(file => ({
    path: file.path,
    tokens: tokenCounter.countTokens(file.content)
  }));
}

Exemple concret

Le site web de Repomix (repomix.com) utilise Repomix comme bibliothèque pour traiter les dépôts distants. Vous pouvez consulter l'implémentation dans website/server/src/remoteRepo.ts.

Released under the MIT License.