feat(website): Add Vietnamese language support

Co-Authored-By: Kazuki Yamada <koukun0120@gmail.com>
This commit is contained in:
Devin AI
2025-05-26 17:06:01 +00:00
parent b63a7049e7
commit 847986d395
22 changed files with 3002 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ The website documentation is available in the following languages:
- Spanish (Español) (es)
- Portuguese Brazilian (Português do Brasil) (pt-br)
- Indonesian (Bahasa Indonesia) (id)
- Vietnamese (Tiếng Việt) (vi)
All translations should be accurate and maintain consistent terminology across languages. When adding new features or documentation, please ensure that the English version is updated first, followed by translations in other languages.

View File

@@ -8,6 +8,7 @@ import { configJa } from './config/configJa';
import { configKo } from './config/configKo';
import { configPtBr } from './config/configPtBr';
import { configShard } from './config/configShard';
import { configVi } from './config/configVi';
import { configZhCn } from './config/configZhCn';
import { configZhTw } from './config/configZhTw';
@@ -24,5 +25,6 @@ export default defineConfig({
de: { label: 'Deutsch (Deutschland)', ...configDe },
fr: { label: 'Français (France)', ...configFr },
id: { label: 'Indonesia (Indonesia)', ...configId },
vi: { label: 'Tiếng Việt (Việt Nam)', ...configVi },
},
});

View File

@@ -7,6 +7,7 @@ import { configIdSearch } from './configId';
import { configJaSearch } from './configJa';
import { configKoSearch } from './configKo';
import { configPtBrSearch } from './configPtBr';
import { configViSearch } from './configVi';
import { configZhCnSearch } from './configZhCn';
import { configZhTwSearch } from './configZhTw';
@@ -71,6 +72,7 @@ export const configShard = defineConfig({
...configJaSearch,
...configKoSearch,
...configPtBrSearch,
...configViSearch,
...configZhCnSearch,
...configZhTwSearch,
},

View File

@@ -0,0 +1,77 @@
import { type DefaultTheme, defineConfig } from 'vitepress';
export const configVi = defineConfig({
lang: 'vi',
description: 'Đóng gói codebase của bạn thành các định dạng thân thiện với AI',
themeConfig: {
nav: [
{ text: 'Hướng dẫn', link: '/vi/guide/', activeMatch: '^/vi/guide/' },
{
text: 'Tiện ích Chrome',
link: 'https://chromewebstore.google.com/detail/repomix/fimfamikepjgchehkohedilpdigcpkoa',
},
{ text: 'Tham gia Discord', link: 'https://discord.gg/wNYzTwZFku' },
],
sidebar: {
'/vi/guide/': [
{
text: 'Giới thiệu',
items: [
{ text: 'Bắt đầu', link: '/vi/guide/' },
{ text: 'Cài đặt', link: '/vi/guide/installation' },
{ text: 'Sử dụng cơ bản', link: '/vi/guide/usage' },
{ text: 'Ví dụ Prompt', link: '/vi/guide/prompt-examples' },
],
},
{
text: 'Hướng dẫn',
items: [
{ text: 'Định dạng đầu ra', link: '/vi/guide/output' },
{ text: 'Tùy chọn dòng lệnh', link: '/vi/guide/command-line-options' },
{ text: 'Cấu hình', link: '/vi/guide/configuration' },
{ text: 'Hướng dẫn tùy chỉnh', link: '/vi/guide/custom-instructions' },
{ text: 'Xử lý kho lưu trữ từ xa', link: '/vi/guide/remote-repository-processing' },
{ text: 'Xóa bình luận', link: '/vi/guide/comment-removal' },
{ text: 'Nén mã', link: '/vi/guide/code-compress' },
{ text: 'Bảo mật', link: '/vi/guide/security' },
{ text: 'Máy chủ MCP', link: '/vi/guide/mcp-server' },
{ text: 'GitHub Actions', link: '/vi/guide/github-actions' },
],
},
{
text: 'Nâng cao',
items: [
{
text: 'Sử dụng Repomix như một thư viện',
link: '/vi/guide/development/using-repomix-as-a-library',
},
{ text: 'Mẹo phát triển hỗ trợ AI', link: '/vi/guide/tips/best-practices' },
{ text: 'Đóng góp cho Repomix', link: '/vi/guide/development/' },
],
},
],
},
},
});
export const configViSearch: DefaultTheme.LocalSearchOptions['locales'] = {
vi: {
translations: {
button: {
buttonText: 'Tìm kiếm',
buttonAriaLabel: 'Tìm kiếm',
},
modal: {
noResultsText: 'Không tìm thấy kết quả',
resetButtonTitle: 'Đặt lại tìm kiếm',
backButtonTitle: 'Quay lại',
displayDetails: 'Hiển thị chi tiết',
footer: {
selectText: 'Chọn',
navigateText: 'Điều hướng',
closeText: 'Đóng',
},
},
},
},
};

View File

@@ -0,0 +1,194 @@
# Nén mã
Repomix cung cấp tính năng nén mã để giảm kích thước đầu ra bằng cách chỉ bao gồm chữ ký hàm và loại bỏ phần thân hàm. Điều này đặc biệt hữu ích khi làm việc với các codebase lớn và giới hạn token của mô hình ngôn ngữ lớn (LLM).
## Tổng quan
Tính năng nén mã:
- Giữ lại chữ ký hàm, lớp và phương thức
- Loại bỏ phần thân hàm và phương thức
- Duy trì cấu trúc tổng thể của codebase
- Giảm đáng kể số lượng token
Điều này cho phép AI hiểu cấu trúc và API của codebase mà không cần xem xét từng dòng mã triển khai.
## Sử dụng tính năng nén mã
### Thông qua dòng lệnh
Để bật nén mã khi chạy Repomix:
```bash
repomix --compress-code
```
### Thông qua tệp cấu hình
Bạn cũng có thể bật nén mã trong tệp cấu hình `repomix.config.json`:
```json
{
"advanced": {
"compressCode": true
}
}
```
## Ví dụ nén mã
### Mã gốc
```typescript
/**
* Lớp User đại diện cho người dùng trong hệ thống
*/
class User {
private name: string;
private email: string;
private age: number;
/**
* Tạo một người dùng mới
*/
constructor(name: string, email: string, age: number) {
this.name = name;
this.email = email;
this.age = age;
console.log(`Người dùng mới được tạo: ${name}`);
}
/**
* Trả về tên người dùng
*/
getName(): string {
return this.name;
}
/**
* Trả về email người dùng
*/
getEmail(): string {
return this.email;
}
/**
* Trả về tuổi người dùng
*/
getAge(): number {
return this.age;
}
/**
* Kiểm tra xem người dùng có phải là người trưởng thành không
*/
isAdult(): boolean {
return this.age >= 18;
}
/**
* Cập nhật thông tin người dùng
*/
updateInfo(name?: string, email?: string, age?: number): void {
if (name) this.name = name;
if (email) this.email = email;
if (age) this.age = age;
console.log('Thông tin người dùng đã được cập nhật');
}
}
```
### Mã đã nén
```typescript
/**
* Lớp User đại diện cho người dùng trong hệ thống
*/
class User {
private name: string;
private email: string;
private age: number;
/**
* Tạo một người dùng mới
*/
constructor(name: string, email: string, age: number) { /* ... */ }
/**
* Trả về tên người dùng
*/
getName(): string { /* ... */ }
/**
* Trả về email người dùng
*/
getEmail(): string { /* ... */ }
/**
* Trả về tuổi người dùng
*/
getAge(): number { /* ... */ }
/**
* Kiểm tra xem người dùng có phải là người trưởng thành không
*/
isAdult(): boolean { /* ... */ }
/**
* Cập nhật thông tin người dùng
*/
updateInfo(name?: string, email?: string, age?: number): void { /* ... */ }
}
```
## Lợi ích của nén mã
### Giảm số lượng token
Nén mã có thể giảm đáng kể số lượng token cần thiết để đại diện cho codebase, cho phép bạn đưa vào nhiều tệp hơn trong cùng một giới hạn token.
### Tập trung vào cấu trúc
Bằng cách chỉ hiển thị chữ ký hàm, AI có thể tập trung vào cấu trúc tổng thể và API của codebase thay vì chi tiết triển khai.
### Phân tích cấp cao
Nén mã rất hữu ích cho các nhiệm vụ phân tích cấp cao như:
- Hiểu cấu trúc dự án
- Xác định mẫu thiết kế
- Phân tích phụ thuộc
- Tạo tài liệu
## Khi nào nên sử dụng nén mã
Nén mã đặc biệt hữu ích trong các trường hợp sau:
- **Codebase lớn**: Khi codebase của bạn quá lớn để phù hợp với giới hạn token của LLM
- **Phân tích cấu trúc**: Khi bạn muốn AI tập trung vào cấu trúc tổng thể thay vì chi tiết triển khai
- **Tạo tài liệu**: Khi bạn muốn tạo tài liệu dựa trên API công khai
- **Hiểu tổng quan**: Khi bạn cần hiểu tổng quan về một codebase lớn
## Khi nào không nên sử dụng nén mã
Nén mã có thể không phù hợp trong các trường hợp sau:
- **Phân tích mã chi tiết**: Khi bạn cần AI phân tích chi tiết triển khai
- **Tìm lỗi**: Khi bạn đang tìm kiếm lỗi trong mã
- **Tối ưu hóa hiệu suất**: Khi bạn muốn AI đề xuất cải tiến hiệu suất
- **Tái cấu trúc mã**: Khi bạn cần AI hiểu đầy đủ logic hiện tại để đề xuất tái cấu trúc
## Kết hợp với các tính năng khác
Nén mã có thể được kết hợp với các tính năng khác của Repomix:
```bash
repomix --compress-code --remove-comments --style markdown
```
Lệnh này sẽ tạo một đầu ra Markdown với mã đã nén và không có bình luận, giảm đáng kể kích thước đầu ra.
## Tiếp theo là gì?
- [Xóa bình luận](comment-removal.md): Tìm hiểu về tính năng xóa bình luận
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn

View File

@@ -0,0 +1,89 @@
# Tùy chọn dòng lệnh
Repomix cung cấp nhiều tùy chọn dòng lệnh để tùy chỉnh hành vi của nó. Dưới đây là danh sách đầy đủ các tùy chọn có sẵn.
## Tùy chọn cơ bản
| Tùy chọn | Mô tả |
| --- | --- |
| `--help`, `-h` | Hiển thị thông tin trợ giúp |
| `--version`, `-v` | Hiển thị phiên bản |
| `--init` | Tạo tệp cấu hình mẫu (`repomix.config.json`) |
## Tùy chọn đầu vào
| Tùy chọn | Mô tả |
| --- | --- |
| `--remote <url>` | Xử lý kho lưu trữ từ xa thay vì kho lưu trữ cục bộ |
| `--include <patterns>` | Chỉ bao gồm các tệp khớp với các mẫu được cung cấp (phân tách bằng dấu phẩy) |
| `--ignore <patterns>` | Bỏ qua các tệp khớp với các mẫu được cung cấp (phân tách bằng dấu phẩy) |
| `--no-respect-gitignore` | Không tôn trọng các tệp .gitignore |
| `--config <path>` | Chỉ định đường dẫn đến tệp cấu hình |
## Tùy chọn đầu ra
| Tùy chọn | Mô tả |
| --- | --- |
| `--output-file <path>`, `-o <path>` | Chỉ định tên tệp đầu ra |
| `--style <style>` | Định dạng đầu ra (xml, markdown, plain) |
| `--remove-comments` | Xóa bình luận khỏi mã nguồn |
| `--show-line-numbers` | Hiển thị số dòng trong đầu ra |
| `--top-files-length <number>` | Số lượng tệp hàng đầu để hiển thị trong tóm tắt |
## Tùy chọn bảo mật
| Tùy chọn | Mô tả |
| --- | --- |
| `--no-security-check` | Tắt kiểm tra bảo mật |
| `--secretlint-config <path>` | Chỉ định đường dẫn đến tệp cấu hình Secretlint |
## Tùy chọn nâng cao
| Tùy chọn | Mô tả |
| --- | --- |
| `--compress-code` | Nén mã bằng cách chỉ bao gồm chữ ký hàm |
| `--no-token-count` | Tắt đếm token |
| `--no-color` | Tắt đầu ra màu |
| `--debug` | Bật chế độ gỡ lỗi |
## Ví dụ
### Đóng gói với các tùy chọn cơ bản
```bash
repomix --style markdown --output-file codebase.md
```
### Đóng gói với các mẫu bao gồm và loại trừ
```bash
repomix --include "src/**/*.ts,**/*.md" --ignore "**/*.test.ts,docs/**"
```
### Đóng gói với các tùy chọn nâng cao
```bash
repomix --remove-comments --show-line-numbers --compress-code
```
### Đóng gói kho lưu trữ từ xa
```bash
repomix --remote https://github.com/yamadashy/repomix --style markdown
```
## Sử dụng với tệp cấu hình
Thay vì chỉ định tất cả các tùy chọn trên dòng lệnh, bạn có thể sử dụng tệp cấu hình:
```bash
repomix --config custom-config.json
```
Hoặc chỉ cần đặt một tệp `repomix.config.json` trong thư mục hiện tại.
## Tiếp theo là gì?
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Sử dụng cơ bản](usage.md): Quay lại hướng dẫn sử dụng cơ bản
- [Xử lý kho lưu trữ từ xa](remote-repository-processing.md): Tìm hiểu thêm về xử lý kho lưu trữ từ xa

