Skip to content

設定

Repomix可以透過設定檔(repomix.config.json)或命令列選項進行設定。設定檔允許您自訂程式碼庫的處理和輸出方式。

快速開始

在專案目錄中建立設定檔:

bash
repomix --init

這將建立一個帶有預設設定的repomix.config.json檔案。您還可以建立一個全域設定檔,在找不到本地設定時將使用它作為後備:

bash
repomix --init --global

設定檔位置

Repomix按以下順序尋找設定檔:

  1. 當前目錄中的本地設定檔(repomix.config.json
  2. 全域設定檔:
    • Windows:%LOCALAPPDATA%\Repomix\repomix.config.json
    • macOS/Linux:~/.config/repomix/repomix.config.json

命令列選項優先於設定檔設定。

設定選項

選項說明預設值
input.maxFileSize要處理的最大檔案大小(位元組)。超過此大小的檔案將被跳過。用於排除大型二進位檔案或資料檔案50000000
output.filePath輸出檔案名。支援XML、Markdown和純文字格式"repomix-output.xml"
output.style輸出樣式(xmlmarkdownplain)。每種格式對不同的AI工具都有其優勢"xml"
output.parsableStyle是否根據所選樣式模式轉義輸出。可以提供更好的解析,但可能會增加令牌數量false
output.compress是否使用Tree-sitter執行智慧程式碼提取,在保持結構的同時減少令牌數量false
output.headerText要包含在檔案頭部的自訂文字。對於為AI工具提供上下文或指令很有用null
output.instructionFilePath包含用於AI處理的詳細自訂指令的檔案路徑null
output.fileSummary是否在輸出開頭包含顯示檔案計數、大小和其他指標的摘要部分true
output.directoryStructure是否在輸出中包含目錄結構。幫助AI理解專案組織true
output.files是否在輸出中包含檔案內容。設定為false時只包含結構和元資料true
output.removeComments是否從支援的檔案類型中刪除註解。可以減少雜訊和令牌數量false
output.removeEmptyLines是否從輸出中刪除空行以減少令牌數量false
output.showLineNumbers是否為每行添加行號。有助於引用程式碼的特定部分false
output.copyToClipboard是否除了儲存檔案外還將輸出複製到系統剪貼簿false
output.topFilesLength在摘要中顯示的頂部檔案數量。如果設定為0,則不顯示摘要5
output.includeEmptyDirectories是否在儲存庫結構中包含空目錄false
output.git.sortByChanges是否按Git更改次數對檔案進行排序。更改較多的檔案顯示在底部true
output.git.sortByChangesMaxCommits分析Git更改時要分析的最大提交數。限制歷史深度以提高效能100
output.git.includeDiffs是否在輸出中包含Git差異。分別顯示工作樹和暫存區的更改false
include要包含的檔案模式(使用glob模式[]
ignore.useGitignore是否使用專案的.gitignore檔案中的模式true
ignore.useDefaultPatterns是否使用預設忽略模式(node_modules、.git等)true
ignore.customPatterns額外的忽略模式(使用glob模式[]
security.enableSecurityCheck是否使用Secretlint執行安全檢查以檢測敏感資訊true
tokenCount.encodingOpenAI的tiktoken分詞器使用的令牌計數編碼。GPT-4o使用o200k_base,GPT-4/3.5使用cl100k_base。詳見tiktoken model.py"o200k_base"

設定檔支援JSON5語法,允許:

  • 註解(單行和多行)
  • 物件和陣列中的尾隨逗號
  • 無引號屬性名
  • 更靈活的字串語法

設定檔範例

以下是完整設定檔(repomix.config.json)的範例:

json
{
  "input": {
    "maxFileSize": 50000000
  },
  "output": {
    "filePath": "repomix-output.xml",
    "style": "xml",
    "parsableStyle": false,
    "compress": false,
    "headerText": "打包檔案的自訂頭部資訊",
    "fileSummary": true,
    "directoryStructure": true,
    "files": true,
    "removeComments": false,
    "removeEmptyLines": false,
    "topFilesLength": 5,
    "showLineNumbers": false,
    "copyToClipboard": false,
    "includeEmptyDirectories": false,
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": false
    }
  },
  "include": ["**/*"],
  "ignore": {
    "useGitignore": true,
    "useDefaultPatterns": true,
    // 模式也可以在 .repomixignore 中指定
    "customPatterns": [
      "additional-folder",
      "**/*.log"
    ],
  },
  "security": {
    "enableSecurityCheck": true
  },
  "tokenCount": {
    "encoding": "o200k_base"
  }
}

忽略模式

Repomix提供多種方式來指定要忽略的檔案。模式按以下優先順序處理:

  1. CLI選項(--ignore
  2. 專案目錄中的.repomixignore檔案
  3. .gitignore.git/info/exclude(如果ignore.useGitignore為true)
  4. 預設模式(如果ignore.useDefaultPatterns為true)

.repomixignore範例:

text
# 快取目錄
.cache/
tmp/

# 建置輸出
dist/
build/

# 日誌
*.log

預設忽略模式

ignore.useDefaultPatterns為true時,Repomix自動忽略以下常見模式:

text
node_modules/**
.git/**
coverage/**
dist/**

完整列表請參見defaultIgnore.ts

進階功能

程式碼壓縮

程式碼壓縮功能(透過output.compress: true啟用)使用Tree-sitter智慧提取基本程式碼結構,同時移除實作細節。這有助於在保持重要的結構資訊的同時減少令牌數量。

主要優點:

  • 顯著減少令牌數量
  • 保留類別和函式簽名
  • 保持匯入和匯出
  • 保留型別定義和介面
  • 移除函式本體和實作細節

更多詳細資訊和範例,請參閱程式碼壓縮指南

Git整合

output.git設定提供強大的Git感知功能:

  • sortByChanges:當設定為true時,檔案按Git更改次數(修改該檔案的提交數)排序。更改次數較多的檔案出現在輸出的底部。這有助於優先處理更活躍開發的檔案。預設值:true
  • sortByChangesMaxCommits:計算檔案更改次數時要分析的最大提交數。預設值:100
  • includeDiffs:當設定為true時,在輸出中包含Git差異(同時分別包含工作樹和暫存區的更改)。這允許讀者查看儲存庫中的待處理更改。預設值:false

設定範例:

json
{
  "output": {
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": true
    }
  }
}

安全檢查

security.enableSecurityCheck啟用時,Repomix使用Secretlint在將程式碼庫包含在輸出中之前檢測敏感資訊。這有助於防止意外暴露:

  • API金鑰
  • 存取令牌
  • 私密金鑰
  • 密碼
  • 其他敏感憑證

註解移除

output.removeComments設定為true時,將從支援的檔案類型中移除註解,以減少輸出大小並專注於核心程式碼內容。這在以下情況特別有用:

  • 處理大量文件化的程式碼
  • 嘗試減少令牌數量
  • 專注於程式碼結構和邏輯

有關支援的語言和詳細範例,請參閱註解移除指南

Released under the MIT License.