Repomix adalah alat yang ampuh yang mengemas seluruh repositori Anda menjadi satu file yang ramah AI.
Ini sangat cocok untuk saat Anda perlu memberi makan basis kode Anda ke model bahasa besar (LLM) atau alat AI lainnya seperti Claude, ChatGpt, dan Gemini.
Catatan
Karena pertimbangan hukum, proyek ini telah diganti namanya dari "repopack" menjadi "repomix". Hanya nama yang berubah; Repomix Semua fungsionalitas dan pemeliharaan (@yamadashy) tetap sama. Kami berkomitmen untuk memastikan transisi yang lancar untuk semua pengguna.
Untuk terus menggunakan alat ini, cukup instal paket baru:
# Install new package
npm install -g repomix
# Or use directly with npx
npx repomixSecara opsional, Anda juga dapat menghapus instalan paket lama:
npm uninstall -g repopack File konfigurasi Anda yang ada ( repopack.config.json dan .repopackignore ) akan terus bekerja selama periode transisi.
repomix akan secara otomatis mendeteksi file -file ini dan menawarkan untuk memigrasi mereka ke format baru ( repomix.config.json dan .repomixignore ).
Kami menghargai pemahaman dan kerja sama Anda selama transisi ini.
Anda dapat mencoba Repomix secara instan di direktori proyek Anda tanpa instalasi:
npx repomixAtau instal secara global untuk penggunaan berulang:
# 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 Itu saja! Repomix akan menghasilkan file repomix-output.txt di direktori Anda saat ini, berisi seluruh repositori Anda dalam format ramah-AI.
Untuk mengemas seluruh repositori Anda:
repomixUntuk mengemas direktori tertentu:
repomix path/to/directoryUntuk mengemas file atau direktori tertentu menggunakan pola glob:
repomix --include " src/**/*.ts,**/*.md "Untuk mengecualikan file atau direktori tertentu:
repomix --ignore " **/*.log,tmp/ "Untuk mengemas repositori jarak jauh:
repomix --remote https://github.com/yamadashy/repomix
# You can also use GitHub shorthand:
repomix --remote yamadashy/repomix Untuk menginisialisasi file konfigurasi baru ( repomix.config.json ):
repomix --initSetelah Anda menghasilkan file yang dikemas, Anda dapat menggunakannya dengan alat AI generatif seperti Claude, Chatgpt, dan Gemini.
Setelah Anda menghasilkan file yang dikemas dengan Repomix, Anda dapat menggunakannya dengan alat AI seperti Claude, Chatgpt, dan Gemini. Berikut adalah beberapa contoh permintaan untuk memulai:
Untuk tinjauan kode yang komprehensif dan saran refactoring:
This file contains my entire codebase. Please review the overall structure and suggest any improvements or refactoring opportunities, focusing on maintainability and scalability.
Untuk menghasilkan dokumentasi proyek:
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.
Untuk menghasilkan kasus uji:
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.
Mengevaluasi kualitas dan kepatuhan kode terhadap praktik terbaik:
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.
Dapatkan pemahaman tingkat tinggi tentang perpustakaan
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.
Jangan ragu untuk memodifikasi petunjuk ini berdasarkan kebutuhan spesifik Anda dan kemampuan alat AI yang Anda gunakan.
Lihat diskusi komunitas kami di mana pengguna berbagi:
Jangan ragu untuk bergabung dengan diskusi dan berbagi pengalaman Anda sendiri! Wawasan Anda dapat membantu orang lain memanfaatkan repomix dengan lebih baik.
Repomix menghasilkan satu file dengan pemisah yang jelas antara berbagai bagian basis kode Anda.
Untuk meningkatkan pemahaman AI, file output dimulai dengan penjelasan yang berorientasi AI, membuatnya lebih mudah bagi model AI untuk memahami konteks dan struktur repositori yang dikemas.
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`)
Untuk menghasilkan output dalam format XML, gunakan opsi --style xml :
repomix --style xmlFormat XML menyusun konten secara hierarkis:
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 > Bagi mereka yang tertarik dengan potensi tag XML dalam konteks AI:
https://docs.anthropic.com/en/docs/build-with-claude/promppt-engineering/use-xml-tags
Ketika petunjuk Anda melibatkan banyak komponen seperti konteks, instruksi, dan contoh, tag XML bisa menjadi game-changer. Mereka membantu Claude menguraikan petunjuk Anda dengan lebih akurat, yang mengarah ke output berkualitas lebih tinggi.
Ini berarti bahwa output XML dari Repomix bukan hanya format yang berbeda, tetapi berpotensi cara yang lebih efektif untuk memberi makan basis kode Anda ke dalam sistem AI untuk analisis, tinjauan kode, atau tugas lain.
Untuk menghasilkan output dalam format Markdown, gunakan opsi -gaya --style markdown :
repomix --style markdownFormat Markdown menyusun konten secara hierarkis:
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 ` )Format ini menyediakan struktur yang bersih dan mudah dibaca yang ramah manusia dan mudah diisi oleh sistem AI.
-v, --version : Tampilkan versi alat-o, --output <file> : Tentukan nama file output--include <patterns> : daftar pola termasuk (dipisahkan koma)-i, --ignore <patterns> : Pola abaikan tambahan (dipisahkan koma)-c, --config <path> : path ke file konfigurasi khusus--style <style> : Tentukan gaya output ( plain , xml , markdown )--top-files-len <number> : Jumlah file teratas untuk ditampilkan dalam ringkasan--output-show-line-numbers : Tampilkan nomor baris di output--copy : tambahan salin output yang dihasilkan ke System Clipboard--remote <url> : Proses repositori git jarak jauh--verbose : Aktifkan logging verboseContoh:
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 srcUntuk memperbarui repomix yang diinstal secara global:
# Using npm
npm update -g repomix
# Using yarn
yarn global upgrade repomix Menggunakan npx repomix umumnya lebih nyaman karena selalu menggunakan versi terbaru.
Repomix mendukung pemrosesan repositori git jarak jauh tanpa perlu kloning manual. Fitur ini memungkinkan Anda untuk dengan cepat menganalisis repositori git publik dengan satu perintah.
Untuk memproses repositori jarak jauh, gunakan opsi --remote diikuti oleh URL repositori:
repomix --remote https://github.com/user/repo.gitAnda juga dapat menggunakan format steno GitHub:
repomix --remote user/repo Buat file repomix.config.json di root proyek Anda untuk konfigurasi khusus.
repomix --initBerikut penjelasan opsi konfigurasi:
| Pilihan | Keterangan | Bawaan |
|---|---|---|
output.filePath | Nama file output | "repomix-output.txt" |
output.style | Gaya output ( plain , xml , markdown ) | "plain" |
output.headerText | Teks khusus untuk disertakan di header file | null |
output.instructionFilePath | Jalur ke file yang berisi instruksi kustom terperinci | null |
output.removeComments | Apakah akan menghapus komentar dari jenis file yang didukung | false |
output.removeEmptyLines | Apakah akan menghapus saluran kosong dari output | false |
output.showLineNumbers | Apakah akan menambahkan nomor baris ke setiap baris di output | false |
output.copyToClipboard | Apakah akan menyalin output ke clipboard sistem selain menyimpan file | false |
output.topFilesLength | Jumlah file teratas untuk ditampilkan dalam ringkasan. Jika diatur ke 0, tidak ada ringkasan yang akan ditampilkan | 5 |
output.includeEmptyDirectories | Apakah akan memasukkan direktori kosong dalam struktur repositori | false |
include | Pola file untuk dimasukkan (menggunakan pola glob) | [] |
ignore.useGitignore | Apakah akan menggunakan pola dari file .gitignore proyek | true |
ignore.useDefaultPatterns | Apakah akan menggunakan pola abaikan default | true |
ignore.customPatterns | Pola tambahan untuk diabaikan (menggunakan pola glob) | [] |
security.enableSecurityCheck | Apakah akan melakukan pemeriksaan keamanan pada file | true |
Contoh konfigurasi:
{
"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
}
}Untuk membuat file konfigurasi global:
repomix --init --globalFile konfigurasi global akan dibuat di:
%LOCALAPPDATA%Repomixrepomix.config.json$XDG_CONFIG_HOME/repomix/repomix.config.json atau ~/.config/repomix/repomix.config.jsonCatatan: Konfigurasi lokal (jika ada) lebih diutamakan daripada konfigurasi global.
Repomix sekarang mendukung penentu file untuk disertakan menggunakan pola Glob. Ini memungkinkan pemilihan file yang lebih fleksibel dan kuat:
**/*.js untuk memasukkan semua file JavaScript di direktori apa punsrc/**/* untuk memasukkan semua file dalam direktori src dan subdirektori -nya["src/**/*.js", "**/*.md"] untuk memasukkan file JavaScript dalam src dan semua file penurunan harga Repomix menawarkan beberapa metode untuk mengatur pola abaikan untuk mengecualikan file atau direktori tertentu selama proses pengemasan:
.gitignore proyek Anda digunakan. Perilaku ini dapat dikendalikan dengan pengaturan ignore.useGitignore . Usus.ignore.useDefaultPatterns . Silakan lihat defaultignore.ts untuk lebih jelasnya..repomixignore di root proyek Anda untuk mendefinisikan pola abaikan khusus repomix. File ini mengikuti format yang sama dengan .gitignore .ignore.customPatterns dalam file konfigurasi. Anda dapat menimpa pengaturan ini dengan opsi baris perintah -i, --ignore .Urutan prioritas (dari tertinggi ke terendah):
ignore.customPatterns.repomixignore.gitignore (jika ignore.useGitignore benar)ignore.useDefaultPatterns adalah benar)Pendekatan ini memungkinkan konfigurasi pengecualian file yang fleksibel berdasarkan kebutuhan proyek Anda. Ini membantu mengoptimalkan ukuran file paket yang dihasilkan dengan memastikan pengecualian file yang peka terhadap keamanan dan file biner besar, sambil mencegah kebocoran informasi rahasia.
Catatan: File biner tidak termasuk dalam output yang dikemas secara default, tetapi jalurnya tercantum di bagian "Struktur Repositori" dari file output. Ini memberikan gambaran lengkap tentang struktur repositori sambil menjaga file yang dikemas dan berbasis teks.
Opsi output.instructionFilePath memungkinkan Anda untuk menentukan file terpisah yang berisi instruksi atau konteks terperinci tentang proyek Anda. Hal ini memungkinkan sistem AI untuk memahami konteks dan persyaratan spesifik proyek Anda, yang berpotensi mengarah pada analisis atau saran atau saran yang lebih relevan dan dirancang.
Berikut adalah contoh bagaimana Anda dapat menggunakan fitur ini:
repomix-instruction.md di root proyek Anda: # 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 Anda, tambahkan opsi instructionFilePath : {
"output" : {
"instructionFilePath" : "repomix-instruction.md" ,
// other options...
}
} Ketika Repomix menghasilkan output, itu akan mencakup konten repomix-instruction.md di bagian khusus.
Catatan: Konten instruksi ditambahkan di akhir file output. Penempatan ini bisa sangat efektif untuk sistem AI. Bagi mereka yang tertarik untuk memahami mengapa ini mungkin bermanfaat, antropik memberikan beberapa wawasan dalam dokumentasi mereka:
https://docs.anthropic.com/en/docs/build-with-claude/promppt-engineering/long-context-tips
Letakkan data bentuk panjang di bagian atas: Tempatkan dokumen dan input panjang Anda (~ 20K+ token) di dekat bagian atas prompt Anda, di atas kueri, instruksi, dan contoh Anda. Ini secara signifikan dapat meningkatkan kinerja Claude di semua model. Kueri pada akhirnya dapat meningkatkan kualitas respons hingga 30% dalam tes, terutama dengan input multi-dokumen yang kompleks.
Ketika output.removeComments diatur ke true , Repomix akan mencoba menghapus komentar dari jenis file yang didukung. Fitur ini dapat membantu mengurangi ukuran file output dan fokus pada konten kode penting.
Bahasa yang didukung meliputi:
HTML, CSS, JavaScript, TypeScript, Vue, Svelte, Python, PHP, Ruby, C, C#, Java, Go, Rust, Swift, Kotlin, Dart, Shell, dan Yaml.
Catatan: Proses penghapusan komentar konservatif untuk menghindari menghapus kode secara tidak sengaja. Dalam kasus yang kompleks, beberapa komentar mungkin dipertahankan.
Repomix mencakup fitur pemeriksaan keamanan yang menggunakan SecretLint untuk mendeteksi informasi yang berpotensi sensitif di file Anda. Fitur ini membantu Anda mengidentifikasi kemungkinan risiko keamanan sebelum berbagi repositori yang dikemas.
Hasil pemeriksaan keamanan akan ditampilkan dalam output CLI setelah proses pengemasan selesai. Jika ada file yang mencurigakan yang terdeteksi, Anda akan melihat daftar file -file ini bersama dengan pesan peringatan.
Output contoh:
? 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.
Secara default, fitur pemeriksaan keamanan Repomix diaktifkan. Anda false menonaktifkannya dengan mengatur security.enableSecurityCheck .
{
"security" : {
"enableSecurityCheck" : false
}
}Kami menyambut kontribusi dari komunitas! Untuk memulai, silakan merujuk ke Panduan Kontribusi kami.
Proyek ini dilisensikan di bawah lisensi MIT.
Kembali ke atas