Skip to content

配置

Repomix可以通过配置文件(repomix.config.json)或命令行选项进行配置。配置文件允许您自定义代码库的处理和输出方式。

快速开始

在项目目录中创建配置文件:

bash
repomix --init

这将创建一个带有默认设置的repomix.config.json文件。您还可以创建一个全局配置文件,在找不到本地配置时将使用它作为后备:

bash
repomix --init --global

配置选项

选项说明默认值
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语法,允许:

  • 注释(单行和多行)
  • 对象和数组中的尾随逗号
  • 无引号属性名
  • 更灵活的字符串语法

模式验证

您可以通过添加$schema属性为配置文件启用模式验证:

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.json",
  "output": {
    "filePath": "repomix-output.md",
    "style": "markdown"
  }
}

这在支持JSON模式的编辑器中提供自动完成和验证功能。

配置文件示例

以下是完整配置文件(repomix.config.json)的示例:

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.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. 当前目录中的本地配置文件(repomix.config.json
  2. 全局配置文件:
    • Windows:%LOCALAPPDATA%\Repomix\repomix.config.json
    • macOS/Linux:~/.config/repomix/repomix.config.json

命令行选项优先于配置文件设置。

忽略模式

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.