View File

@@ -0,0 +1,178 @@
# Xóa bình luận
Repomix cung cấp tùy chọn để xóa bình luận khỏi mã nguồn trong đầu ra, giúp giảm kích thước đầu ra và tập trung vào mã thực tế.
## Tổng quan
Bình luận trong mã nguồn rất hữu ích cho các nhà phát triển, nhưng chúng có thể:
- Chiếm không gian token quý giá khi làm việc với các mô hình ngôn ngữ lớn (LLMs)
- Chứa thông tin không liên quan hoặc lỗi thời
- Làm phân tâm khỏi cấu trúc mã thực tế
Tính năng xóa bình luận của Repomix giúp giải quyết những vấn đề này bằng cách loại bỏ bình luận khỏi đầu ra.
## Sử dụng tính năng xóa bình luận
### Thông qua dòng lệnh
Để bật xóa bình luận khi chạy Repomix:
```bash
repomix --remove-comments
```
Lệnh này sẽ xóa tất cả các bình luận khỏi mã nguồn trong đầu ra.
### Thông qua tệp cấu hình
Bạn cũng có thể bật xóa bình luận trong tệp cấu hình `repomix.config.json`:
```json
{
"output": {
"removeComments": true
}
}
```
## Các loại bình luận được xóa
Repomix xóa các loại bình luận sau:
### Bình luận dòng đơn
```javascript
// Đây là một bình luận dòng đơn
const x = 5;
```
### Bình luận nhiều dòng
```javascript
/*
* Đây là một bình luận
* nhiều dòng
*/
const y = 10;
```
### Bình luận tài liệu
```javascript
/**
* Hàm này tính tổng hai số
* @param {number} a - Số thứ nhất
* @param {number} b - Số thứ hai
* @returns {number} Tổng của a và b
*/
function add(a, b) {
return a + b;
}
```
### Bình luận JSX/TSX
```jsx
const element = (
<div>
{/* Đây là một bình luận JSX */}
<p>Hello, world!</p>
</div>
);
```
### Bình luận HTML
```html
<!-- Đây là một bình luận HTML -->
<div>Hello, world!</div>
```
## Hỗ trợ ngôn ngữ
Tính năng xóa bình luận hỗ trợ nhiều ngôn ngữ lập trình, bao gồm nhưng không giới hạn ở:
- JavaScript/TypeScript
- Python
- Java
- C/C++
- C#
- Go
- Ruby
- PHP
- HTML/CSS
- Rust
- Swift
- Kotlin
## Khi nào nên sử dụng xóa bình luận
Xóa bình luận đặc biệt hữu ích trong các trường hợp sau:
- **Giới hạn token**: Khi bạn cần giảm số lượng token để phù hợp với giới hạn ngữ cảnh của LLM
- **Tập trung vào mã**: Khi bạn muốn AI tập trung vào mã thực tế thay vì bình luận
- **Bình luận lỗi thời**: Khi codebase có bình luận lỗi thời có thể gây nhầm lẫn cho AI
- **Phân tích mã**: Khi bạn muốn AI phân tích cấu trúc mã mà không bị ảnh hưởng bởi bình luận
## Khi nào nên giữ lại bình luận
Trong một số trường hợp, bạn có thể muốn giữ lại bình luận:
- **Tài liệu API**: Khi bình luận chứa thông tin API quan trọng
- **Giải thích thuật toán phức tạp**: Khi bình luận giải thích các thuật toán hoặc logic phức tạp
- **Bối cảnh dự án**: Khi bình luận cung cấp bối cảnh quan trọng về dự án
- **Hướng dẫn sử dụng**: Khi bình luận chứa hướng dẫn sử dụng quan trọng
## Ví dụ so sánh
### Với bình luận
```javascript
/**
* Lớp User đại diện cho người dùng trong hệ thống
*/
class User {
/**
* Tạo một người dùng mới
* @param {string} name - Tên người dùng
* @param {string} email - Email người dùng
*/
constructor(name, email) {
// Lưu trữ tên người dùng
this.name = name;
// Lưu trữ email người dùng
this.email = email;
}
/**
* Trả về thông tin người dùng dưới dạng chuỗi
* @returns {string} Thông tin người dùng
*/
getInfo() {
// Trả về thông tin người dùng
return `${this.name} (${this.email})`;
}
}
```
### Không có bình luận
```javascript
class User {
constructor(name, email) {
this.name = name;
this.email = email;
}
getInfo() {
return `${this.name} (${this.email})`;
}
}
```
## Tiếp theo là gì?
- [Nén mã](code-compress.md): Tìm hiểu về tính năng nén mã
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn

View File

@@ -0,0 +1,152 @@
# Cấu hình
Repomix có thể được cấu hình thông qua tệp cấu hình JSON, cho phép bạn lưu trữ các tùy chọn và chia sẻ cấu hình giữa các dự án.
## Tạo tệp cấu hình
Để tạo một tệp cấu hình mẫu, hãy chạy:
```bash
repomix --init
```
Lệnh này sẽ tạo một tệp `repomix.config.json` trong thư mục hiện tại với các cài đặt mặc định.
## Vị trí tệp cấu hình
Repomix tìm kiếm tệp cấu hình theo thứ tự sau:
1. Đường dẫn được chỉ định bởi tùy chọn `--config`
2. `repomix.config.json` trong thư mục hiện tại
3. `.repomixrc` trong thư mục hiện tại
4. `.repomixrc.json` trong thư mục hiện tại
5. `.repomixrc.js` trong thư mục hiện tại (phải xuất một đối tượng)
## Cấu trúc cấu hình
Tệp cấu hình có cấu trúc sau:
```json
{
"output": {
"style": "xml",
"filePath": "repomix-output.xml",
"removeComments": false,
"showLineNumbers": false,
"topFilesLength": 10
},
"ignore": {
"respectGitignore": true,
"customPatterns": []
},
"security": {
"check": true,
"secretlintConfigPath": null
},
"advanced": {
"compressCode": false,
"tokenCount": true
}
}
```
## Tùy chọn cấu hình
### Cấu hình đầu ra
| Tùy chọn | Mô tả | Giá trị mặc định |
| --- | --- | --- |
| `output.style` | Định dạng đầu ra | `"xml"` |
| `output.filePath` | Đường dẫn tệp đầu ra | `"repomix-output.xml"` |
| `output.removeComments` | Xóa bình luận khỏi mã nguồn | `false` |
| `output.showLineNumbers` | Hiển thị số dòng trong đầu ra | `false` |
| `output.topFilesLength` | Số lượng tệp hàng đầu để hiển thị trong tóm tắt | `10` |
### Cấu hình bỏ qua
| Tùy chọn | Mô tả | Giá trị mặc định |
| --- | --- | --- |
| `ignore.respectGitignore` | Tôn trọng các tệp .gitignore | `true` |
| `ignore.customPatterns` | Mảng các mẫu glob để bỏ qua | `[]` |
### Cấu hình bảo mật
| Tùy chọn | Mô tả | Giá trị mặc định |
| --- | --- | --- |
| `security.check` | Bật kiểm tra bảo mật | `true` |
| `security.secretlintConfigPath` | Đường dẫn đến tệp cấu hình Secretlint | `null` |
### Cấu hình nâng cao
| Tùy chọn | Mô tả | Giá trị mặc định |
| --- | --- | --- |
| `advanced.compressCode` | Nén mã bằng cách chỉ bao gồm chữ ký hàm | `false` |
| `advanced.tokenCount` | Bật đếm token | `true` |
## Ví dụ cấu hình
### Cấu hình cơ bản
```json
{
"output": {
"style": "markdown",
"filePath": "codebase.md"
}
}
```
### Cấu hình với mẫu bỏ qua tùy chỉnh
```json
{
"output": {
"style": "xml",
"filePath": "repomix-output.xml"
},
"ignore": {
"respectGitignore": true,
"customPatterns": ["*.test.ts", "docs/**", "**/*.log"]
}
}
```
### Cấu hình đầy đủ
```json
{
"output": {
"style": "markdown",
"filePath": "codebase.md",
"removeComments": true,
"showLineNumbers": true,
"topFilesLength": 20
},
"ignore": {
"respectGitignore": true,
"customPatterns": ["*.test.ts", "docs/**"]
},
"security": {
"check": true,
"secretlintConfigPath": "./secretlint.config.js"
},
"advanced": {
"compressCode": true,
"tokenCount": true
}
}
```
## Ghi đè cấu hình
Các tùy chọn dòng lệnh sẽ ghi đè các cài đặt trong tệp cấu hình. Ví dụ, nếu tệp cấu hình của bạn chỉ định `"style": "xml"` nhưng bạn chạy `repomix --style markdown`, đầu ra sẽ ở định dạng Markdown.
## Sử dụng .repomixignore
Ngoài việc chỉ định các mẫu bỏ qua trong tệp cấu hình, bạn cũng có thể tạo một tệp `.repomixignore` trong thư mục gốc của dự án. Tệp này sử dụng cú pháp tương tự như `.gitignore` và sẽ được sử dụng cùng với bất kỳ mẫu bỏ qua nào được chỉ định trong tệp cấu hình.
## Tiếp theo là gì?
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Hướng dẫn tùy chỉnh](custom-instructions.md): Tìm hiểu về hướng dẫn tùy chỉnh
- [Bảo mật](security.md): Tìm hiểu về tính năng bảo mật của Repomix

View File

