Repopack简介
Repopack是一款功能强大的开源工具,由开发者Kazuki Yamada创建,旨在解决将整个代码库输入到AI模型中的问题。它可以将整个代码仓库打包成一个单一的、AI友好的文件,非常适合向Claude、ChatGPT、Gemini等大型语言模型(LLM)或其他AI工具提供代码分析的输入。
Repopack的主要特点包括:
- AI优化:以易于AI理解和处理的方式格式化代码库
- 令牌计数:为每个文件和整个仓库提供令牌计数,有助于控制LLM的上下文限制
- 简单易用:只需一个命令即可打包整个仓库
- 可定制:轻松配置需要包含或排除的内容
- 与Git集成:自动尊重.gitignore文件
- 注重安全:集成Secretlint进行安全检查,检测和防止敏感信息的包含
快速开始使用Repopack
要开始使用Repopack,你可以在项目目录中直接运行以下命令,无需安装:
npx repopack
或者全局安装以便重复使用:
# 使用npm安装
npm install -g repopack
# 或使用yarn
yarn global add repopack
# 然后在任何项目目录中运行
repopack
运行后,Repopack将在当前目录生成一个repopack-output.txt
文件,其中包含了整个仓库的AI友好格式内容。
Repopack的主要用法
Repopack提供了多种灵活的使用方式,以满足不同的需求:
-
打包整个仓库:
repopack
-
打包特定目录:
repopack path/to/directory
-
使用glob模式打包特定文件或目录:
repopack --include "src/**/*.ts,**/*.md"
-
排除特定文件或目录:
repopack --ignore "**/*.log,tmp/"
-
打包远程仓库:
repopack --remote https://github.com/yamadashy/repopack # 也可以使用GitHub简写: repopack --remote yamadashy/repopack
-
初始化新的配置文件:
repopack init
输出文件格式
Repopack生成的输出文件有两种格式选项:纯文本格式(默认)和XML格式。
纯文本格式(默认)
纯文本格式的输出文件结构如下:
================================================================
REPOPACK OUTPUT FILE
================================================================
(元数据和AI使用说明)
================================================================
Repository Structure
================================================================
src/
cli/
cliOutput.ts
index.ts
config/
configLoader.ts
(其余目录结构)
================================================================
Repository Files
================================================================
================
File: src/index.js
================
// 文件内容
================
File: src/utils.js
================
// 文件内容
(其余文件内容)
XML格式
要生成XML格式的输出,可以使用--style xml
选项:
repopack --style xml
XML格式的输出结构如下:
<summary>
(元数据和AI使用说明)
</summary>
<repository_structure>
src/
cli/
cliOutput.ts
index.ts
(其余目录结构)
</repository_structure>
<repository_files>
<file path="src/index.js">
// 文件内容
</file>
(其余文件)
</repository_files>
XML格式在AI上下文中可能更有效,因为它可以帮助AI系统更准确地解析输入内容。
配置Repopack
Repopack提供了丰富的配置选项,可以通过创建repopack.config.json
文件来自定义打包行为。主要的配置选项包括:
- 输出文件名和格式
- 是否移除注释和空行
- 是否显示行号
- 包含和忽略的文件模式
- 是否使用.gitignore文件
- 自定义忽略模式
例如,一个典型的配置文件可能如下所示:
{
"output": {
"filePath": "repopack-output.xml",
"style": "xml",
"headerText": "Custom header information for the packed file.",
"removeComments": false,
"removeEmptyLines": false,
"showLineNumbers": false,
"topFilesLength": 5
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
"customPatterns": ["additional-folder", "**/*.log"]
}
}
Repopack的安全特性
Repopack非常注重代码安全,它集成了Secretlint来检测潜在的敏感信息。在打包过程完成后,Repopack会显示安全检查结果,如果检测到可疑文件,将列出这些文件并给出警告信息。
在AI辅助开发中应用Repopack
Repopack生成的输出文件可以直接用于各种AI工具,如Claude、ChatGPT和Gemini。以下是一些示例提示,展示了如何利用Repopack打包的代码进行AI辅助开发:
-
代码审查和重构:
这个文件包含了我的整个代码库。请审查整体结构并提出任何改进或重构的建议,重点关注可维护性和可扩展性。
-
生成文档:
基于这个文件中的代码库,请生成一个详细的README.md,包括项目概述、主要特性、设置说明和使用示例。
-
生成测试用例:
分析这个文件中的代码,为主要函数和类提出一套全面的单元测试。包括边缘情况和潜在的错误场景。
-
代码质量评估:
审查代码库是否遵循编码最佳实践和行业标准。识别出可以在可读性、可维护性和效率方面改进的地方。建议具体的更改以使代码符合最佳实践。
-
库概述:
这个文件包含了整个库的代码库。请提供一个全面的库概述,包括其主要目的、关键特性和整体架构。
通过这些提示,开发者可以充分利用AI工具来分析、改进和扩展他们的代码库,大大提高开发效率和代码质量。
结语
Repopack为开发者提供了一个强大而灵活的工具,可以轻松地将整个代码库打包成AI友好的格式。无论是进行代码审查、生成文档、创建测试用例,还是寻求整体架构建议,Repopack都能为AI辅助开发提供有力支持。随着AI在软件开发中的应用日益广泛,Repopack这样的工具将在提高开发效率和代码质量方面发挥越来越重要的作用。
Repopack是开源的,遵循MIT许可证,欢迎开发者们贡献代码、报告问题或提出新的功能建议。随着工具的不断完善和社区的积极参与,Repopack有望成为AI辅助开发工具链中不可或缺的一环。