# Menggunakan Repomix sebagai Library
Selain sebagai alat command-line, Repomix juga dapat digunakan sebagai library dalam proyek JavaScript atau TypeScript Anda. Ini memungkinkan Anda untuk mengintegrasikan fungsionalitas Repomix langsung ke dalam aplikasi Anda.
## Instalasi
Untuk menggunakan Repomix sebagai library, instal sebagai dependensi:
```bash
npm install repomix
```
## Penggunaan Dasar
Berikut adalah contoh dasar cara menggunakan Repomix sebagai library:
```typescript
import { Repomix } from 'repomix';
async function main() {
// Inisialisasi instance Repomix
const repomix = new Repomix();
// Mengemas direktori saat ini
const result = await repomix.pack({
path: process.cwd(),
output: {
style: 'xml',
filePath: 'output.xml',
},
});
console.log(`Berhasil mengemas ${result.stats.files} file`);
console.log(`Total token: ${result.stats.tokens}`);
}
main().catch(console.error);
```
## Opsi Konfigurasi
Anda dapat meneruskan berbagai opsi ke metode `pack()`:
```typescript
import { Repomix } from 'repomix';
async function main() {
const repomix = new Repomix();
const result = await repomix.pack({
// Jalur ke direktori atau file untuk dikemas
path: './src',
// Opsi output
output: {
style: 'markdown',
filePath: 'output.md',
removeComments: true,
showLineNumbers: true,
topFilesLength: 10,
copyToClipboard: false,
compress: false,
},
// Opsi pengabaian
ignore: {
customPatterns: ['**/*.test.ts', 'node_modules/**'],
respectGitignore: true,
},
// Opsi keamanan
security: {
enabled: true,
},
});
console.log(result);
}
main().catch(console.error);
```
## Mengakses Hasil
Objek hasil berisi informasi tentang proses pengemasan:
```typescript
import { Repomix } from 'repomix';
async function main() {
const repomix = new Repomix();
const result = await repomix.pack({ path: './src' });
// Mengakses statistik
console.log(`Total file: ${result.stats.files}`);
console.log(`Total baris: ${result.stats.lines}`);
console.log(`Total token: ${result.stats.tokens}`);
// Mengakses konten output
console.log(result.content);
// Mengakses informasi file
result.fileInfos.forEach((fileInfo) => {
console.log(`File: ${fileInfo.path}`);
console.log(`Bahasa: ${fileInfo.language}`);
console.log(`Token: ${fileInfo.tokens}`);
});
}
main().catch(console.error);
```
## Kasus Penggunaan
Menggunakan Repomix sebagai library sangat berguna untuk:
### Integrasi dengan Alat Pengembangan
Integrasikan Repomix ke dalam alat pengembangan kustom Anda:
```typescript
import { Repomix } from 'repomix';
import { analyzeCode } from './ai-analyzer';
async function analyzeProject(projectPath) {
const repomix = new Repomix();
const result = await repomix.pack({ path: projectPath });
// Kirim output Repomix ke layanan analisis AI
const analysis = await analyzeCode(result.content);
return analysis;
}
```
### Pemrosesan Batch
Proses beberapa repositori atau direktori secara berurutan:
```typescript
import { Repomix } from 'repomix';
import fs from 'fs/promises';
import path from 'path';
async function processProjects(projectsDir) {
const repomix = new Repomix();
const projects = await fs.readdir(projectsDir);
for (const project of projects) {
const projectPath = path.join(projectsDir, project);
const stats = await fs.stat(projectPath);
if (stats.isDirectory()) {
console.log(`Processing ${project}...`);
const result = await repomix.pack({
path: projectPath,
output: {
filePath: `${project}-output.xml`
}
});
console.log(`Completed ${project}: ${result.stats.files} files, ${result.stats.tokens} tokens`);
}
}
}
```
### Integrasi Web
Integrasikan Repomix ke dalam aplikasi web:
```typescript
import express from 'express';
import { Repomix } from 'repomix';
import multer from 'multer';
import path from 'path';
import fs from 'fs/promises';
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/process', upload.single('repo'), async (req, res) => {
try {
const repomix = new Repomix();
const result = await repomix.pack({
path: req.file.path,
output: {
style: req.body.style || 'xml'
}
});
// Bersihkan file yang diunggah
await fs.unlink(req.file.path);
res.json({
stats: result.stats,
content: result.content
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
```
## API Reference
### Kelas Repomix
```typescript
class Repomix {
constructor(options?: RepomixOptions);
async pack(options: PackOptions): Promise<PackResult>;
}
```
### Tipe PackOptions
```typescript
interface PackOptions {
path?: string;
output?: OutputOptions;
ignore?: IgnoreOptions;
security?: SecurityOptions;
remote?: RemoteOptions;
}
```
### Tipe PackResult
```typescript
interface PackResult {
content: string;
stats: {
files: number;
lines: number;
tokens: number;
};
fileInfos: FileInfo[];
}
```
Untuk informasi lebih lanjut tentang API, lihat [kode sumber Repomix](https://github.com/yamadashy/repomix).