@@ -0,0 +1,115 @@
# Hướng dẫn tùy chỉnh
Repomix cho phép bạn thêm hướng dẫn tùy chỉnh vào đầu ra của mình, giúp hướng dẫn AI về cách hiểu và làm việc với codebase của bạn.
## Tổng quan
Hướng dẫn tùy chỉnh là một cách mạnh mẽ để:
1. Cung cấp ngữ cảnh về dự án của bạn
2. Giải thích các quy ước mã
3. Hướng dẫn AI về các phần quan trọng của codebase
4. Chỉ định các nhiệm vụ cụ thể bạn muốn AI thực hiện
## Thêm hướng dẫn tùy chỉnh
Có hai cách chính để thêm hướng dẫn tùy chỉnh vào đầu ra Repomix:
### 1. Sử dụng tệp hướng dẫn
Cách được khuyến nghị là tạo một tệp hướng dẫn riêng biệt và tham chiếu đến nó khi chạy Repomix:
```bash
repomix --instructions path/to/instructions.md
```
Tệp hướng dẫn có thể ở bất kỳ định dạng nào (Markdown được khuyến nghị cho khả năng đọc), và nội dung của nó sẽ được thêm vào đầu ra.
### 2. Sử dụng tệp cấu hình
Bạn cũng có thể chỉ định hướng dẫn trong tệp cấu hình Repomix:
```json
{
"output": {
"style": "xml",
"filePath": "repomix-output.xml"
},
"instructions": {
"content": "Đây là codebase của dự án X. Vui lòng tập trung vào...",
"filePath": "path/to/instructions.md"
}
}
```
Nếu cả `content``filePath` đều được chỉ định, `filePath` sẽ được ưu tiên.
## Hướng dẫn tùy chỉnh trong thư mục
Repomix cũng hỗ trợ hướng dẫn tùy chỉnh dựa trên thư mục. Bạn có thể tạo các tệp hướng dẫn trong thư mục `.github/instructions/` của kho lưu trữ của bạn:
- `.github/instructions/base.instructions.md`: Hướng dẫn cơ bản áp dụng cho toàn bộ kho lưu trữ
- `.github/instructions/path/to/dir.instructions.md`: Hướng dẫn cụ thể cho thư mục
Mỗi tệp hướng dẫn có thể bắt đầu bằng front matter YAML để chỉ định phạm vi áp dụng:
```markdown
---
applyTo: '**/*.ts'
---
# Hướng dẫn TypeScript
Các tệp TypeScript trong dự án này tuân theo...
```
Thuộc tính `applyTo` chấp nhận các mẫu glob để chỉ định các tệp mà hướng dẫn áp dụng.
## Ví dụ hướng dẫn tùy chỉnh
Dưới đây là một ví dụ về tệp hướng dẫn tùy chỉnh hiệu quả:
```markdown
# Hướng dẫn dự án Repomix
## Tổng quan dự án
Repomix là một công cụ đóng gói kho lưu trữ mã nguồn thành các định dạng thân thiện với AI. Nó được thiết kế để giúp bạn chia sẻ codebase của mình với các mô hình ngôn ngữ lớn.
## Cấu trúc dự án
- `src/`: Mã nguồn chính
- `core/`: Chức năng cốt lõi để xử lý kho lưu trữ
- `formatters/`: Các trình định dạng đầu ra (XML, Markdown, Plain)
- `utils/`: Tiện ích và trợ giúp
## Quy ước mã
- Chúng tôi sử dụng TypeScript với kiểu nghiêm ngặt
- Chúng tôi tuân theo quy ước đặt tên camelCase cho biến và PascalCase cho lớp
- Các hàm nên có một trách nhiệm duy nhất
## Nhiệm vụ
Vui lòng phân tích codebase và đề xuất cách cải thiện:
1. Xác định các vấn đề hiệu suất tiềm ẩn
2. Đề xuất cải tiến cho khả năng bảo trì
3. Đánh giá khả năng mở rộng của kiến trúc hiện tại
## Lưu ý quan trọng
- Tệp `src/core/processor.ts` chứa logic xử lý chính
- Chúng tôi đang xem xét thêm hỗ trợ cho các định dạng đầu ra mới
```
## Thực hành tốt nhất
Khi tạo hướng dẫn tùy chỉnh:
1. **Bắt đầu với tổng quan**: Cung cấp ngữ cảnh ngắn gọn về dự án
2. **Giải thích cấu trúc**: Phác thảo cấu trúc thư mục và mục đích của chúng
3. **Làm rõ quy ước**: Đề cập đến bất kỳ quy ước mã hoặc mẫu thiết kế nào
4. **Chỉ định nhiệm vụ**: Nêu rõ những gì bạn muốn AI làm
5. **Đánh dấu các khu vực quan trọng**: Hướng dẫn sự chú ý đến các tệp hoặc mô-đun quan trọng
6. **Giữ ngắn gọn**: Tập trung vào thông tin có giá trị nhất
## Tiếp theo là gì?
- [Xử lý kho lưu trữ từ xa](remote-repository-processing.md): Tìm hiểu về xử lý kho lưu trữ từ xa
- [Cấu hình](configuration.md): Tìm hiểu thêm về tùy chọn cấu hình
- [Bảo mật](security.md): Tìm hiểu về tính năng bảo mật của Repomix

View File

