Skip to content

設定

Repomixは設定ファイルまたはコマンドラインオプションを使用して設定できます。設定ファイルを使用することで、コードベースの処理と出力方法をカスタマイズできます。

設定ファイルの形式

Repomixは柔軟性と使いやすさのために、複数の設定ファイル形式をサポートしています。

Repomixは以下の優先順位で設定ファイルを自動的に検索します:

  1. TypeScript (repomix.config.tsrepomix.config.mtsrepomix.config.cts)
  2. JavaScript/ES Module (repomix.config.jsrepomix.config.mjsrepomix.config.cjs)
  3. JSON (repomix.config.json5repomix.config.jsoncrepomix.config.json)

JSON設定

プロジェクトディレクトリに設定ファイルを作成します:

bash
repomix --init

これにより、デフォルト設定のrepomix.config.jsonファイルが作成されます。また、ローカル設定が見つからない場合のフォールバックとして使用されるグローバル設定ファイルを作成することもできます:

bash
repomix --init --global

TypeScript設定

TypeScript設定ファイルは、完全な型チェックとIDEサポートにより、最高の開発者体験を提供します。

インストール:

defineConfigを使用してTypeScriptまたはJavaScript設定を使用するには、Repomixをdev dependencyとしてインストールする必要があります:

bash
npm install -D repomix

例:

typescript
// 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
  • ✅ 動的な値(タイムスタンプ、環境変数など)の使用

動的な値の例:

