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.
| Formatador | Extensoes | Requisitos |
|---|---|---|
| gofmt | .go | Comando gofmt disponivel |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Comando 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, .zon | Comando zig disponivel |
| clang-format | .c, .cpp, .h, .hpp, .ino e mais (opens in a new tab) | Arquivo de configuracao .clang-format |
| ktlint | .kt, .kts | Comando ktlint disponivel |
| ruff | .py, .pyi | Comando ruff disponivel com configuracao |
| rustfmt | .rs | Comando rustfmt disponivel |
| cargofmt | .rs | Comando cargo fmt disponivel |
| uv | .py, .pyi | Comando uv disponivel |
| rubocop | .rb, .rake, .gemspec, .ru | Comando rubocop disponivel |
| standardrb | .rb, .rake, .gemspec, .ru | Comando standardrb disponivel |
| htmlbeautifier | .erb, .html.erb | Comando htmlbeautifier disponivel |
| air | .R | Comando air disponivel |
| dart | .dart | Comando dart disponivel |
| ocamlformat | .ml, .mli | Comando ocamlformat disponivel e arquivo de configuracao .ocamlformat |
| terraform | .tf, .tfvars | Comando terraform disponivel |
| gleam | .gleam | Comando gleam disponivel |
| nixfmt | .nix | Comando nixfmt disponivel |
| shfmt | .sh, .bash | Comando shfmt disponivel |
| pint | .php | Dependencia laravel/pint em composer.json |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | Dependencia oxfmt em package.json e uma flag de variavel de ambiente experimental |
| ormolu | .hs | Comando 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:
- Verifica a extensao do arquivo contra todos os formatadores habilitados.
- Executa o comando do formatador apropriado no arquivo.
- 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.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Cada configuracao de formatador suporta o seguinte:
| Propriedade | Tipo | Descricao |
|---|---|---|
disabled | boolean | Defina como true para desabilitar o formatador |
command | string[] | O comando a executar para formatacao |
environment | object | Variaveis de ambiente a definir ao executar o formatador |
extensions | string[] | Extensoes de arquivo que este formatador deve manipular |
Vamos ver alguns exemplos.
Desabilitando formatadores
Para desabilitar todos os formatadores globalmente, defina formatter como false:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}Para desabilitar um formatador especifico, defina disabled como true:
{
"$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:
{
"$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.