日本語
ドキュメント
フォーマッター

フォーマッター

OpenCode は言語固有のフォーマッターを使用します。

OpenCode はファイルの書き込みや編集後に、言語固有のフォーマッターを使用して自動的にフォーマットします。これにより、生成されるコードがプロジェクトのコードスタイルに従うことが保証されます。

組み込みフォーマッター

OpenCode には、人気のある言語やフレームワーク用の組み込みフォーマッターが多数含まれています。以下は、フォーマッター、サポートされるファイル拡張子、必要なコマンドまたは設定オプションのリストです。

フォーマッター拡張子要件
gofmt.gogofmt コマンドが利用可能
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacemix コマンドが利用可能
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml、その他 (opens in a new tab)package.jsonprettier 依存関係
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml、その他 (opens in a new tab)biome.json(c) 設定ファイル
zig.zig, .zonzig コマンドが利用可能
clang-format.c, .cpp, .h, .hpp, .ino、その他 (opens in a new tab).clang-format 設定ファイル
ktlint.kt, .ktsktlint コマンドが利用可能
ruff.py, .pyiruff コマンドが利用可能で設定あり
rustfmt.rsrustfmt コマンドが利用可能
cargofmt.rscargo fmt コマンドが利用可能
uv.py, .pyiuv コマンドが利用可能
rubocop.rb, .rake, .gemspec, .rurubocop コマンドが利用可能
standardrb.rb, .rake, .gemspec, .rustandardrb コマンドが利用可能
htmlbeautifier.erb, .html.erbhtmlbeautifier コマンドが利用可能
air.Rair コマンドが利用可能
dart.dartdart コマンドが利用可能
ocamlformat.ml, .mliocamlformat コマンドが利用可能で .ocamlformat 設定ファイル
terraform.tf, .tfvarsterraform コマンドが利用可能
gleam.gleamgleam コマンドが利用可能
nixfmt.nixnixfmt コマンドが利用可能
shfmt.sh, .bashshfmt コマンドが利用可能
pint.phpcomposer.jsonlaravel/pint 依存関係
oxfmt (実験的).js, .jsx, .ts, .tsxpackage.jsonoxfmt 依存関係と実験的環境変数フラグ
ormolu.hsormolu コマンドが利用可能

したがって、プロジェクトの package.jsonprettier がある場合、OpenCode は自動的にそれを使用します。

動作の仕組み

OpenCode がファイルを書き込みまたは編集すると:

  1. ファイル拡張子をすべての有効なフォーマッターと照合します。
  2. ファイルに対して適切なフォーマッターコマンドを実行します。
  3. フォーマットの変更を自動的に適用します。

このプロセスはバックグラウンドで行われ、手動の手順なしにコードスタイルが維持されます。

設定

OpenCode 設定の formatter セクションでフォーマッターをカスタマイズできます。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {}
}

各フォーマッター設定は以下をサポートします:

プロパティ説明
disabledbooleanフォーマッターを無効にするには true に設定
commandstring[]フォーマットに使用するコマンド
environmentobjectフォーマッター実行時に設定する環境変数
extensionsstring[]このフォーマッターが処理するファイル拡張子

いくつかの例を見てみましょう。

フォーマッターの無効化

すべてのフォーマッターをグローバルに無効にするには、formatterfalse に設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": false
}

特定のフォーマッターを無効にするには、disabledtrue に設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    }
  }
}

カスタムフォーマッター

コマンド、環境変数、ファイル拡張子を指定して、組み込みフォーマッターをオーバーライドしたり、新しいフォーマッターを追加したりできます:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    },
    "custom-markdown-formatter": {
      "command": ["deno", "fmt", "$FILE"],
      "extensions": [".md"]
    }
  }
}

コマンド内の $FILE プレースホルダーは、フォーマットされるファイルのパスに置き換えられます。