typescript
// 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
output.filePath出力ファイル名。XML、Markdown、プレーンテキスト形式をサポートしています"repomix-output.xml"
output.style出力形式(xmlmarkdownjsonplain)。各形式はAIツールに応じて異なる利点があります"xml"
output.parsableStyle選択したスタイルスキーマに基づいて出力をエスケープするかどうか。より良い解析が可能になりますが、トークン数が増加する可能性がありますfalse
output.compressTree-sitterを使用してインテリジェントなコード抽出を実行し、構造を保持しながらトークン数を削減するかどうかfalse
output.headerTextファイルヘッダーに含めるカスタムテキスト。AIツールにコンテキストや指示を提供するのに便利ですnull
output.instructionFilePathAI処理用の詳細なカスタム指示を含むファイルへのパス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.topFilesLength要約に表示するトップファイルの数。0に設定すると、要約は表示されません5
output.includeEmptyDirectoriesリポジトリ構造に空のディレクトリを含めるかどうかfalse
output.includeFullDirectoryStructureincludeパターンを使用する際、includeされたファイルのみを処理しながら、完全なディレクトリツリー(ignoreパターンに従う)を表示するかどうか。AI分析のための完全なリポジトリコンテキストを提供しますfalse
output.git.sortByChangesGitの変更回数でファイルをソートするかどうか。変更が多いファイルが下部に表示されますtrue
output.git.sortByChangesMaxCommitsGitの変更を分析する最大コミット数。パフォーマンスのために履歴の深さを制限します100
output.git.includeDiffs出力にGitの差分を含めるかどうか。作業ツリーとステージング済みの変更を別々に表示しますfalse
output.git.includeLogs出力にGitログを含めるかどうか。コミット履歴の日時、メッセージ、ファイルパスを表示しますfalse
output.git.includeLogsCount含めるGitログのコミット数。開発パターンを理解するための履歴の深さを制限します50
include含めるファイルのパターン(globパターンを使用)[]
ignore.useGitignoreプロジェクトの.gitignoreファイルのパターンを使用するかどうかtrue
ignore.useDefaultPatternsデフォルトの除外パターン(node_modules、.gitなど)を使用するかどうかtrue
ignore.customPatterns追加の除外パターン(globパターンを使用)[]
security.enableSecurityCheckSecretlintを使用して機密情報を検出するセキュリティチェックを実行するかどうか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,
    "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は以下の順序で設定ファイルを探します:

  1. カレントディレクトリのローカル設定ファイル(優先順位: TS > JS > JSON)
    • TypeScript: repomix.config.tsrepomix.config.mtsrepomix.config.cts
    • JavaScript: repomix.config.jsrepomix.config.mjsrepomix.config.cjs
    • JSON: repomix.config.json5repomix.config.jsoncrepomix.config.json
  2. グローバル設定ファイル(優先順位: 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
    • 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

コマンドラインオプションは設定ファイルの設定よりも優先されます。

インクルードパターン

Repomixはglobパターンを使用して含めるファイルを指定できます。これにより、より柔軟で強力なファイル選択が可能になります:

  • **/*.jsを使用して、任意のディレクトリ内のすべてのJavaScriptファイルを含める
  • src/**/*を使用して、srcディレクトリとそのサブディレクトリ内のすべてのファイルを含める
  • ["src/**/*.js", "**/*.md"]のように複数のパターンを組み合わせて、src内のJavaScriptファイルとすべてのMarkdownファイルを含める

設定ファイルでインクルードパターンを指定できます:

json
{
  "include": ["src/**/*", "tests/**/*.test.js"]
}

または、一時的なフィルタリングには--includeコマンドラインオプションを使用します。

除外パターン

Repomixは、パッキングプロセス中に特定のファイルやディレクトリを除外するための複数の方法を提供します:

  • .gitignore: デフォルトでは、プロジェクトの.gitignoreファイルと.git/info/excludeにリストされているパターンが使用されます。この動作はignore.useGitignore設定または--no-gitignore CLIオプションで制御できます。
  • デフォルトパターン: Repomixには、一般的に除外されるファイルとディレクトリのデフォルトリスト(例:node_modules、.git、バイナリファイル)が含まれています。この機能はignore.useDefaultPatterns設定または--no-default-patterns CLIオプションで制御できます。詳細はdefaultIgnore.tsを参照してください。
  • .repomixignore: プロジェクトルートに.repomixignoreファイルを作成して、Repomix固有の除外パターンを定義できます。このファイルは.gitignoreと同じ形式に従います。
  • カスタムパターン: 設定ファイルのignore.customPatternsオプションを使用して、追加の除外パターンを指定できます。この設定は-i, --ignoreコマンドラインオプションで上書きできます。

優先順位(高い順):

  1. カスタムパターン(ignore.customPatterns
  2. .repomixignore
  3. .gitignoreおよび.git/info/excludeignore.useGitignoreがtrueで--no-gitignoreが使用されていない場合)
  4. デフォルトパターン(ignore.useDefaultPatternsがtrueで--no-default-patternsが使用されていない場合)

このアプローチにより、プロジェクトのニーズに基づいて柔軟なファイル除外設定が可能になります。セキュリティ上機密性の高いファイルや大きなバイナリファイルの除外を確実にし、機密情報の漏洩を防ぎながら、生成されるパックファイルのサイズを最適化するのに役立ちます。

注意: バイナリファイルはデフォルトではパック出力に含まれませんが、そのパスは出力ファイルの「リポジトリ構造」セクションにリストされます。これにより、パックファイルを効率的でテキストベースに保ちながら、リポジトリ構造の完全な概要が提供されます。詳細はバイナリファイルの処理を参照してください。

.repomixignoreの例:

text
# キャッシュディレクトリ
.cache/
tmp/

# ビルド出力
dist/
build/

# ログ
*.log

デフォルトの除外パターン

ignore.useDefaultPatternsがtrueの場合、Repomixは以下のような一般的なパターンを自動的に除外します:

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

完全なリストはdefaultIgnore.tsを参照してください。

バイナリファイルの処理

バイナリファイル(画像、PDF、コンパイル済みバイナリ、アーカイブなど)は、効率的なテキストベースの出力を維持するために特別に処理されます:

  • ファイル内容: バイナリファイルは、ファイルをテキストベースに保ち、AI処理に効率的にするために、パック出力に含まれません
  • ディレクトリ構造: バイナリファイルのパスはリストされ、ディレクトリ構造セクションに表示され、リポジトリの完全な概要を提供します

このアプローチにより、AI向けに最適化された効率的なテキストベースの出力を維持しながら、リポジトリ構造の完全なビューを取得できます。

例:

リポジトリにlogo.pngapp.jarが含まれている場合:

  • ディレクトリ構造セクションに表示されます
  • その内容はファイルセクションに含まれません

ディレクトリ構造出力:

src/
  index.ts
  utils.ts
assets/
  logo.png
build/
  app.jar

これにより、AIツールはこれらのバイナリファイルがプロジェクト構造に存在することを理解できますが、そのバイナリ内容は処理しません。

注意: input.maxFileSize設定オプション(デフォルト:50MB)を使用して、最大ファイルサイズのしきい値を制御できます。この制限より大きいファイルは完全にスキップされます。

高度な機能

コード圧縮

output.compress: trueで有効になるコード圧縮機能は、Tree-sitterを使用して、実装の詳細を削除しながら本質的なコード構造を抽出します。これにより、重要な構造情報を維持しながらトークン数を削減できます。

主な利点:

  • トークン数を大幅に削減
  • クラスと関数のシグネチャを保持
  • インポートとエクスポートを維持
  • 型定義とインターフェースを保持
  • 関数本体と実装の詳細を削除

詳細と例についてはコード圧縮ガイドをご覧ください。

Git統合

output.git設定では、以下のようなGit対応機能を提供します:

  • sortByChanges: trueに設定すると、ファイルはGitの変更回数(そのファイルを変更したコミット数)でソートされます。変更が多いファイルが出力の下部に表示されます。これは、より活発に開発されているファイルを優先するのに役立ちます。デフォルト: true
  • sortByChangesMaxCommits: ファイルの変更回数を数える際に分析する最大コミット数。デフォルト: 100
  • includeDiffs: trueに設定すると、Git差分を出力に含めます(ワークツリーとステージング済みの変更を別々に含みます)。これにより、リポジトリの保留中の変更を確認できます。デフォルト: false
  • includeLogs: trueに設定すると、Gitログを出力に含めます。コミット履歴の日時、メッセージ、ファイルパスが表示され、AIがどのファイルが一緒に変更される傾向があるかを理解できます。デフォルト: false
  • includeLogsCount: 含めるGitログのコミット数。開発パターンの分析に使用する履歴の深さを制御します。デフォルト: 50

設定例:

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

セキュリティチェック

security.enableSecurityCheckが有効な場合、RepomixはSecretlintを使用して、出力に含める前にコードベース内の機密情報を検出します。これにより、以下のような情報の誤った露出を防ぐことができます:

  • APIキー
  • アクセストークン
  • 秘密鍵
  • パスワード
  • その他の機密情報

コメントの削除

output.removeCommentstrueに設定すると、サポートされているファイルタイプからコメントが削除され、出力サイズを削減し、本質的なコード内容に焦点を当てることができます。これは以下のような場合に特に便利です:

  • 大量にドキュメント化されたコードを扱う場合
  • トークン数を削減したい場合
  • コードの構造とロジックに集中したい場合

サポートされている言語と詳細な例についてはコメント削除ガイドをご覧ください。

Released under the MIT License.