# 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](https://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](https://github.com/yamadashy/repomix/blob/main/website/server/src/remoteRepo.ts). 
