Pular para o conteúdo

Formatadores

opencode usa formatadores específicos de linguagem.

opencode formata automaticamente arquivos após serem escritos ou editados usando formatadores específicos de linguagem. Isso garante que o código gerado siga os estilos de código do seu projeto.


Integrado

opencode vem com vários formatadores integrados para linguagens e frameworks populares. Abaixo está uma lista dos formatadores, extensões de arquivo suportadas e comandos ou opções de configuração necessárias.

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

Portanto, se seu projeto tiver prettier em seu package.json, o opencode o usará automaticamente.


Como funciona

Quando o opencode escreve ou edita um arquivo, ele:

  1. Verifica a extensão do arquivo em relação a todos os formatadores habilitados.
  2. Executa o comando do formatador apropriado no arquivo.
  3. Aplica as alterações de formatação automaticamente.

Esse processo acontece em segundo plano, garantindo que seus estilos de código sejam mantidos sem etapas manuais.


Configurar

Você pode personalizar os formatadores através da seção formatter em sua configuração do opencode.

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

Cada configuração de formatador suporta o seguinte:

PropriedadeTipoDescrição
disabledbooleanDefina como true para desabilitar o formatador
commandstring[]O comando a ser executado para formatação
environmentobjectVariáveis de ambiente a serem definidas ao executar o formatador
extensionsstring[]Extensões de arquivo que este formatador deve tratar

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 específico, defina disabled como true:

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

Formatadores personalizados

Você pode substituir os formatadores integrados ou adicionar novos especificando o comando, variáveis de ambiente e extensões 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 será substituído pelo caminho do arquivo que está sendo formatado.