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.
| Formatador | Extensões | Requisitos |
|---|---|---|
| air | .R | Comando 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 | .rs | Comando 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, .edn | Comando cljfmt disponível |
| dart | .dart | Comando dart disponível |
| dfmt | .d | Comando dfmt disponível |
| gleam | .gleam | Comando gleam disponível |
| gofmt | .go | Comando gofmt disponível |
| htmlbeautifier | .erb, .html.erb | Comando htmlbeautifier disponível |
| ktlint | .kt, .kts | Comando ktlint disponível |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Comando mix disponível |
| nixfmt | .nix | Comando nixfmt disponível |
| ocamlformat | .ml, .mli | Comando ocamlformat disponível e arquivo de config .ocamlformat |
| ormolu | .hs | Comando ormolu disponível |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | Dependência oxfmt em package.json e uma flag de variável de ambiente experimental |
| pint | .php | Dependê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, .ru | Comando rubocop disponível |
| ruff | .py, .pyi | Comando ruff disponível com config |
| rustfmt | .rs | Comando rustfmt disponível |
| shfmt | .sh, .bash | Comando shfmt disponível |
| standardrb | .rb, .rake, .gemspec, .ru | Comando standardrb disponível |
| terraform | .tf, .tfvars | Comando terraform disponível |
| uv | .py, .pyi | Comando uv disponível |
| zig | .zig, .zon | Comando 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:
- Verifica a extensão do arquivo em relação a todos os formatadores ativados.
- Executa o comando do formatador apropriado no arquivo.
- 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.
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}Use um objeto para manter os integrados ativados enquanto configura sobrescritas ou formatadores personalizados.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Cada configuração de formatador suporta o seguinte:
| Propriedade | Tipo | Descrição |
|---|---|---|
disabled | boolean | Defina como true para desativar o formatador |
command | string[] | O comando a ser executado para formatação. Obrigatório para formatadores personalizados; opcional para os integrados. |
environment | object | Variáveis de ambiente a definir ao executar o formatador |
extensions | string[] | 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:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}Para desativar um formatador específico, defina disabled como true:
{
"$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:
{
"$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.