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

Formatters

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

OpenCode は、ファイルが書き込まれたり編集されたりした後に、言語固有のフォーマッターを使ってファイルをフォーマットできます。フォーマッターはデフォルトで無効になっています。OpenCode が実行する前に、設定で有効にしてください。


Built-in

OpenCode には、人気のある言語やフレームワーク向けの組み込みフォーマッターがいくつか付属しています。以下は、フォーマッター、サポートされるファイル拡張子、そして必要なコマンドや設定オプションの一覧です。

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

フォーマッターが有効になっている場合、プロジェクトの package.jsonprettier があれば、OpenCode は一致するファイルに対して prettier を使用します。


How it works

OpenCode がファイルを書き込んだり編集したりし、フォーマッターが有効になっている場合、OpenCode は次のことを行います:

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

このプロセスは、有効なフォーマッターに対してバックグラウンドで実行されます。


Configure

OpenCode 設定の formatter セクションを通じて、フォーマッターを有効化・カスタマイズできます。

すべての組み込みフォーマッターを有効にするには、formattertrue に設定します。

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

組み込みフォーマッターを有効にしたまま、オーバーライドやカスタムフォーマッターを設定するには、オブジェクトを使用します。

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

各フォーマッターの設定では、次の項目をサポートしています:

PropertyTypeDescription
disabledbooleanフォーマッターを無効にするには true に設定します
commandstring[]フォーマットを実行するためのコマンド。カスタムフォーマッターには必須、組み込みフォーマッターには任意です。
environmentobjectフォーマッターの実行時に設定する環境変数
extensionsstring[]このフォーマッターが処理すべきファイル拡張子

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


Disabling formatters

formatter が省略されると、すべてのフォーマッターが無効になります。別の設定で有効になった後にすべてのフォーマッターを無効にするには、formatterfalse に設定します:

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

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

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

Custom formatters

組み込みフォーマッターは、environmentextensions などのオプションで設定できます。カスタムフォーマッターを追加するには、commandextensions を指定します:

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 プレースホルダーは、フォーマット対象のファイルのパスに置き換えられます。