@@ -0,0 +1,190 @@
# Đóng góp cho Repomix
Repomix là một dự án mã nguồn mở và chúng tôi hoan nghênh đóng góp từ cộng đồng. Trang này cung cấp thông tin về cách bạn có thể đóng góp cho dự án.
## Thiết lập môi trường phát triển
### Yêu cầu
- Node.js (phiên bản 16 trở lên)
- npm hoặc yarn
- Git
### Clone kho lưu trữ
```bash
git clone https://github.com/yamadashy/repomix.git
cd repomix
```
### Cài đặt phụ thuộc
```bash
npm install
```
hoặc nếu bạn sử dụng yarn:
```bash
yarn install
```
### Xây dựng dự án
```bash
npm run build
```
### Chạy các bài kiểm tra
```bash
npm run test
```
### Chạy linter
```bash
npm run lint
```
## Cấu trúc dự án
Dự án Repomix được tổ chức như sau:
```
repomix/
├── src/ # Mã nguồn chính
│ ├── cli/ # Giao diện dòng lệnh
│ ├── core/ # Chức năng cốt lõi
│ ├── formatters/ # Trình định dạng đầu ra
│ ├── security/ # Kiểm tra bảo mật
│ └── utils/ # Tiện ích
├── test/ # Bài kiểm tra
├── website/ # Tài liệu trang web
├── .github/ # Cấu hình GitHub
├── package.json # Cấu hình npm
└── tsconfig.json # Cấu hình TypeScript
```
## Quy trình đóng góp
### 1. Tạo một vấn đề
Trước khi bắt đầu làm việc trên một tính năng hoặc sửa lỗi, hãy tạo một vấn đề trên GitHub để thảo luận về nó. Điều này giúp đảm bảo rằng công việc của bạn phù hợp với hướng đi của dự án và tránh trùng lặp nỗ lực.
### 2. Fork kho lưu trữ
Fork kho lưu trữ Repomix vào tài khoản GitHub của bạn.
### 3. Tạo một nhánh
Tạo một nhánh mới cho tính năng hoặc sửa lỗi của bạn:
```bash
git checkout -b feature/your-feature-name
```
hoặc
```bash
git checkout -b fix/your-bug-fix
```
### 4. Thực hiện thay đổi của bạn
Thực hiện thay đổi của bạn, tuân theo các quy ước mã của dự án:
- Sử dụng TypeScript cho mã mới
- Tuân theo quy ước đặt tên camelCase cho biến và PascalCase cho lớp
- Viết bài kiểm tra cho mã mới
- Đảm bảo tất cả các bài kiểm tra đều vượt qua
- Cập nhật tài liệu nếu cần
### 5. Commit thay đổi của bạn
```bash
git add .
git commit -m "feat: add new feature" # hoặc "fix: fix some bug"
```
Chúng tôi sử dụng quy ước commit [Conventional Commits](https://www.conventionalcommits.org/).
### 6. Đẩy lên fork của bạn
```bash
git push origin feature/your-feature-name
```
### 7. Tạo một Pull Request
Tạo một Pull Request từ nhánh của bạn đến nhánh `main` của kho lưu trữ Repomix. Trong mô tả Pull Request của bạn:
- Tham chiếu đến vấn đề mà PR giải quyết
- Mô tả thay đổi của bạn
- Mô tả cách kiểm tra thay đổi của bạn
- Thêm ảnh chụp màn hình nếu có thay đổi trực quan
### 8. Xem xét mã
Nhóm Repomix sẽ xem xét PR của bạn và có thể yêu cầu thay đổi. Hãy kiên nhẫn và phản hồi các yêu cầu xem xét một cách kịp thời.
### 9. Hợp nhất
Sau khi PR của bạn được phê duyệt, nó sẽ được hợp nhất vào nhánh chính.
## Hướng dẫn đóng góp
### Mã
- Viết mã rõ ràng và dễ bảo trì
- Bao gồm nhận xét cho mã phức tạp
- Tuân theo các quy ước mã hiện có
- Viết bài kiểm tra cho mã mới
- Đảm bảo tất cả các bài kiểm tra đều vượt qua
- Cập nhật tài liệu nếu cần
### Tài liệu
- Viết tài liệu rõ ràng và ngắn gọn
- Bao gồm ví dụ khi có thể
- Kiểm tra chính tả và ngữ pháp
- Giữ cho tài liệu cập nhật với các thay đổi mã
### Báo cáo lỗi
Khi báo cáo lỗi, hãy bao gồm:
- Phiên bản Repomix bạn đang sử dụng
- Hệ điều hành và phiên bản của bạn
- Các bước để tái tạo lỗi
- Hành vi thực tế và hành vi mong đợi
- Ảnh chụp màn hình hoặc nhật ký nếu có
### Yêu cầu tính năng
Khi yêu cầu tính năng, hãy bao gồm:
- Mô tả rõ ràng về tính năng
- Lý do tại sao tính năng này sẽ có giá trị
- Ví dụ về cách tính năng sẽ được sử dụng
- Bất kỳ tài liệu tham khảo hoặc ví dụ từ các dự án khác
## Phát hành
Repomix tuân theo [Semantic Versioning](https://semver.org/). Các phiên bản được đặt tên theo định dạng `MAJOR.MINOR.PATCH`:
- `MAJOR`: Thay đổi không tương thích với API
- `MINOR`: Thêm chức năng tương thích ngược
- `PATCH`: Sửa lỗi tương thích ngược
## Liên hệ
Nếu bạn có bất kỳ câu hỏi nào về đóng góp cho Repomix, vui lòng:
- [Tham gia Discord của chúng tôi](https://discord.gg/wNYzTwZFku)
- [Mở một vấn đề trên GitHub](https://github.com/yamadashy/repomix/issues)
## Tiếp theo là gì?
- [Sử dụng Repomix như một thư viện](using-repomix-as-a-library.md): Tìm hiểu cách sử dụng Repomix như một thư viện trong dự án của bạn
- [Mẹo phát triển hỗ trợ AI](../tips/best-practices.md): Tìm hiểu về các thực hành tốt nhất cho phát triển hỗ trợ AI

View File

@@ -0,0 +1,311 @@
# Sử dụng Repomix như một thư viện
Ngoài việc sử dụng Repomix như một công cụ dòng lệnh, bạn cũng có thể tích hợp nó trực tiếp vào các ứng dụng JavaScript hoặc TypeScript của mình như một thư viện.
## Cài đặt
Để sử dụng Repomix như một thư viện, trước tiên hãy cài đặt nó như một phụ thuộc:
```bash
# Sử dụng npm
npm install repomix
# Sử dụng yarn
yarn add repomix
# Sử dụng pnpm
pnpm add repomix
```
## Sử dụng cơ bản
Dưới đây là một ví dụ cơ bản về cách sử dụng Repomix trong mã của bạn:
```typescript
import { processRepository } from 'repomix';
async function packMyRepo() {
try {
const result = await processRepository({
path: '/path/to/your/repository',
output: {
style: 'xml',
filePath: 'output.xml',
},
});
console.log('Repository packed successfully!');
console.log(`Output saved to: ${result.outputPath}`);
console.log(`Total files: ${result.stats.fileCount}`);
console.log(`Total tokens: ${result.stats.totalTokens}`);
} catch (error) {
console.error('Error packing repository:', error);
}
}
packMyRepo();
```
## API
### processRepository
Hàm chính để xử lý một kho lưu trữ:
```typescript
async function processRepository(options: RepositoryProcessorOptions): Promise<RepositoryProcessorResult>
```
#### Tùy chọn
Đối tượng `RepositoryProcessorOptions` chấp nhận các tùy chọn sau:
```typescript
interface RepositoryProcessorOptions {
// Đường dẫn đến kho lưu trữ cục bộ
path?: string;
// URL của kho lưu trữ từ xa (thay thế cho path)
remote?: string;
// Cấu hình đầu ra
output?: {
// Định dạng đầu ra (xml, markdown, plain)
style?: 'xml' | 'markdown' | 'plain';
// Đường dẫn tệp đầu ra
filePath?: string;
// Xóa bình luận khỏi mã nguồn
removeComments?: boolean;
// Hiển thị số dòng trong đầu ra
showLineNumbers?: boolean;
// Số lượng tệp hàng đầu để hiển thị trong tóm tắt
topFilesLength?: number;
// Nội dung hướng dẫn tùy chỉnh
instructions?: string;
// Đường dẫn đến tệp hướng dẫn
instructionsPath?: string;
};
// Cấu hình bỏ qua
ignore?: {
// Tôn trọng các tệp .gitignore
respectGitignore?: boolean;
// Mảng các mẫu glob để bỏ qua
customPatterns?: string[];
};
// Cấu hình bảo mật
security?: {
// Bật kiểm tra bảo mật
check?: boolean;
// Đường dẫn đến tệp cấu hình Secretlint
secretlintConfigPath?: string;
};
// Cấu hình nâng cao
advanced?: {
// Nén mã bằng cách chỉ bao gồm chữ ký hàm
compressCode?: boolean;
// Bật đếm token
tokenCount?: boolean;
};
// Mẫu bao gồm (phân tách bằng dấu phẩy)
include?: string;
}
```
#### Kết quả
Hàm `processRepository` trả về một Promise giải quyết thành một đối tượng `RepositoryProcessorResult`:
```typescript
interface RepositoryProcessorResult {
// Đường dẫn đến tệp đầu ra
outputPath: string;
// Nội dung đầu ra
output: string;
// Thống kê về kho lưu trữ đã xử lý
stats: {
// Số lượng tệp đã xử lý
fileCount: number;
// Tổng số dòng
totalLines: number;
// Tổng số token
totalTokens: number;
// Thông tin về các tệp hàng đầu
topFiles: Array<{
path: string;
lines: number;
tokens: number;
}>;
};
}
```
## Ví dụ nâng cao
### Xử lý kho lưu trữ từ xa
```typescript
import { processRepository } from 'repomix';
async function packRemoteRepo() {
const result = await processRepository({
remote: 'https://github.com/yamadashy/repomix',
output: {
style: 'markdown',
filePath: 'repomix-source.md',
},
});
console.log(`Repository packed to: ${result.outputPath}`);
}
packRemoteRepo();
```
### Tùy chọn đầu ra tùy chỉnh
```typescript
import { processRepository } from 'repomix';
async function packWithCustomOptions() {
const result = await processRepository({
path: './my-project',
output: {
style: 'xml',
filePath: 'output.xml',
removeComments: true,
showLineNumbers: true,
topFilesLength: 20,
instructions: 'Đây là codebase của dự án X. Vui lòng tập trung vào...',
},
ignore: {
respectGitignore: true,
customPatterns: ['*.test.ts', 'docs/**'],
},
advanced: {
compressCode: true,
tokenCount: true,
},
});
console.log(`Packed ${result.stats.fileCount} files with ${result.stats.totalTokens} tokens`);
}
packWithCustomOptions();
```
### Xử lý đầu ra trong bộ nhớ
```typescript
import { processRepository } from 'repomix';
import * as fs from 'fs';
async function processAndModifyOutput() {
// Xử lý kho lưu trữ
const result = await processRepository({
path: './my-project',
output: {
style: 'markdown',
// Không chỉ định filePath để không ghi vào tệp
},
});
// Sửa đổi đầu ra
const modifiedOutput = `# Codebase được xử lý bởi ứng dụng tùy chỉnh\n\n${result.output}`;
// Ghi đầu ra đã sửa đổi vào tệp
fs.writeFileSync('custom-output.md', modifiedOutput);
console.log('Custom processing complete!');
}
processAndModifyOutput();
```
### Tích hợp với Express
```typescript
import express from 'express';
import { processRepository } from 'repomix';
const app = express();
app.use(express.json());
app.post('/process', async (req, res) => {
try {
const { repoPath, options } = req.body;
const result = await processRepository({
path: repoPath,
...options,
});
res.json({
success: true,
stats: result.stats,
output: result.output,
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message,
});
}
});
app.listen(3000, () => {
console.log('Repomix API server running on port 3000');
});
```
## Xử lý lỗi
Khi sử dụng Repomix như một thư viện, hãy đảm bảo xử lý lỗi đúng cách:
```typescript
import { processRepository } from 'repomix';
async function safelyPackRepo() {
try {
const result = await processRepository({
path: './my-project',
});
return result;
} catch (error) {
if (error.code === 'SECURITY_ISSUE') {
console.error('Security issue detected:', error.message);
// Xử lý vấn đề bảo mật
} else if (error.code === 'INVALID_PATH') {
console.error('Invalid repository path:', error.message);
// Xử lý đường dẫn không hợp lệ
} else {
console.error('Unexpected error:', error);
// Xử lý lỗi khác
}
throw error; // Hoặc xử lý lỗi và trả về giá trị mặc định
}
}
```
## Tiếp theo là gì?
- [Đóng góp cho Repomix](./index.md): Tìm hiểu cách đóng góp cho dự án
- [Mẹo phát triển hỗ trợ AI](../tips/best-practices.md): Tìm hiểu về các thực hành tốt nhất cho phát triển hỗ trợ AI
- [Cấu hình](../configuration.md): Tìm hiểu thêm về các tùy chọn cấu hình

View File

@@ -0,0 +1,205 @@
# GitHub Actions
Repomix có thể được tích hợp vào quy trình CI/CD của bạn bằng cách sử dụng GitHub Actions, cho phép bạn tự động đóng gói kho lưu trữ của mình và cung cấp đầu ra cho các bước tiếp theo.
## Tổng quan
Tích hợp Repomix với GitHub Actions cho phép bạn:
- Tự động đóng gói kho lưu trữ của bạn khi có thay đổi
- Lưu trữ đầu ra đã đóng gói dưới dạng artifact
- Sử dụng đầu ra đã đóng gói trong các bước quy trình công việc tiếp theo
- Tích hợp với các công cụ AI trong quy trình CI/CD của bạn
## Sử dụng hành động Repomix
Repomix cung cấp một hành động GitHub chính thức mà bạn có thể sử dụng trong quy trình công việc của mình:
```yaml
name: Repomix
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Pack repository
uses: yamadashy/repomix-action@v1
with:
output-file: 'repomix-output.xml'
style: 'xml'
remove-comments: false
show-line-numbers: false
- name: Upload packed output
uses: actions/upload-artifact@v3
with:
name: repomix-output
path: repomix-output.xml
```
## Tùy chọn cấu hình
Hành động Repomix hỗ trợ các tùy chọn cấu hình sau:
| Tùy chọn | Mô tả | Mặc định |
| --- | --- | --- |
| `output-file` | Tên tệp đầu ra | `repomix-output.xml` |
| `style` | Định dạng đầu ra (xml, markdown, plain) | `xml` |
| `remove-comments` | Xóa bình luận khỏi mã nguồn | `false` |
| `show-line-numbers` | Hiển thị số dòng trong đầu ra | `false` |
| `include` | Mẫu bao gồm (phân tách bằng dấu phẩy) | |
| `ignore` | Mẫu bỏ qua (phân tách bằng dấu phẩy) | |
| `respect-gitignore` | Tôn trọng các tệp .gitignore | `true` |
| `compress-code` | Nén mã bằng cách chỉ bao gồm chữ ký hàm | `false` |
| `security-check` | Bật kiểm tra bảo mật | `true` |
| `token-count` | Bật đếm token | `true` |
## Ví dụ quy trình công việc
### Đóng gói và tải lên artifact
```yaml
name: Pack Repository
on:
push:
branches: [ main ]
jobs:
pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Pack repository
uses: yamadashy/repomix-action@v1
with:
output-file: 'codebase.md'
style: 'markdown'
remove-comments: true
show-line-numbers: true
- name: Upload packed output
uses: actions/upload-artifact@v3
with:
name: codebase
path: codebase.md
```
### Đóng gói với các mẫu tùy chỉnh
```yaml
name: Pack Repository
on:
push:
branches: [ main ]
jobs:
pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Pack repository
uses: yamadashy/repomix-action@v1
with:
output-file: 'repomix-output.xml'
include: 'src/**/*.ts,**/*.md'
ignore: '**/*.test.ts,docs/**'
compress-code: true
```
### Đóng gói và sử dụng trong bước tiếp theo
```yaml
name: Analyze Repository
on:
push:
branches: [ main ]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Pack repository
uses: yamadashy/repomix-action@v1
with:
output-file: 'codebase.md'
style: 'markdown'
- name: Analyze codebase
uses: some-ai-analysis-action@v1
with:
input-file: 'codebase.md'
```
## Sử dụng Repomix trực tiếp
Nếu bạn muốn sử dụng Repomix trực tiếp trong quy trình công việc của mình thay vì sử dụng hành động chính thức, bạn có thể làm như sau:
```yaml
name: Pack Repository
on:
push:
branches: [ main ]
jobs:
pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install Repomix
run: npm install -g repomix
- name: Pack repository
run: repomix --style markdown --output-file codebase.md
- name: Upload packed output
uses: actions/upload-artifact@v3
with:
name: codebase
path: codebase.md
```
## Lưu ý bảo mật
Khi sử dụng Repomix trong GitHub Actions, hãy lưu ý những điểm sau:
- Đảm bảo rằng kiểm tra bảo mật được bật để ngăn chặn việc vô tình tiết lộ thông tin nhạy cảm
- Xem xét sử dụng bí mật GitHub cho thông tin nhạy cảm thay vì mã hóa cứng chúng trong mã
- Hãy cẩn thận khi chia sẻ artifact đã đóng gói, vì chúng có thể chứa thông tin nhạy cảm
## Tiếp theo là gì?
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Bảo mật](security.md): Tìm hiểu về tính năng bảo mật của Repomix

View File

@@ -0,0 +1,66 @@
# Bắt đầu với Repomix
<script setup>
import HomeBadges from '../../../components/HomeBadges.vue'
</script>
Repomix là một công cụ đóng gói toàn bộ kho lưu trữ của bạn thành một tệp duy nhất, thân thiện với AI. Nó được thiết kế để giúp bạn cung cấp codebase cho các Mô hình Ngôn ngữ Lớn (LLMs) như ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, và nhiều mô hình khác.
<HomeBadges />
## Bắt đầu nhanh
Chạy lệnh này trong thư mục dự án của bạn:
```bash
npx repomix
```
Vậy là xong! Bạn sẽ tìm thấy một tệp `repomix-output.xml` chứa toàn bộ kho lưu trữ của bạn ở định dạng thân thiện với AI.
Sau đó, bạn có thể gửi tệp này đến trợ lý AI với một prompt như:
```
Tệp này chứa tất cả các tệp trong kho lưu trữ được kết hợp thành một.
Tôi muốn tái cấu trúc mã, vì vậy hãy xem xét nó trước.
```
AI sẽ phân tích toàn bộ codebase của bạn và cung cấp những hiểu biết toàn diện:
![Repomix File Usage 1](/images/docs/repomix-file-usage-1.png)
Khi thảo luận về các thay đổi cụ thể, AI có thể giúp tạo mã. Với các tính năng như Artifacts của Claude, bạn thậm chí có thể nhận được nhiều tệp phụ thuộc lẫn nhau:
![Repomix File Usage 2](/images/docs/repomix-file-usage-2.png)
Chúc bạn code vui vẻ! 🚀
## Tính năng chính
- **Đầu ra được tối ưu hóa cho AI**: Định dạng codebase của bạn để AI dễ dàng xử lý
- **Đếm token**: Theo dõi việc sử dụng token cho giới hạn ngữ cảnh LLM
- **Nhận biết Git**: Tôn trọng các tệp `.gitignore``.git/info/exclude` của bạn
- **Tập trung vào bảo mật**: Phát hiện thông tin nhạy cảm
- **Nhiều định dạng đầu ra**: Lựa chọn giữa văn bản thuần túy, XML hoặc Markdown
## Tiếp theo là gì?
- [Hướng dẫn cài đặt](installation.md): Các cách khác nhau để cài đặt Repomix
- [Hướng dẫn sử dụng](usage.md): Tìm hiểu về các tính năng cơ bản và nâng cao
- [Cấu hình](configuration.md): Tùy chỉnh Repomix cho nhu cầu của bạn
- [Tính năng bảo mật](security.md): Tìm hiểu về kiểm tra bảo mật
## Cộng đồng
Tham gia [cộng đồng Discord](https://discord.gg/wNYzTwZFku) của chúng tôi để:
- Nhận trợ giúp với Repomix
- Chia sẻ trải nghiệm của bạn
- Đề xuất tính năng mới
- Kết nối với những người dùng khác
## Hỗ trợ
Tìm thấy lỗi hoặc cần trợ giúp?
- [Mở một vấn đề trên GitHub](https://github.com/yamadashy/repomix/issues)
- Tham gia máy chủ Discord của chúng tôi
- Kiểm tra [tài liệu](https://repomix.com)

View File

@@ -0,0 +1,115 @@
# Cài đặt
Có nhiều cách để cài đặt và sử dụng Repomix. Chọn phương pháp phù hợp nhất với quy trình làm việc của bạn.
## Sử dụng npx (Không cần cài đặt)
Cách đơn giản nhất để sử dụng Repomix mà không cần cài đặt là thông qua `npx`:
```bash
npx repomix
```
Lệnh này sẽ tải và chạy phiên bản mới nhất của Repomix trực tiếp từ npm.
## Cài đặt toàn cục
Để sử dụng Repomix từ bất kỳ đâu trong hệ thống của bạn, bạn có thể cài đặt nó toàn cục:
### Sử dụng npm
```bash
npm install -g repomix
```
### Sử dụng yarn
```bash
yarn global add repomix
```
### Sử dụng pnpm
```bash
pnpm add -g repomix
```
### Sử dụng Homebrew (macOS/Linux)
```bash
brew install repomix
```
Sau khi cài đặt toàn cục, bạn có thể chạy Repomix từ bất kỳ thư mục nào:
```bash
repomix
```
## Cài đặt cục bộ trong dự án
Nếu bạn muốn sử dụng Repomix như một phần của quy trình làm việc dự án của mình, bạn có thể cài đặt nó cục bộ:
### Sử dụng npm
```bash
npm install --save-dev repomix
```
### Sử dụng yarn
```bash
yarn add --dev repomix
```
### Sử dụng pnpm
```bash
pnpm add -D repomix
```
Sau đó, bạn có thể chạy nó thông qua npm scripts trong `package.json` của bạn:
```json
{
"scripts": {
"pack-code": "repomix"
}
}
```
Và chạy nó với:
```bash
npm run pack-code
```
## Sử dụng Docker
Repomix cũng có sẵn dưới dạng hình ảnh Docker, cho phép bạn chạy nó trong một môi trường container:
```bash
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix
```
Lệnh này gắn kết thư mục hiện tại của bạn vào container và chạy Repomix trên nó.
## Sử dụng GitHub Actions
Repomix có thể được tích hợp vào quy trình CI/CD của bạn bằng cách sử dụng GitHub Actions. Xem [Hướng dẫn GitHub Actions](github-actions.md) để biết thêm chi tiết.
## Xác minh cài đặt
Để xác minh rằng Repomix đã được cài đặt đúng cách, hãy chạy:
```bash
repomix --version
```
Lệnh này sẽ hiển thị phiên bản Repomix hiện được cài đặt.
## Tiếp theo là gì?
- [Sử dụng cơ bản](usage.md): Tìm hiểu cách sử dụng Repomix
- [Cấu hình](configuration.md): Tùy chỉnh Repomix cho nhu cầu của bạn
- [Tùy chọn dòng lệnh](command-line-options.md): Khám phá tất cả các tùy chọn có sẵn

View File

@@ -0,0 +1,168 @@
# Máy chủ MCP
Repomix bao gồm một máy chủ MCP (Model Code Processor) tích hợp, cho phép bạn chạy một máy chủ cục bộ để xử lý các yêu cầu đóng gói mã từ các công cụ khác.
## Tổng quan
Máy chủ MCP là một máy chủ HTTP nhẹ cung cấp API để đóng gói kho lưu trữ mã nguồn. Nó cho phép các ứng dụng khác (như tiện ích mở rộng trình duyệt Repomix) gửi yêu cầu để xử lý kho lưu trữ cục bộ hoặc từ xa.
Máy chủ MCP đặc biệt hữu ích cho:
- Tích hợp với tiện ích mở rộng trình duyệt Repomix
- Tạo API đóng gói mã cho các công cụ khác
- Xử lý các yêu cầu đóng gói từ các ứng dụng khác
## Khởi động máy chủ MCP
Để khởi động máy chủ MCP, sử dụng lệnh sau:
```bash
repomix serve
```
Theo mặc định, máy chủ sẽ lắng nghe trên cổng 3000. Bạn có thể chỉ định một cổng khác bằng cách sử dụng tùy chọn `--port`:
```bash
repomix serve --port 8080
```
## Tùy chọn máy chủ
| Tùy chọn | Mô tả | Mặc định |
| --- | --- | --- |
| `--port` | Cổng để lắng nghe | 3000 |
| `--host` | Máy chủ để lắng nghe | localhost |
| `--cors-origin` | Nguồn gốc CORS được phép | * |
Ví dụ:
```bash
repomix serve --port 8080 --host 0.0.0.0 --cors-origin https://example.com
```
## API máy chủ MCP
Máy chủ MCP cung cấp các điểm cuối API sau:
### Trạng thái máy chủ
```
GET /status
```
Trả về trạng thái máy chủ và thông tin phiên bản.
Ví dụ phản hồi:
```json
{
"status": "ok",
"version": "1.0.0"
}
```
### Xử lý kho lưu trữ cục bộ
```
POST /process/local
```
Xử lý một kho lưu trữ cục bộ và trả về đầu ra đã đóng gói.
Tham số yêu cầu:
```json
{
"path": "/path/to/repository",
"options": {
"style": "xml",
"removeComments": false,
"showLineNumbers": false
}
}
```
### Xử lý kho lưu trữ từ xa
```
POST /process/remote
```
Xử lý một kho lưu trữ từ xa và trả về đầu ra đã đóng gói.
Tham số yêu cầu:
```json
{
"url": "https://github.com/owner/repo",
"options": {
"style": "markdown",
"removeComments": true,
"showLineNumbers": true
}
}
```
## Sử dụng với tiện ích mở rộng trình duyệt
Máy chủ MCP được thiết kế để hoạt động với [tiện ích mở rộng trình duyệt Repomix](https://chromewebstore.google.com/detail/repomix/fimfamikepjgchehkohedilpdigcpkoa). Khi tiện ích mở rộng được cài đặt và máy chủ MCP đang chạy, bạn có thể dễ dàng đóng gói các kho lưu trữ GitHub trực tiếp từ trình duyệt của mình.
Quy trình làm việc điển hình:
1. Khởi động máy chủ MCP: `repomix serve`
2. Truy cập một kho lưu trữ GitHub trong trình duyệt của bạn
3. Nhấp vào biểu tượng tiện ích mở rộng Repomix
4. Chọn tùy chọn đóng gói của bạn
5. Nhấp vào "Đóng gói kho lưu trữ"
Tiện ích mở rộng sẽ gửi yêu cầu đến máy chủ MCP cục bộ của bạn, xử lý kho lưu trữ và trả về đầu ra đã đóng gói.
## Tích hợp với các công cụ khác
Bạn có thể tích hợp máy chủ MCP với các công cụ khác bằng cách gửi yêu cầu HTTP đến các điểm cuối API của nó.
Ví dụ sử dụng curl:
```bash
curl -X POST http://localhost:3000/process/remote \
-H "Content-Type: application/json" \
-d '{"url":"https://github.com/yamadashy/repomix","options":{"style":"markdown"}}'
```
Ví dụ sử dụng JavaScript:
```javascript
async function processRepository() {
const response = await fetch('http://localhost:3000/process/remote', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://github.com/yamadashy/repomix',
options: {
style: 'markdown',
removeComments: true,
},
}),
});
const data = await response.json();
console.log(data.output);
}
```
## Lưu ý bảo mật
Khi chạy máy chủ MCP, hãy lưu ý những điểm sau:
- Máy chủ có quyền truy cập vào hệ thống tệp cục bộ của bạn
- Theo mặc định, máy chủ chỉ lắng nghe trên localhost
- Nếu bạn thay đổi máy chủ thành `0.0.0.0`, nó sẽ có thể truy cập được từ các máy khác
- Xem xét cấu hình `--cors-origin` để giới hạn các nguồn gốc có thể gửi yêu cầu
## Tiếp theo là gì?
- [GitHub Actions](github-actions.md): Tìm hiểu về tích hợp GitHub Actions
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình

View File

@@ -0,0 +1,193 @@
# Định dạng đầu ra
Repomix hỗ trợ nhiều định dạng đầu ra khác nhau để đáp ứng các nhu cầu khác nhau. Mỗi định dạng có ưu điểm riêng và phù hợp với các trường hợp sử dụng khác nhau.
## Định dạng có sẵn
Repomix hỗ trợ ba định dạng đầu ra chính:
1. **XML** (mặc định)
2. **Markdown**
3. **Văn bản thuần túy**
Bạn có thể chỉ định định dạng đầu ra bằng cách sử dụng tùy chọn `--style`:
```bash
# XML (mặc định)
repomix --style xml
# Markdown
repomix --style markdown
# Văn bản thuần túy
repomix --style plain
```
## Định dạng XML
Định dạng XML là định dạng mặc định và được khuyến nghị cho hầu hết các trường hợp sử dụng. Nó cung cấp cấu trúc rõ ràng và dễ dàng cho AI phân tích.
Ví dụ về đầu ra XML:
```xml
<repository name="repomix" path="/path/to/repomix">
<stats>
<file_count>42</file_count>
<total_lines>1234</total_lines>
<total_tokens>5678</total_tokens>
</stats>
<top_files>
<file path="src/index.ts" lines="100" tokens="450" />
<file path="src/utils.ts" lines="80" tokens="320" />
<!-- ... -->
</top_files>
<files>
<file path="src/index.ts" language="typescript">
import { processRepository } from './core';
// Nội dung tệp...
</file>
<file path="src/utils.ts" language="typescript">
export function formatOutput(data) {
// Nội dung tệp...
}
</file>
<!-- ... -->
</files>
</repository>
```
Định dạng XML đặc biệt hữu ích cho:
- Cung cấp cấu trúc rõ ràng cho AI
- Bao gồm siêu dữ liệu về mỗi tệp (ngôn ngữ, số dòng, số token)
- Phân tích tự động bởi các công cụ
## Định dạng Markdown
Định dạng Markdown cung cấp đầu ra dễ đọc hơn cho con người, đồng thời vẫn duy trì cấu trúc đủ tốt cho AI.
Ví dụ về đầu ra Markdown:
```markdown
# Repository: repomix
## Stats
- File count: 42
- Total lines: 1234
- Total tokens: 5678
## Top Files
1. src/index.ts (100 lines, 450 tokens)
2. src/utils.ts (80 lines, 320 tokens)
...
## Files
### src/index.ts (typescript)
```typescript
import { processRepository } from './core';
// Nội dung tệp...
```
### src/utils.ts (typescript)
```typescript
export function formatOutput(data) {
// Nội dung tệp...
}
```
...
```
Định dạng Markdown đặc biệt hữu ích cho:
- Đọc và xem xét bởi con người
- Chia sẻ codebase trong các tài liệu hoặc wiki
- Sử dụng với các công cụ hỗ trợ Markdown
## Định dạng văn bản thuần túy
Định dạng văn bản thuần túy cung cấp đầu ra đơn giản nhất, không có định dạng đặc biệt.
Ví dụ về đầu ra văn bản thuần túy:
```
Repository: repomix
Stats:
File count: 42
Total lines: 1234
Total tokens: 5678
Top Files:
1. src/index.ts (100 lines, 450 tokens)
2. src/utils.ts (80 lines, 320 tokens)
...
Files:
File: src/index.ts (typescript)
import { processRepository } from './core';
// Nội dung tệp...
File: src/utils.ts (typescript)
export function formatOutput(data) {
// Nội dung tệp...
}
...
```
Định dạng văn bản thuần túy đặc biệt hữu ích cho:
- Tương thích tối đa với các công cụ khác nhau
- Trường hợp khi định dạng không quan trọng
- Sử dụng với các công cụ AI cũ hơn có thể gặp khó khăn với XML hoặc Markdown
## Tùy chọn định dạng bổ sung
Ngoài việc chọn định dạng đầu ra, Repomix cũng cung cấp các tùy chọn bổ sung để tùy chỉnh đầu ra:
### Xóa bình luận
Để xóa bình luận khỏi mã nguồn trong đầu ra:
```bash
repomix --remove-comments
```
Điều này có thể hữu ích để giảm kích thước đầu ra và tập trung vào mã thực tế.
### Hiển thị số dòng
Để bao gồm số dòng trong đầu ra:
```bash
repomix --show-line-numbers
```
Điều này giúp dễ dàng tham khảo các dòng cụ thể khi thảo luận về mã với AI.
### Số lượng tệp hàng đầu
Để chỉ định số lượng tệp hàng đầu để hiển thị trong tóm tắt:
```bash
repomix --top-files-length 20
```
Mặc định là 10 tệp.
## Tên tệp đầu ra tùy chỉnh
Để chỉ định tên tệp đầu ra:
```bash
repomix --output-file my-codebase.xml
```
Mặc định, Repomix sẽ tạo:
- `repomix-output.xml` cho định dạng XML
- `repomix-output.md` cho định dạng Markdown
- `repomix-output.txt` cho định dạng văn bản thuần túy
## Tiếp theo là gì?
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Xóa bình luận](comment-removal.md): Tìm hiểu thêm về tính năng xóa bình luận

View File

@@ -0,0 +1,147 @@
# Ví dụ Prompt
Khi sử dụng Repomix để đóng gói codebase của bạn, việc tạo prompt hiệu quả cho AI là rất quan trọng để có được kết quả tốt nhất. Trang này cung cấp các ví dụ prompt để sử dụng với đầu ra Repomix.
## Prompt cơ bản
Dưới đây là một prompt cơ bản để bắt đầu:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Vui lòng phân tích codebase và cung cấp tổng quan về cấu trúc và chức năng của nó.
```
## Phân tích codebase
Để có phân tích codebase chi tiết:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Vui lòng:
1. Phân tích cấu trúc tổng thể của dự án
2. Xác định các mô-đun chính và mối quan hệ giữa chúng
3. Giải thích luồng dữ liệu và luồng điều khiển
4. Xác định các mẫu thiết kế được sử dụng
5. Đánh giá khả năng bảo trì và mở rộng của codebase
```
## Tìm lỗi
Để tìm lỗi tiềm ẩn:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi đang gặp phải [mô tả vấn đề]. Vui lòng:
1. Phân tích codebase để tìm lỗi tiềm ẩn
2. Xác định các vấn đề hiệu suất có thể có
3. Kiểm tra các lỗ hổng bảo mật
4. Đề xuất sửa chữa cho bất kỳ vấn đề nào bạn tìm thấy
```
## Tái cấu trúc mã
Để tái cấu trúc codebase:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi muốn tái cấu trúc nó để cải thiện khả năng bảo trì và mở rộng. Vui lòng:
1. Xác định các khu vực cần tái cấu trúc
2. Đề xuất các thay đổi cụ thể để cải thiện cấu trúc mã
3. Cung cấp ví dụ về mã đã tái cấu trúc cho các phần quan trọng
4. Giải thích lợi ích của các thay đổi được đề xuất
```
## Thêm tính năng mới
Để thêm tính năng mới:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi muốn thêm tính năng sau: [mô tả tính năng]. Vui lòng:
1. Phân tích codebase để xác định nơi tính năng mới nên được tích hợp
2. Đề xuất các thay đổi cần thiết để triển khai tính năng
3. Cung cấp mã mẫu cho tính năng mới
4. Giải thích cách tính năng mới tương tác với mã hiện có
```
## Tạo tài liệu
Để tạo tài liệu:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi cần tạo tài liệu toàn diện. Vui lòng:
1. Tạo tổng quan về dự án
2. Tạo tài liệu API cho các mô-đun chính
3. Giải thích cách sử dụng các tính năng chính
4. Cung cấp ví dụ sử dụng cho các trường hợp sử dụng phổ biến
5. Tạo hướng dẫn cài đặt và cấu hình
```
## Đánh giá mã
Để đánh giá chất lượng mã:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Vui lòng đánh giá chất lượng mã và cung cấp phản hồi về:
1. Khả năng đọc và khả năng bảo trì
2. Hiệu suất và tối ưu hóa
3. Tuân thủ các thực hành tốt nhất
4. Bảo mật và xử lý lỗi
5. Khả năng kiểm tra và khả năng mở rộng
```
## Chuyển đổi mã
Để chuyển đổi mã từ một ngôn ngữ hoặc framework sang ngôn ngữ hoặc framework khác:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Nó hiện được viết bằng [ngôn ngữ/framework hiện tại]. Tôi muốn chuyển đổi nó sang [ngôn ngữ/framework mới]. Vui lòng:
1. Phân tích codebase hiện tại
2. Cung cấp kế hoạch chuyển đổi
3. Chuyển đổi các mô-đun chính sang [ngôn ngữ/framework mới]
4. Giải thích bất kỳ thay đổi kiến trúc nào cần thiết
```
## Tối ưu hóa hiệu suất
Để tối ưu hóa hiệu suất:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi đang gặp phải vấn đề hiệu suất, đặc biệt là với [mô tả vấn đề]. Vui lòng:
1. Xác định các điểm nghẽn hiệu suất tiềm ẩn
2. Đề xuất tối ưu hóa cụ thể
3. Cung cấp mã đã tối ưu hóa cho các phần quan trọng
4. Đề xuất các thay đổi kiến trúc để cải thiện hiệu suất tổng thể
```
## Tích hợp với công nghệ khác
Để tích hợp với công nghệ khác:
```
Tệp này chứa toàn bộ codebase của dự án của tôi được đóng gói bởi Repomix. Tôi muốn tích hợp nó với [công nghệ]. Vui lòng:
1. Phân tích codebase để xác định điểm tích hợp tốt nhất
2. Đề xuất các thay đổi cần thiết để tích hợp với [công nghệ]
3. Cung cấp mã mẫu cho tích hợp
4. Giải thích bất kỳ thay đổi cấu hình hoặc phụ thuộc nào cần thiết
```
## Tùy chỉnh prompt
Khi tùy chỉnh prompt của bạn, hãy xem xét bao gồm:
1. **Bối cảnh dự án**: Cung cấp thông tin về mục đích và phạm vi của dự án
2. **Yêu cầu cụ thể**: Nêu rõ những gì bạn cần từ AI
3. **Định dạng đầu ra**: Chỉ định cách bạn muốn thông tin được trình bày
4. **Giới hạn**: Đề cập đến bất kỳ ràng buộc hoặc giới hạn nào
5. **Ưu tiên**: Làm rõ các khía cạnh quan trọng nhất đối với bạn
## Tiếp theo là gì?
- [Sử dụng cơ bản](usage.md): Tìm hiểu cách sử dụng Repomix
- [Định dạng đầu ra](output.md): Tìm hiểu về các định dạng đầu ra khác nhau
- [Hướng dẫn tùy chỉnh](custom-instructions.md): Tìm hiểu về hướng dẫn tùy chỉnh

