Usar Repomix como Biblioteca
Además de usar Repomix como herramienta CLI, puedes integrar su funcionalidad directamente en tus aplicaciones Node.js.
Instalación
Instala Repomix como dependencia en tu proyecto:
bash
npm install repomix
Uso Básico
La forma más sencilla de usar Repomix es a través de la función runCli
, que proporciona la misma funcionalidad que la interfaz de línea de comandos:
javascript
import { runCli, type CliOptions } from 'repomix';
// Procesar el directorio actual con opciones personalizadas
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;
}
El result.packResult
contiene información sobre los archivos procesados, incluyendo:
totalFiles
: Número de archivos procesadostotalCharacters
: Recuento total de caracterestotalTokens
: Recuento total de tokens (útil para límites de contexto de LLM)fileCharCounts
: Recuento de caracteres por archivofileTokenCounts
: Recuento de tokens por archivo
Procesamiento de Repositorios Remotos
Puedes clonar y procesar un repositorio remoto:
javascript
import { runCli, type CliOptions } from 'repomix';
// Clonar y procesar un repositorio de GitHub
async function processRemoteRepo(repoUrl) {
const options = {
remote: repoUrl,
output: 'output.xml',
compress: true
} as CliOptions;
return await runCli(['.'], process.cwd(), options);
}
Uso de Componentes Principales
Para un mayor control, puedes usar las APIs de bajo nivel de Repomix directamente:
javascript
import { searchFiles, collectFiles, processFiles, TokenCounter } from 'repomix';
async function analyzeFiles(directory) {
// Encontrar y recopilar archivos
const { filePaths } = await searchFiles(directory, { /* configuración */ });
const rawFiles = await collectFiles(filePaths, directory);
const processedFiles = await processFiles(rawFiles, { /* configuración */ });
// Contar tokens
const tokenCounter = new TokenCounter('o200k_base');
// Devolver resultados del análisis
return processedFiles.map(file => ({
path: file.path,
tokens: tokenCounter.countTokens(file.content)
}));
}
Ejemplo del Mundo Real
El sitio web de Repomix (repomix.com) utiliza Repomix como biblioteca para procesar repositorios remotos. Puedes ver la implementación en website/server/src/remoteRepo.ts.