設定
Repomixは設定ファイルまたはコマンドラインオプションを使用して設定できます。設定ファイルを使用することで、コードベースの処理と出力方法をカスタマイズできます。
設定ファイルの形式
Repomixは柔軟性と使いやすさのために、複数の設定ファイル形式をサポートしています。
Repomixは以下の優先順位で設定ファイルを自動的に検索します:
- TypeScript (
repomix.config.ts、repomix.config.mts、repomix.config.cts) - JavaScript/ES Module (
repomix.config.js、repomix.config.mjs、repomix.config.cjs) - JSON (
repomix.config.json5、repomix.config.jsonc、repomix.config.json)
JSON設定
プロジェクトディレクトリに設定ファイルを作成します:
repomix --initこれにより、デフォルト設定のrepomix.config.jsonファイルが作成されます。また、ローカル設定が見つからない場合のフォールバックとして使用されるグローバル設定ファイルを作成することもできます:
repomix --init --globalTypeScript設定
TypeScript設定ファイルは、完全な型チェックとIDEサポートにより、最高の開発者体験を提供します。
インストール:
defineConfigを使用してTypeScriptまたはJavaScript設定を使用するには、Repomixをdev dependencyとしてインストールする必要があります:
npm install -D repomix例:
// repomix.config.ts
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});利点:
- ✅ IDEでの完全なTypeScript型チェック
- ✅ 優れたIDE自動補完とIntelliSense
- ✅ 動的な値(タイムスタンプ、環境変数など)の使用
動的な値の例:
// repomix.config.ts
import { defineConfig } from 'repomix';
// タイムスタンプベースのファイル名を生成
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');
export default defineConfig({
output: {
filePath: `output-${timestamp}.xml`,
style: 'xml',
},
});JavaScript設定
JavaScript設定ファイルはTypeScriptと同様に機能し、defineConfigと動的な値をサポートしています。
設定オプション
| オプション | 説明 | デフォルト値 |
|---|---|---|
input.maxFileSize | 処理する最大ファイルサイズ(バイト)。これより大きいファイルはスキップされます。大きなバイナリファイルやデータファイルを除外するのに便利です | 50000000 |
input.processors | { pattern, command, timeout?, onError? }エントリの順序付き配列で、パッキング前に外部コマンドを実行してマッチしたファイルを変換します(例:JSON→TOON)。最初にマッチしたglobが優先されます。任意のコマンドを実行するため、ローカルCLI実行時(および--remote-trust-configを指定したリモートリポジトリ)でのみ実行されます。ファイルプロセッサーを参照してください | 未設定 |
output.filePath | 出力ファイル名。XML、Markdown、プレーンテキスト形式をサポートしています | "repomix-output.xml" |
output.style | 出力形式(xml、markdown、json、plain)。各形式はAIツールに応じて異なる利点があります | "xml" |
output.filePathStyle | 出力内でのファイルパスの表示方法(target-relative は各ターゲットルートからの相対パス、cwd-relative はカレントワーキングディレクトリからの相対パスを使用) | "target-relative" |
output.parsableStyle | 選択したスタイルスキーマに基づいて出力をエスケープするかどうか。より良い解析が可能になりますが、トークン数が増加する可能性があります | false |
output.compress | Tree-sitterを使用してインテリジェントなコード抽出を実行し、構造を保持しながらトークン数を削減するかどうか | false |
output.patterns | ファイルごとのインクルードレベル。{ pattern, compress?, directoryStructureOnly? }エントリの順序付き配列で、最初にマッチしたglobが優先され、そのファイルに対するグローバルなoutput.compressを上書きします。ファイルごとのインクルードレベルを参照してください | 未設定 |
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.truncateBase64 | 長いbase64データ文字列(例:画像)を切り詰めてトークン数を削減するかどうか | false |
output.copyToClipboard | ファイルの保存に加えて、出力をシステムクリップボードにコピーするかどうか | false |
output.splitOutput | パートあたりの最大サイズで出力を複数の番号付きファイルに分割します(例:1000000で約1MB)。CLIは500kbや2mbのような読みやすいサイズを受け付けます。各ファイルが制限以下に保たれ、単一のソースファイルがパート間で分割されることを防ぎます | 未設定 |
output.tokenBudget | パックした出力がこのトークン数を超えた場合、ゼロ以外の終了コードで失敗します。CI/エージェントのコンテキスト制限に対するガードとして機能します。出力自体は生成されます | 未設定 |
output.topFilesLength | 要約に表示するトップファイルの数。0に設定すると、要約は表示されません | 5 |
output.includeEmptyDirectories | リポジトリ構造に空のディレクトリを含めるかどうか | false |
output.includeFullDirectoryStructure | includeパターンを使用する際、includeされたファイルのみを処理しながら、完全なディレクトリツリー(ignoreパターンに従う)を表示するかどうか。AI分析のための完全なリポジトリコンテキストを提供します | false |
output.git.sortByChanges | Gitの変更回数でファイルをソートするかどうか。変更が多いファイルが下部に表示されます | true |
output.git.sortByChangesMaxCommits | Gitの変更を分析する最大コミット数。パフォーマンスのために履歴の深さを制限します | 100 |
output.git.includeDiffs | 出力にGitの差分を含めるかどうか。作業ツリーとステージング済みの変更を別々に表示します | false |
output.git.includeLogs | 出力にGitログを含めるかどうか。コミット履歴の日時、メッセージ、ファイルパスを表示します | false |
output.git.includeLogsCount | 含めるGitログのコミット数。開発パターンを理解するための履歴の深さを制限します | 50 |
include | 含めるファイルのパターン(globパターンを使用) | [] |
ignore.useGitignore | プロジェクトの.gitignoreファイルのパターンを使用するかどうか | true |
ignore.useDotIgnore | プロジェクトの.ignoreファイルのパターンを使用するかどうか | true |
ignore.useDefaultPatterns | デフォルトの除外パターン(node_modules、.gitなど)を使用するかどうか | true |
ignore.customPatterns | 追加の除外パターン(globパターンを使用) | [] |
security.enableSecurityCheck | Secretlintを使用して機密情報を検出するセキュリティチェックを実行するかどうか | true |
tokenCount.encoding | OpenAI互換のトークンカウントエンコーディング(GPT-4oの場合はo200k_base、GPT-4/3.5の場合はcl100k_base)。gpt-tokenizerを使用。 | "o200k_base" |
設定ファイルはJSON5構文をサポートしており、以下が可能です:
- コメント(単一行および複数行)
- オブジェクトと配列の末尾のカンマ
- 引用符なしのプロパティ名
- より柔軟な文字列構文
スキーマ検証
設定ファイルに$schemaプロパティを追加することで、スキーマ検証を有効にできます:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.md",
"style": "markdown"
}
}これにより、JSONスキーマをサポートするエディタでの自動補完と検証が可能になります。
設定ファイルの例
以下は完全な設定ファイル(repomix.config.json)の例です:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"input": {
"maxFileSize": 50000000,
// "processors": [
// { "pattern": "**/*.json", "command": "npx @toon-format/cli {file}" }
// ]
},
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"filePathStyle": "target-relative",
"parsableStyle": false,
"compress": false,
"headerText": "パッケージ化されたファイルのカスタムヘッダー情報",
"fileSummary": true,
"directoryStructure": true,
"files": true,
"removeComments": false,
"removeEmptyLines": false,
"topFilesLength": 5,
"showLineNumbers": false,
// "patterns": [
// { "pattern": "docs/**/*", "compress": true },
// { "pattern": "website/**/*", "directoryStructureOnly": true }
// ],
"truncateBase64": false,
"copyToClipboard": false,
"includeEmptyDirectories": false,
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": false,
"includeLogs": false,
"includeLogsCount": 50
}
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
// パターンは .repomixignore でも指定できます
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}設定ファイルの場所
Repomixは以下の順序で設定ファイルを探します:
- カレントディレクトリのローカル設定ファイル(優先順位: TS > JS > JSON)
- TypeScript:
repomix.config.ts、repomix.config.mts、repomix.config.cts - JavaScript:
repomix.config.js、repomix.config.mjs、repomix.config.cjs - JSON:
repomix.config.json5、repomix.config.jsonc、repomix.config.json
- TypeScript:
- グローバル設定ファイル(優先順位: TS > JS > JSON)
- Windows:
- TypeScript:
%LOCALAPPDATA%\Repomix\repomix.config.ts、.mts、.cts - JavaScript:
%LOCALAPPDATA%\Repomix\repomix.config.js、.mjs、.cjs - JSON:
%LOCALAPPDATA%\Repomix\repomix.config.json5、.jsonc、.json
- TypeScript:
- macOS/Linux:
- TypeScript:
~/.config/repomix/repomix.config.ts、.mts、.cts - JavaScript:
~/.config/repomix/repomix.config.js、.mjs、.cjs - JSON:
~/.config/repomix/repomix.config.json5、.jsonc、.json
- TypeScript:
- Windows:
コマンドラインオプションは設定ファイルの設定よりも優先されます。
インクルードパターン
Repomixはglobパターンを使用して含めるファイルを指定できます。これにより、より柔軟で強力なファイル選択が可能になります:
**/*.jsを使用して、任意のディレクトリ内のすべてのJavaScriptファイルを含めるsrc/**/*を使用して、srcディレクトリとそのサブディレクトリ内のすべてのファイルを含める["src/**/*.js", "**/*.md"]のように複数のパターンを組み合わせて、src内のJavaScriptファイルとすべてのMarkdownファイルを含める
設定ファイルでインクルードパターンを指定できます:
{
"include": ["src/**/*", "tests/**/*.test.js"]
}または、一時的なフィルタリングには--includeコマンドラインオプションを使用します。
除外パターン
Repomixは、パッキングプロセス中に特定のファイルやディレクトリを除外するための複数の方法を提供します:
- .gitignore: デフォルトでは、プロジェクトの
.gitignoreファイルと.git/info/excludeにリストされているパターンが使用されます。この動作はignore.useGitignore設定または--no-gitignoreCLIオプションで制御できます。 - .ignore: プロジェクトルートに
.ignoreファイルを使用できます。.gitignoreと同じ形式に従います。このファイルはripgrepやthe silver searcherなどのツールでも尊重されるため、複数の除外ファイルを維持する必要が減ります。この動作はignore.useDotIgnore設定または--no-dot-ignoreCLIオプションで制御できます。 - デフォルトパターン: Repomixには、一般的に除外されるファイルとディレクトリのデフォルトリスト(例:node_modules、.git、バイナリファイル)が含まれています。この機能は
ignore.useDefaultPatterns設定または--no-default-patternsCLIオプションで制御できます。詳細はdefaultIgnore.tsを参照してください。 - .repomixignore: プロジェクトルートに
.repomixignoreファイルを作成して、Repomix固有の除外パターンを定義できます。このファイルは.gitignoreと同じ形式に従います。 - カスタムパターン: 設定ファイルの
ignore.customPatternsオプションを使用して、追加の除外パターンを指定できます。この設定は-i, --ignoreコマンドラインオプションで上書きできます。
優先順位(高い順):
- カスタムパターン(
ignore.customPatterns) - 除外ファイル(
.repomixignore、.ignore、.gitignore、.git/info/exclude):- ネストされたディレクトリにある場合、より深いディレクトリのファイルが優先されます
- 同じディレクトリにある場合、これらのファイルは順不同でマージされます
- デフォルトパターン(
ignore.useDefaultPatternsがtrueで--no-default-patternsが使用されていない場合)
このアプローチにより、プロジェクトのニーズに基づいて柔軟なファイル除外設定が可能になります。セキュリティ上機密性の高いファイルや大きなバイナリファイルの除外を確実にし、機密情報の漏洩を防ぎながら、生成されるパックファイルのサイズを最適化するのに役立ちます。
注意: バイナリファイルはデフォルトではパック出力に含まれませんが、そのパスは出力ファイルの「リポジトリ構造」セクションにリストされます。これにより、パックファイルを効率的でテキストベースに保ちながら、リポジトリ構造の完全な概要が提供されます。詳細はバイナリファイルの処理を参照してください。
.repomixignoreの例:
# キャッシュディレクトリ
.cache/
tmp/
# ビルド出力
dist/
build/
# ログ
*.logデフォルトの除外パターン
ignore.useDefaultPatternsがtrueの場合、Repomixは以下のような一般的なパターンを自動的に除外します:
node_modules/**
.git/**
coverage/**
dist/**完全なリストはdefaultIgnore.tsを参照してください。
バイナリファイルの処理
バイナリファイル(画像、PDF、コンパイル済みバイナリ、アーカイブなど)は、効率的なテキストベースの出力を維持するために特別に処理されます:
- ファイル内容: バイナリファイルは、ファイルをテキストベースに保ち、AI処理に効率的にするために、パック出力に含まれません
- ディレクトリ構造: バイナリファイルのパスはリストされ、ディレクトリ構造セクションに表示され、リポジトリの完全な概要を提供します
このアプローチにより、AI向けに最適化された効率的なテキストベースの出力を維持しながら、リポジトリ構造の完全なビューを取得できます。
例:
リポジトリにlogo.pngとapp.jarが含まれている場合:
- ディレクトリ構造セクションに表示されます
- その内容はファイルセクションに含まれません
ディレクトリ構造出力:
src/
index.ts
utils.ts
assets/
logo.png
build/
app.jarこれにより、AIツールはこれらのバイナリファイルがプロジェクト構造に存在することを理解できますが、そのバイナリ内容は処理しません。
注意: input.maxFileSize設定オプション(デフォルト:50MB)を使用して、最大ファイルサイズのしきい値を制御できます。この制限より大きいファイルは完全にスキップされます。
高度な機能
コード圧縮
output.compress: trueで有効になるコード圧縮機能は、Tree-sitterを使用して、実装の詳細を削除しながら本質的なコード構造を抽出します。これにより、重要な構造情報を維持しながらトークン数を削減できます。
主な利点:
- トークン数を大幅に削減
- クラスと関数のシグネチャを保持
- インポートとエクスポートを維持
- 型定義とインターフェースを保持
- 関数本体と実装の詳細を削除
詳細と例についてはコード圧縮ガイドをご覧ください。
ファイルごとのインクルードレベル
output.compressはすべてのファイルに単一のレベルを適用しますが、output.patternsを使用すると、設定ファイルからglobごとに詳細レベルを制御できます。各エントリはglob(include/ignoreと同じ方法でマッチします)でファイルを対象とし、マッチしたファイルに対するグローバルなoutput.compress設定を上書きします。
{
"output": {
"compress": false, // グローバルなデフォルトがキャッチオールとして機能します
"patterns": [
{ "pattern": "docs/**/*", "compress": true },
{ "pattern": "website/**/*", "directoryStructureOnly": true }
]
}
}各ファイルは次の3つのレベルのいずれかに解決されます:
- 完全な内容(デフォルト):ファイルの完全な内容が含まれます。
- 圧縮(
compress: true):内容はoutput.compressと同じTree-sitterパイプラインを通過します。 - ディレクトリ構造のみ(
directoryStructureOnly: true):ファイルはディレクトリ構造にリストされますが、その内容ブロックは出力から完全に省略されます。
ルール:
- パターンは配列の順序で評価され、特定のファイルに対して最初にマッチしたパターンが優先されます。
- マッチしたパターンのフラグは、グローバルな
output.compress設定を上書きします。フラグを設定せずにマッチしたパターンは、そのファイルに対して完全な内容を強制します。これは、グローバルなcompressからファイルをホワイトリスト登録するのに便利です。 - 同じパターンに両方が設定されている場合、
directoryStructureOnlyがcompressよりも優先されます。 - どのパターンにもマッチしない場合、グローバルな動作が適用されます(完全な内容、または
output.compressがtrueの場合は圧縮)。
このオプションは設定ファイル専用であり、同等のCLIフラグはありません。
ファイルプロセッサー
input.processorsは、パッキングされる前にファイルの内容を外部コマンドで変換します。各エントリはglob(include/ignoreと同じ方法でマッチします)でファイルを対象とし、マッチしたファイルの内容をコマンドの標準出力で置き換えます。これは、JSONをTOONに変換したり、SVGを最小化したり、notebookをプレーンなスクリプトに変換したりするなど、トークン削減やフォーマット変換に役立ちます。
{
"input": {
"processors": [
{
"pattern": "**/*.json",
"command": "npx @toon-format/cli {file}"
}
]
}
}動作の仕組み:
- Repomixは、マッチした各ファイルの内容を一時ファイルに書き込み、コマンド内の
{file}プレースホルダー(必須)をそのパスに置き換えます。 - コマンドはシェル経由で実行されるため、パイプや
npxのようなツールも使用できます。標準出力がファイルの新しい内容となり、他のファイルと同様にパイプラインの残りの処理(セキュリティチェック、トークンカウント、出力生成)を通過します。 - パターンは配列の順序で評価され、最初にマッチしたパターンが優先されます。1つのファイルは最大1つのプロセッサーによってのみ変換されます(連鎖はありません)。
プロセッサーごとのオプション:
timeout: コマンドの完了を待つ最大時間(ミリ秒)。デフォルト:60000(60秒)。npxはコールドキャッシュ時にパッケージのダウンロードに追加の時間が必要な場合があることに注意してください。onError: コマンドがゼロ以外のステータスで終了した場合、またはタイムアウトした場合の動作。"fail"(デフォルト)はパック全体を中断します。"skip"は警告をログに記録し、ファイルの元の内容にフォールバックします。
コマンドの例(それぞれ、適切な pattern と組み合わせる command の値です):
| パターン | command | 動作 |
|---|---|---|
**/*.json | jq -c . {file} | 空白を除去してJSONをコンパクト化 |
**/*.json | npx @toon-format/cli {file} | JSONをTOON(コンパクトでトークン効率の高いフォーマット)に変換 |
**/*.svg | npx svgo -i {file} -o - | SVGを圧縮 |
**/*.ipynb | jupyter nbconvert --to script --stdout {file} | JupyterノートブックをプレーンなPythonスクリプトに変換 |
最初にマッチしたパターンが優先されるため、ファイルごとに適用するプロセッサーは1つだけにしてください。たとえば **/*.json には jq かTOONコンバーターのどちらか一方を選びます。コマンドは変換後の内容を標準出力に書き出す必要があり、呼び出すツールは PATH 上で利用可能でなければなりません(npx ベースのコマンドは初回使用時にツールをダウンロードします)。
セキュリティ
ファイルプロセッサーは設定ファイルから任意のコマンドを実行するため、厳格な信頼モデルに従います:
- ローカルCLI実行時にのみ動作します。Repomixは作業ディレクトリ内の設定ファイルを自分のものとみなします — これはnpmスクリプトやMakefileと同じ信頼境界です。同様に、他者から入手したリポジトリ内で
repomixを実行する際、事前にrepomix.config.jsonを確認しないと、そのプロセッサーコマンドが自分のマシン上で実行されてしまいます。信頼できないリポジトリをパックする前には設定ファイルを確認してください。 - ライブラリAPI(
pack()/runCli())、MCPサーバー、およびホストされているrepomix.comでは無効であり、これらのいずれも設定からコマンドを実行することはできません。 - リモートリポジトリ(
--remote)の場合、クローンされたリポジトリの設定 — したがってそのプロセッサーも — は--remote-trust-configを明示的に渡した場合にのみ信頼されます。渡さない場合、リモートの設定は読み込まれすらしません。
有効なプロセッサーは起動時にログに記録されるため、見慣れない設定からの予期しないプロセッサーが可視化されます。コマンドは起動時やエラーメッセージにも出力されるため、認証情報はコマンドに直接埋め込まず、展開されずにログへ記録される環境変数(例:$TOKEN)経由で参照してください。
注意事項:
- 同じファイルに対してフォーマットを変更するプロセッサーと
output.compress、output.removeComments、またはoutput.patternsのcompressを組み合わせることは推奨されません。これらの処理はファイルの元の拡張子に基づいて振り分けられるため、変換後の内容に対して誤った言語のハンドラーが実行されてしまいます。同じ理由で、Markdown出力ではコードフェンスも元の拡張子でラベル付けされます(例:JSON→TOON変換されたファイルはjsonとしてフェンスされます)。圧縮はベストエフォートであり、解析に失敗した場合は変換後の内容に静かにフォールバックします。 --watchを使用すると、マッチするファイルは再ビルドのたびに再処理され、コマンドもそのたびに再実行されます。- タイムアウトが発生すると、Repomixはコマンドのシェルを終了させます。独自の長時間動作するバックグラウンドプロセスを生成するコマンドの場合、それらが実行されたまま残ることがあります。
- プロセッサーはテキストファイルのみを対象とします(バイナリファイルは処理前に除外されます)。その出力はUTF-8として読み取られます。
Git統合
output.git設定では、以下のようなGit対応機能を提供します:
sortByChanges: trueに設定すると、ファイルはGitの変更回数(そのファイルを変更したコミット数)でソートされます。変更が多いファイルが出力の下部に表示されます。これは、より活発に開発されているファイルを優先するのに役立ちます。デフォルト:truesortByChangesMaxCommits: ファイルの変更回数を数える際に分析する最大コミット数。デフォルト:100includeDiffs: trueに設定すると、Git差分を出力に含めます(ワークツリーとステージング済みの変更を別々に含みます)。これにより、リポジトリの保留中の変更を確認できます。デフォルト:falseincludeLogs: trueに設定すると、Gitログを出力に含めます。コミット履歴の日時、メッセージ、ファイルパスが表示され、AIがどのファイルが一緒に変更される傾向があるかを理解できます。デフォルト:falseincludeLogsCount: 含めるGitログのコミット数。開発パターンの分析に使用する履歴の深さを制御します。デフォルト:50
設定例:
{
"output": {
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": true,
"includeLogs": true,
"includeLogsCount": 30
}
}
}セキュリティチェック
security.enableSecurityCheckが有効な場合、RepomixはSecretlintを使用して、出力に含める前にコードベース内の機密情報を検出します。これにより、以下のような情報の誤った露出を防ぐことができます:
- APIキー
- アクセストークン
- 秘密鍵
- パスワード
- その他の機密情報
コメントの削除
output.removeCommentsをtrueに設定すると、サポートされているファイルタイプからコメントが削除され、出力サイズを削減し、本質的なコード内容に焦点を当てることができます。これは以下のような場合に特に便利です:
- 大量にドキュメント化されたコードを扱う場合
- トークン数を削減したい場合
- コードの構造とロジックに集中したい場合
サポートされている言語と詳細な例についてはコメント削除ガイドをご覧ください。
関連リソース
- コマンドラインオプション - CLIリファレンス(CLIオプションは設定ファイルより優先)
- 出力フォーマット - 各出力形式の詳細
- セキュリティ - 機密情報検出の仕組み
- コード圧縮 - Tree-sitterによるトークン数削減
- GitHubリポジトリの処理 - リモートリポジトリのオプション