View File

@@ -0,0 +1,143 @@
# Xử lý kho lưu trữ từ xa
Repomix có thể xử lý các kho lưu trữ từ xa mà không cần clone chúng cục bộ, giúp bạn dễ dàng đóng gói và phân tích các dự án mã nguồn mở.
## Tổng quan
Tính năng xử lý kho lưu trữ từ xa cho phép bạn:
- Đóng gói các kho lưu trữ GitHub công khai
- Chỉ định nhánh, thẻ hoặc commit cụ thể
- Xử lý các đường dẫn cụ thể trong kho lưu trữ
- Phân tích các dự án mã nguồn mở mà không cần clone chúng
## Cú pháp cơ bản
Để xử lý một kho lưu trữ từ xa, sử dụng tùy chọn `--remote`:
```bash
repomix --remote <url_or_shorthand>
```
## Định dạng URL được hỗ trợ
Repomix hỗ trợ nhiều định dạng URL khác nhau:
### Định dạng rút gọn
```bash
repomix --remote owner/repo
```
Ví dụ:
```bash
repomix --remote yamadashy/repomix
```
### URL đầy đủ
```bash
repomix --remote https://github.com/owner/repo
```
Ví dụ:
```bash
repomix --remote https://github.com/yamadashy/repomix
```
### URL nhánh cụ thể
```bash
repomix --remote https://github.com/owner/repo/tree/branch
```
Ví dụ:
```bash
repomix --remote https://github.com/yamadashy/repomix/tree/main
```
### Chỉ định commit cụ thể
Để xử lý một commit cụ thể, sử dụng tùy chọn `--remote-branch` với mã hash commit:
```bash
repomix --remote owner/repo --remote-branch commit_hash
```
Ví dụ:
```bash
repomix --remote yamadashy/repomix --remote-branch 836abcd7335137228ad77feb28655d85712680f1
```
### URL đường dẫn cụ thể
```bash
repomix --remote https://github.com/owner/repo/tree/branch/path/to/directory
```
Ví dụ:
```bash
repomix --remote https://github.com/yamadashy/repomix/tree/main/src
```
## Ví dụ sử dụng
### Đóng gói kho lưu trữ từ xa với định dạng mặc định
```bash
repomix --remote yamadashy/repomix
```
### Đóng gói kho lưu trữ từ xa với định dạng Markdown
```bash
repomix --remote yamadashy/repomix --style markdown
```
### Đóng gói một nhánh cụ thể
```bash
repomix --remote https://github.com/yamadashy/repomix/tree/develop
```
### Đóng gói một thư mục cụ thể trong kho lưu trữ
```bash
repomix --remote https://github.com/yamadashy/repomix/tree/main/src
```
### Đóng gói một commit cụ thể
```bash
repomix --remote yamadashy/repomix --remote-branch 836abcd7335137228ad77feb28655d85712680f1
```
## Giới hạn và lưu ý
Khi sử dụng tính năng xử lý kho lưu trữ từ xa, hãy lưu ý những điểm sau:
- **Chỉ hỗ trợ kho lưu trữ công khai**: Tính năng này chỉ hoạt động với các kho lưu trữ GitHub công khai.
- **Giới hạn kích thước**: Các kho lưu trữ rất lớn có thể gặp vấn đề do giới hạn API GitHub.
- **Không có hỗ trợ .gitignore**: Khi xử lý kho lưu trữ từ xa, Repomix không thể tôn trọng các tệp .gitignore vì nó không có quyền truy cập vào cấu hình Git cục bộ.
- **Giới hạn API**: Có thể áp dụng giới hạn tốc độ API GitHub.
## Sử dụng với Docker
Bạn cũng có thể xử lý các kho lưu trữ từ xa bằng cách sử dụng hình ảnh Docker của Repomix:
```bash
docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote yamadashy/repomix
```
Lệnh này sẽ đóng gói kho lưu trữ từ xa và lưu đầu ra vào thư mục `output` cục bộ của bạn.
## Tiếp theo là gì?
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [GitHub Actions](github-actions.md): Tìm hiểu về tích hợp GitHub Actions

