Português
Documentação
Formatadores

Formatadores

O OpenCode usa formatadores específicos de cada linguagem.

O OpenCode pode formatar arquivos depois que eles são escritos ou editados usando formatadores específicos de cada linguagem. Os formatadores ficam desativados por padrão; ative-os na sua config antes que o OpenCode os execute.


Integrados

O OpenCode vem com vários formatadores integrados para linguagens e frameworks populares. Abaixo está uma lista dos formatadores, das extensões de arquivo suportadas e dos comandos ou opções de config necessários.

FormatadorExtensõesRequisitos
air.RComando air disponível
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml e mais (opens in a new tab)Arquivo de config biome.json(c)
cargofmt.rsComando cargo fmt disponível
clang-format.c, .cpp, .h, .hpp, .ino e mais (opens in a new tab)Arquivo de config .clang-format
cljfmt.clj, .cljs, .cljc, .ednComando cljfmt disponível
dart.dartComando dart disponível
dfmt.dComando dfmt disponível
gleam.gleamComando gleam disponível
gofmt.goComando gofmt disponível
htmlbeautifier.erb, .html.erbComando htmlbeautifier disponível
ktlint.kt, .ktsComando ktlint disponível
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceComando mix disponível
nixfmt.nixComando nixfmt disponível
ocamlformat.ml, .mliComando ocamlformat disponível e arquivo de config .ocamlformat
ormolu.hsComando ormolu disponível
oxfmt (Experimental).js, .jsx, .ts, .tsxDependência oxfmt em package.json e uma flag de variável de ambiente experimental
pint.phpDependência laravel/pint em composer.json
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml e mais (opens in a new tab)Dependência prettier em package.json
rubocop.rb, .rake, .gemspec, .ruComando rubocop disponível
ruff.py, .pyiComando ruff disponível com config
rustfmt.rsComando rustfmt disponível
shfmt.sh, .bashComando shfmt disponível
standardrb.rb, .rake, .gemspec, .ruComando standardrb disponível
terraform.tf, .tfvarsComando terraform disponível
uv.py, .pyiComando uv disponível
zig.zig, .zonComando zig disponível

Quando os formatadores estão ativados, o OpenCode usa o prettier para os arquivos correspondentes se o seu projeto tiver o prettier no package.json.


Como funciona

Quando o OpenCode escreve ou edita um arquivo e os formatadores estão ativados, ele:

  1. Verifica a extensão do arquivo em relação a todos os formatadores ativados.
  2. Executa o comando do formatador apropriado no arquivo.
  3. Aplica as mudanças de formatação.

Esse processo acontece em segundo plano para os formatadores ativados.


Configurar

Você pode ativar e personalizar os formatadores através da seção formatter na sua config do OpenCode.

Para ativar todos os formatadores integrados, defina formatter como true.

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

Use um objeto para manter os integrados ativados enquanto configura sobrescritas ou formatadores personalizados.

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

Cada configuração de formatador suporta o seguinte:

PropriedadeTipoDescrição
disabledbooleanDefina como true para desativar o formatador
commandstring[]O comando a ser executado para formatação. Obrigatório para formatadores personalizados; opcional para os integrados.
environmentobjectVariáveis de ambiente a definir ao executar o formatador
extensionsstring[]Extensões de arquivo que este formatador deve tratar

Vamos ver alguns exemplos.


Desativando formatadores

Se formatter for omitido, todos os formatadores ficam desativados. Para desativar todos os formatadores depois que outra config os ativou, defina formatter como false:

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

Para desativar um formatador específico, defina disabled como true:

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

Formatadores personalizados

Você pode configurar os formatadores integrados com opções como environment ou extensions. Para adicionar um formatador personalizado, especifique um command e extensions:

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"]
    }
  }
}

O placeholder $FILE no comando será substituído pelo caminho do arquivo que está sendo formatado.