Português
Documentação
Formatadores

Formatadores

OpenCode usa formatadores especificos de linguagem.

OpenCode formata automaticamente arquivos apos escreve-los ou edita-los usando formatadores especificos de linguagem. Isso garante que o codigo gerado siga os estilos de codigo do seu projeto.

Formatadores integrados

OpenCode vem com varios formatadores integrados para linguagens e frameworks populares. Abaixo esta uma lista dos formatadores, extensoes de arquivo suportadas e comandos ou opcoes de configuracao necessarios.

FormatadorExtensoesRequisitos
gofmt.goComando gofmt disponivel
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceComando mix disponivel
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml e mais (opens in a new tab)Dependencia prettier em package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml e mais (opens in a new tab)Arquivo de configuracao biome.json(c)
zig.zig, .zonComando zig disponivel
clang-format.c, .cpp, .h, .hpp, .ino e mais (opens in a new tab)Arquivo de configuracao .clang-format
ktlint.kt, .ktsComando ktlint disponivel
ruff.py, .pyiComando ruff disponivel com configuracao
rustfmt.rsComando rustfmt disponivel
cargofmt.rsComando cargo fmt disponivel
uv.py, .pyiComando uv disponivel
rubocop.rb, .rake, .gemspec, .ruComando rubocop disponivel
standardrb.rb, .rake, .gemspec, .ruComando standardrb disponivel
htmlbeautifier.erb, .html.erbComando htmlbeautifier disponivel
air.RComando air disponivel
dart.dartComando dart disponivel
ocamlformat.ml, .mliComando ocamlformat disponivel e arquivo de configuracao .ocamlformat
terraform.tf, .tfvarsComando terraform disponivel
gleam.gleamComando gleam disponivel
nixfmt.nixComando nixfmt disponivel
shfmt.sh, .bashComando shfmt disponivel
pint.phpDependencia laravel/pint em composer.json
oxfmt (Experimental).js, .jsx, .ts, .tsxDependencia oxfmt em package.json e uma flag de variavel de ambiente experimental
ormolu.hsComando ormolu disponivel

Entao, se seu projeto tem prettier no seu package.json, OpenCode o usara automaticamente.

Como funciona

Quando OpenCode escreve ou edita um arquivo:

  1. Verifica a extensao do arquivo contra todos os formatadores habilitados.
  2. Executa o comando do formatador apropriado no arquivo.
  3. Aplica as mudancas de formatacao automaticamente.

Este processo acontece em segundo plano, garantindo que seus estilos de codigo sejam mantidos sem nenhum passo manual.

Configurar

Voce pode personalizar formatadores atraves da secao formatter na sua configuracao do OpenCode.

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

Cada configuracao de formatador suporta o seguinte:

PropriedadeTipoDescricao
disabledbooleanDefina como true para desabilitar o formatador
commandstring[]O comando a executar para formatacao
environmentobjectVariaveis de ambiente a definir ao executar o formatador
extensionsstring[]Extensoes de arquivo que este formatador deve manipular

Vamos ver alguns exemplos.

Desabilitando formatadores

Para desabilitar todos os formatadores globalmente, defina formatter como false:

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

Para desabilitar um formatador especifico, defina disabled como true:

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

Formatadores personalizados

Voce pode substituir os formatadores integrados ou adicionar novos especificando o comando, variaveis de ambiente e extensoes de arquivo:

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 sera substituido pelo caminho do arquivo sendo formatado.