View File

@@ -0,0 +1,141 @@
# Bảo mật
Repomix tích hợp các tính năng bảo mật mạnh mẽ để giúp ngăn chặn việc vô tình tiết lộ thông tin nhạy cảm khi chia sẻ codebase của bạn với các mô hình ngôn ngữ lớn (LLMs).
## Tổng quan
Khi đóng gói codebase để chia sẻ với AI, có nguy cơ vô tình bao gồm thông tin nhạy cảm như:
- Khóa API
- Mật khẩu
- Khóa bí mật
- Token truy cập
- Thông tin xác thực cơ sở dữ liệu
- Thông tin cá nhân
Repomix giúp giảm thiểu rủi ro này bằng cách tích hợp [Secretlint](https://github.com/secretlint/secretlint), một công cụ phát hiện bí mật trong mã.
## Kiểm tra bảo mật tự động
Theo mặc định, Repomix thực hiện kiểm tra bảo mật trên tất cả các tệp trước khi đưa chúng vào đầu ra. Nếu phát hiện thông tin nhạy cảm, Repomix sẽ:
1. Hiển thị cảnh báo
2. Cung cấp thông tin về vị trí của thông tin nhạy cảm
3. Cho bạn tùy chọn để tiếp tục hoặc hủy bỏ quá trình
## Sử dụng kiểm tra bảo mật
### Bật kiểm tra bảo mật (mặc định)
Kiểm tra bảo mật được bật theo mặc định. Không cần thực hiện bất kỳ hành động nào để sử dụng tính năng này.
### Tắt kiểm tra bảo mật
Nếu bạn muốn tắt kiểm tra bảo mật (không được khuyến nghị), bạn có thể sử dụng tùy chọn `--no-security-check`:
```bash
repomix --no-security-check
```
Hoặc trong tệp cấu hình:
```json
{
"security": {
"check": false
}
}
```
### Cấu hình Secretlint tùy chỉnh
Bạn có thể cung cấp cấu hình Secretlint tùy chỉnh để điều chỉnh các quy tắc phát hiện:
```bash
repomix --secretlint-config path/to/secretlint.config.js
```
Hoặc trong tệp cấu hình:
```json
{
"security": {
"secretlintConfigPath": "./secretlint.config.js"
}
}
```
## Các loại bí mật được phát hiện
Repomix có thể phát hiện nhiều loại thông tin nhạy cảm, bao gồm:
- **Khóa API**: AWS, Google Cloud, Azure, GitHub, Stripe, v.v.
- **Mật khẩu**: Mật khẩu được mã hóa cứng trong mã
- **Khóa bí mật**: Khóa SSH, khóa JWT, v.v.
- **Token truy cập**: OAuth, token truy cập cá nhân, v.v.
- **Thông tin xác thực cơ sở dữ liệu**: Chuỗi kết nối, thông tin đăng nhập, v.v.
- **Thông tin cá nhân**: Số điện thoại, địa chỉ email, v.v.
## Thực hành tốt nhất về bảo mật
Ngoài việc sử dụng kiểm tra bảo mật của Repomix, hãy xem xét các thực hành tốt nhất sau:
### 1. Sử dụng biến môi trường
Lưu trữ thông tin nhạy cảm trong biến môi trường thay vì mã hóa cứng chúng trong mã:
```javascript
// Không tốt
const apiKey = "sk_live_1234567890abcdef";
// Tốt
const apiKey = process.env.API_KEY;
```
### 2. Sử dụng tệp .env
Lưu trữ biến môi trường trong tệp `.env` và đảm bảo tệp này được thêm vào `.gitignore`:
```
# .env
API_KEY=sk_live_1234567890abcdef
DATABASE_URL=postgres://user:password@localhost/db
```
### 3. Sử dụng quản lý bí mật
Xem xét sử dụng dịch vụ quản lý bí mật như:
- AWS Secrets Manager
- Google Secret Manager
- HashiCorp Vault
- Azure Key Vault
### 4. Xem lại đầu ra
Luôn xem lại đầu ra của Repomix trước khi chia sẻ nó với AI để đảm bảo không có thông tin nhạy cảm nào bị lọt qua.
### 5. Sử dụng tệp .repomixignore
Thêm các tệp có thể chứa thông tin nhạy cảm vào tệp `.repomixignore`:
```
# .repomixignore
.env
config/secrets.yml
credentials/
```
## Xử lý cảnh báo bảo mật
Khi Repomix phát hiện thông tin nhạy cảm, bạn có một số tùy chọn:
1. **Sửa vấn đề**: Xóa hoặc thay thế thông tin nhạy cảm trong mã nguồn
2. **Bỏ qua tệp**: Thêm tệp có vấn đề vào `.repomixignore`
3. **Tiếp tục với rủi ro**: Tiếp tục quá trình đóng gói (không được khuyến nghị)
4. **Tùy chỉnh quy tắc**: Điều chỉnh cấu hình Secretlint để giảm cảnh báo sai
## Tiếp theo là gì?
- [Cấu hình](configuration.md): Tìm hiểu về tệp cấu hình
- [Tùy chọn dòng lệnh](command-line-options.md): Xem tất cả các tùy chọn dòng lệnh có sẵn
- [Máy chủ MCP](mcp-server.md): Tìm hiểu về tính năng máy chủ MCP

View File

@@ -0,0 +1,129 @@
# Mẹo phát triển hỗ trợ AI
Khi phát triển phần mềm với sự hỗ trợ của AI, có một số thực hành tốt nhất có thể giúp bạn tối đa hóa hiệu quả và chất lượng của quá trình phát triển. Trang này cung cấp các mẹo và hướng dẫn để làm việc hiệu quả với AI khi sử dụng Repomix.
## Chuẩn bị codebase của bạn
### Tổ chức mã
Trước khi đóng gói codebase của bạn với Repomix, hãy xem xét tổ chức nó theo cách giúp AI dễ dàng hiểu:
- **Cấu trúc thư mục rõ ràng**: Sử dụng cấu trúc thư mục có ý nghĩa phản ánh kiến trúc của ứng dụng
- **Tệp README toàn diện**: Bao gồm tổng quan về dự án, hướng dẫn thiết lập và thông tin quan trọng khác
- **Tài liệu mã**: Thêm nhận xét và tài liệu cho các phần phức tạp của mã
- **Quy ước đặt tên nhất quán**: Sử dụng quy ước đặt tên nhất quán trong toàn bộ codebase
### Tối ưu hóa cho AI
- **Loại bỏ mã không sử dụng**: Xóa mã chết hoặc không sử dụng để giảm nhiễu
- **Tách các tệp lớn**: Chia các tệp lớn thành các mô-đun nhỏ hơn, tập trung hơn
- **Giảm thiểu phụ thuộc**: Giảm thiểu phụ thuộc không cần thiết để đơn giản hóa codebase
- **Chuẩn hóa định dạng**: Sử dụng trình định dạng mã để đảm bảo phong cách nhất quán
## Tạo prompt hiệu quả
### Cấu trúc prompt
Khi làm việc với đầu ra Repomix, hãy cấu trúc prompt của bạn để có kết quả tốt nhất:
- **Bắt đầu với bối cảnh**: Cung cấp bối cảnh về dự án và mục tiêu của bạn
- **Chia thành các bước**: Chia các nhiệm vụ phức tạp thành các bước nhỏ hơn, tuần tự
- **Chỉ định định dạng đầu ra**: Nêu rõ cách bạn muốn phản hồi được định dạng
- **Đặt câu hỏi cụ thể**: Tránh các câu hỏi mơ hồ; càng cụ thể càng tốt
### Ví dụ prompt hiệu quả
```
Tệp này chứa codebase của ứng dụng quản lý nhiệm vụ của tôi được đóng gói bởi Repomix.
Bối cảnh: Đây là một ứng dụng React với backend Node.js sử dụng MongoDB.
Tôi muốn cải thiện hiệu suất của ứng dụng, đặc biệt là thời gian tải ban đầu. Vui lòng:
1. Xác định các vấn đề hiệu suất tiềm ẩn trong mã frontend (tập trung vào các thành phần React và quản lý trạng thái)
2. Đề xuất các tối ưu hóa cụ thể với ví dụ mã
3. Đề xuất các thay đổi kiến trúc có thể cải thiện hiệu suất tổng thể
Định dạng phản hồi của bạn như sau:
- Tóm tắt các vấn đề hiệu suất được xác định
- Danh sách các tối ưu hóa được đề xuất với ví dụ trước/sau
- Đề xuất kiến trúc với lý do
```
## Làm việc với phản hồi AI
### Đánh giá phản hồi
Khi nhận phản hồi từ AI dựa trên codebase của bạn:
- **Xác minh tính chính xác**: Kiểm tra phản hồi để đảm bảo nó chính xác và phù hợp với codebase của bạn
- **Hiểu lý do**: Đảm bảo bạn hiểu lý do đằng sau các đề xuất
- **Đánh giá tính khả thi**: Xem xét liệu các đề xuất có thực tế và phù hợp với dự án của bạn không
- **Tìm kiếm các giả định**: Xác định bất kỳ giả định nào mà AI có thể đã đưa ra
### Lặp lại và cải thiện
- **Làm rõ khi cần thiết**: Nếu phản hồi không rõ ràng, hãy yêu cầu làm rõ
- **Cung cấp phản hồi**: Cho AI biết những gì hữu ích và những gì không hữu ích
- **Tinh chỉnh prompt**: Điều chỉnh prompt của bạn dựa trên phản hồi bạn nhận được
- **Chia nhỏ vấn đề**: Nếu phản hồi quá rộng, hãy chia vấn đề thành các phần nhỏ hơn
## Các trường hợp sử dụng phổ biến
### Phân tích mã
Khi sử dụng AI để phân tích codebase:
- Yêu cầu tổng quan cấp cao trước khi đi vào chi tiết
- Tập trung vào các khu vực cụ thể của mối quan tâm
- Yêu cầu xác định các mẫu và chống mẫu
- Yêu cầu đánh giá về khả năng bảo trì và mở rộng
### Tái cấu trúc mã
Khi sử dụng AI để tái cấu trúc mã:
- Giải thích vấn đề với mã hiện tại
- Chỉ định các mục tiêu của tái cấu trúc
- Yêu cầu các bước từng bước để thực hiện tái cấu trúc
- Yêu cầu giải thích về cách tái cấu trúc cải thiện mã
### Gỡ lỗi
Khi sử dụng AI để gỡ lỗi:
- Cung cấp thông báo lỗi đầy đủ
- Mô tả hành vi mong đợi và thực tế
- Bao gồm bối cảnh liên quan (phiên bản, môi trường)
- Yêu cầu các nguyên nhân tiềm ẩn và giải pháp
### Tạo tính năng mới
Khi sử dụng AI để phát triển tính năng mới:
- Mô tả tính năng và mục đích của nó
- Chỉ định cách nó nên tích hợp với mã hiện có
- Yêu cầu thiết kế cấp cao trước khi triển khai
- Yêu cầu các trường hợp kiểm tra để xác minh tính năng
## Tối ưu hóa quy trình phát triển
### Tích hợp AI vào quy trình phát triển
- **Sử dụng AI cho các nhiệm vụ lặp đi lặp lại**: Tự động hóa các nhiệm vụ lặp đi lặp lại như tạo mã soạn sẵn
- **Sử dụng AI cho đánh giá mã**: Yêu cầu AI xem xét mã của bạn để tìm lỗi và cải tiến
- **Sử dụng AI cho tài liệu**: Tạo và duy trì tài liệu với sự trợ giúp của AI
- **Sử dụng AI cho kiểm tra**: Tạo các trường hợp kiểm tra và kịch bản kiểm tra với sự trợ giúp của AI
### Cân bằng đầu vào của AI và con người
- **Xác minh đầu ra của AI**: Luôn xem xét và xác minh đầu ra của AI trước khi tích hợp nó
- **Duy trì kiểm soát sáng tạo**: Sử dụng AI như một công cụ, không phải là người thay thế cho sự sáng tạo của con người
- **Kết hợp chuyên môn của con người**: Kết hợp kiến thức miền và chuyên môn kỹ thuật của bạn với khả năng của AI
- **Lặp lại và cải thiện**: Sử dụng phản hồi từ AI để cải thiện quy trình phát triển của bạn
## Tiếp theo là gì?
- [Đóng góp cho Repomix](../development/index.md): Tìm hiểu cách đóng góp cho dự án
- [Sử dụng Repomix như một thư viện](../development/using-repomix-as-a-library.md): Tìm hiểu cách sử dụng Repomix như một thư viện
- [Sử dụng cơ bản](../usage.md): Quay lại hướng dẫn sử dụng cơ bản

View File

@@ -0,0 +1,193 @@
# Sử dụng cơ bản
Repomix được thiết kế để dễ sử dụng với các tùy chọn mặc định hợp lý, đồng thời cung cấp khả năng tùy chỉnh mạnh mẽ cho các trường hợp sử dụng nâng cao.
## Đóng gói kho lưu trữ cục bộ
### Đóng gói toàn bộ kho lưu trữ
Để đóng gói toàn bộ kho lưu trữ hiện tại của bạn, chỉ cần chạy Repomix trong thư mục gốc của dự án:
```bash
repomix
```
Lệnh này sẽ tạo một tệp `repomix-output.xml` trong thư mục hiện tại, chứa toàn bộ codebase của bạn ở định dạng XML.
### Đóng gói một thư mục cụ thể
Để đóng gói một thư mục cụ thể thay vì toàn bộ kho lưu trữ:
```bash
repomix path/to/directory
```
### Đóng gói các tệp cụ thể
Bạn có thể chỉ định các tệp hoặc mẫu cụ thể để đóng gói bằng cách sử dụng tùy chọn `--include`:
```bash
repomix --include "src/**/*.ts,**/*.md"
```
Điều này sẽ đóng gói tất cả các tệp TypeScript trong thư mục `src` và tất cả các tệp Markdown trong toàn bộ dự án.
## Đóng gói kho lưu trữ từ xa
Repomix có thể đóng gói các kho lưu trữ từ xa mà không cần clone chúng cục bộ:
```bash
# Sử dụng định dạng rút gọn
repomix --remote yamadashy/repomix
# Sử dụng URL đầy đủ
repomix --remote https://github.com/yamadashy/repomix
# Chỉ định nhánh
repomix --remote https://github.com/yamadashy/repomix/tree/main
# Sử dụng URL của commit
repomix --remote https://github.com/yamadashy/repomix/commit/836abcd7335137228ad77feb28655d85712680f1
```
## Tùy chọn đầu ra
### Định dạng đầu ra
Repomix hỗ trợ nhiều định dạng đầu ra:
```bash
# XML (mặc định)
repomix --style xml
# Markdown
repomix --style markdown
# Văn bản thuần túy
repomix --style plain
```
### Tên tệp đầu ra tùy chỉnh
Để chỉ định tên tệp đầu ra:
```bash
repomix --output-file my-codebase.xml
```
### Xóa bình luận
Để xóa bình luận khỏi mã nguồn trong đầu ra:
```bash
repomix --remove-comments
```
### Hiển thị số dòng
Để bao gồm số dòng trong đầu ra:
```bash
repomix --show-line-numbers
```
## Bỏ qua tệp và thư mục
### Sử dụng .gitignore
Theo mặc định, Repomix tôn trọng các tệp `.gitignore` của bạn. Để ghi đè hành vi này:
```bash
repomix --no-respect-gitignore
```
### Mẫu bỏ qua tùy chỉnh
Để chỉ định các mẫu bỏ qua bổ sung:
```bash
repomix --ignore "**/*.log,tmp/,**/*.min.js"
```
### Sử dụng .repomixignore
Bạn cũng có thể tạo một tệp `.repomixignore` trong thư mục gốc của dự án để chỉ định các mẫu bỏ qua cụ thể cho Repomix.
## Tùy chọn nâng cao
### Nén mã
Để nén mã bằng cách chỉ bao gồm chữ ký hàm và loại bỏ phần thân:
```bash
repomix --compress-code
```
### Kiểm tra bảo mật
Để tắt kiểm tra bảo mật:
```bash
repomix --no-security-check
```
### Đếm token
Để tắt đếm token:
```bash
repomix --no-token-count
```
## Sử dụng tệp cấu hình
Để tạo một tệp cấu hình mẫu:
```bash
repomix --init
```
Điều này sẽ tạo một tệp `repomix.config.json` mà bạn có thể chỉnh sửa để tùy chỉnh hành vi của Repomix.
Ví dụ về tệp cấu hình:
```json
{
"output": {
"style": "markdown",
"filePath": "custom-output.md",
"removeComments": true,
"showLineNumbers": true,
"topFilesLength": 10
},
"ignore": {
"customPatterns": ["*.test.ts", "docs/**"]
}
}
```
## Sử dụng với AI
Sau khi tạo tệp đầu ra, bạn có thể tải nó lên các công cụ AI như:
- ChatGPT
- Claude
- Gemini
- Perplexity
- Phind
- Và các LLM khác
Khi tải lên tệp, bạn có thể sử dụng một prompt như:
```
Tệp này chứa toàn bộ codebase của tôi. Tôi muốn bạn:
1. Phân tích cấu trúc tổng thể
2. Xác định các mẫu thiết kế được sử dụng
3. Đề xuất cải tiến
```
## Tiếp theo là gì?
- [Tùy chọn dòng lệnh](command-line-options.md): Danh sách đầy đủ các tùy chọn dòng lệnh
- [Cấu hình](configuration.md): Tùy chỉnh Repomix thông qua tệp cấu hình
- [Xử lý kho lưu trữ từ xa](remote-repository-processing.md): Thông tin chi tiết về xử lý kho lưu trữ từ xa

View File

@@ -0,0 +1,191 @@
---
layout: home
title: Repomix
titleTemplate: Đóng gói codebase của bạn thành các định dạng thân thiện với AI
aside: false
editLink: false
features:
- icon: 🤖
title: Tối ưu hóa cho AI
details: Định dạng codebase của bạn theo cách dễ dàng cho AI hiểu và xử lý.
- icon: ⚙️
title: Nhận biết Git
details: Tự động tôn trọng các tệp .gitignore của bạn.
- icon: 🛡️
title: Tập trung vào bảo mật
details: Tích hợp Secretlint để kiểm tra bảo mật mạnh mẽ nhằm phát hiện và ngăn chặn việc đưa thông tin nhạy cảm vào.
- icon: 📊
title: Đếm token
details: Cung cấp số lượng token cho mỗi tệp và toàn bộ kho lưu trữ, hữu ích cho giới hạn ngữ cảnh LLM.
---
<div class="cli-section">
## Bắt đầu nhanh
Sau khi bạn đã tạo một tệp đóng gói (`repomix-output.xml`) bằng Repomix, bạn có thể gửi nó đến trợ lý AI (như ChatGPT, Claude) với một prompt như:
```
Tệp này chứa tất cả các tệp trong kho lưu trữ được kết hợp thành một.
Tôi muốn tái cấu trúc mã, vì vậy hãy xem xét nó trước.
```
AI sẽ phân tích toàn bộ codebase của bạn và cung cấp những hiểu biết toàn diện:
![Repomix File Usage 1](/images/docs/repomix-file-usage-1.png)
Khi thảo luận về các thay đổi cụ thể, AI có thể giúp tạo mã. Với các tính năng như Artifacts của Claude, bạn thậm chí có thể nhận được nhiều tệp phụ thuộc lẫn nhau:
![Repomix File Usage 2](/images/docs/repomix-file-usage-2.png)
Chúc bạn code vui vẻ! 🚀
## Sử dụng công cụ CLI {#using-the-cli-tool}
Repomix có thể được sử dụng như một công cụ dòng lệnh, cung cấp các tính năng mạnh mẽ và tùy chọn tùy chỉnh.
**Công cụ CLI có thể truy cập các kho lưu trữ riêng tư** vì nó sử dụng git được cài đặt cục bộ của bạn.
### Bắt đầu nhanh
Bạn có thể thử Repomix ngay lập tức trong thư mục dự án của bạn mà không cần cài đặt:
```bash
npx repomix
```
Hoặc cài đặt toàn cục để sử dụng nhiều lần:
```bash
# Cài đặt bằng npm
npm install -g repomix
# Hoặc sử dụng yarn
yarn global add repomix
# Hoặc sử dụng Homebrew (macOS/Linux)
brew install repomix
# Sau đó chạy trong bất kỳ thư mục dự án nào
repomix
```
Vậy là xong! Repomix sẽ tạo một tệp `repomix-output.xml` trong thư mục hiện tại của bạn, chứa toàn bộ kho lưu trữ của bạn ở định dạng thân thiện với AI.
### Cách sử dụng
Để đóng gói toàn bộ kho lưu trữ của bạn:
```bash
repomix
```
Để đóng gói một thư mục cụ thể:
```bash
repomix path/to/directory
```
Để đóng gói các tệp hoặc thư mục cụ thể bằng cách sử dụng [mẫu glob](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax):
```bash
repomix --include "src/**/*.ts,**/*.md"
```
Để loại trừ các tệp hoặc thư mục cụ thể:
```bash
repomix --ignore "**/*.log,tmp/"
```
Để đóng gói một kho lưu trữ từ xa:
```bash
# Sử dụng định dạng rút gọn
npx repomix --remote yamadashy/repomix
# Sử dụng URL đầy đủ (hỗ trợ nhánh và đường dẫn cụ thể)
npx repomix --remote https://github.com/yamadashy/repomix
npx repomix --remote https://github.com/yamadashy/repomix/tree/main
# Sử dụng URL của commit
npx repomix --remote https://github.com/yamadashy/repomix/commit/836abcd7335137228ad77feb28655d85712680f1
```
Để khởi tạo một tệp cấu hình mới (`repomix.config.json`):
```bash
repomix --init
```
Sau khi bạn đã tạo tệp đóng gói, bạn có thể sử dụng nó với các công cụ AI Tạo sinh như Claude, ChatGPT và Gemini.
#### Sử dụng Docker
Bạn cũng có thể chạy Repomix bằng Docker 🐳
Điều này hữu ích nếu bạn muốn chạy Repomix trong môi trường biệt lập hoặc thích sử dụng container.
Cách sử dụng cơ bản (thư mục hiện tại):
```bash
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix
```
Để đóng gói một thư mục cụ thể:
```bash
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix path/to/directory
```
Xử lý một kho lưu trữ từ xa và xuất ra thư mục `output`:
```bash
docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote https://github.com/yamadashy/repomix
```
### Định dạng đầu ra
Chọn định dạng đầu ra ưa thích của bạn:
```bash
# Định dạng XML (mặc định)
repomix --style xml
# Định dạng Markdown
repomix --style markdown
# Định dạng văn bản thuần túy
repomix --style plain
```
### Tùy chỉnh
Tạo một `repomix.config.json` cho các cài đặt cố định:
```json
{
"output": {
"style": "markdown",
"filePath": "custom-output.md",
"removeComments": true,
"showLineNumbers": true,
"topFilesLength": 10
},
"ignore": {
"customPatterns": ["*.test.ts", "docs/**"]
}
}
```
### Thêm ví dụ
::: tip Cần thêm trợ giúp? 💡
Hãy xem tài liệu toàn diện của chúng tôi trong [Hướng dẫn](/vi/guide/) hoặc khám phá [Kho lưu trữ GitHub](https://github.com/yamadashy/repomix) để biết thêm ví dụ và mã nguồn.
:::
</div>