Saltearse al contenido

Formateadores

OpenCode utiliza formateadores especificos por lenguaje.

OpenCode formatea automaticamente los archivos despues de que se escriben o editan utilizando formateadores especificos del lenguaje. Esto garantiza que el codigo generado siga los estilos de codigo de tu proyecto.


Integrados

OpenCode incluye varios formateadores integrados para lenguajes y frameworks populares. A continuacion se muestra una lista de los formateadores, extensiones de archivo compatibles y comandos u opciones de configuracion necesarios.

FormatterExtensionsRequirements
gofmt.gocomando gofmt disponible
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacecomando mix disponible
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, y masdependencia prettier en package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, y masarchivo de configuracion biome.json(c)
zig.zig, .zoncomando zig disponible
clang-format.c, .cpp, .h, .hpp, .ino, y masarchivo de configuracion .clang-format
ktlint.kt, .ktscomando ktlint disponible
ruff.py, .pyicomando ruff disponible con configuracion
rustfmt.rscomando rustfmt disponible
cargofmt.rscomando cargo fmt disponible
uv.py, .pyicomando uv disponible
rubocop.rb, .rake, .gemspec, .rucomando rubocop disponible
standardrb.rb, .rake, .gemspec, .rucomando standardrb disponible
htmlbeautifier.erb, .html.erbcomando htmlbeautifier disponible
air.Rcomando air disponible
dart.dartcomando dart disponible
ocamlformat.ml, .mlicomando ocamlformat disponible y archivo de configuracion .ocamlformat
terraform.tf, .tfvarscomando terraform disponible
gleam.gleamcomando gleam disponible
nixfmt.nixcomando nixfmt disponible
shfmt.sh, .bashcomando shfmt disponible
oxfmt (Experimental).js, .jsx, .ts, .tsxdependencia oxfmt en package.json y una bandera experimental

Asi que si tu proyecto tiene prettier en tu package.json, OpenCode lo usara automaticamente.


Como funciona

Cuando OpenCode escribe o edita un archivo, sigue estos pasos:

  1. Verifica la extension del archivo contra todos los formateadores habilitados.
  2. Ejecuta el comando de formateo apropiado en el archivo.
  3. Aplica los cambios de formateo automaticamente.

Este proceso ocurre en segundo plano, garantizando que se mantengan tus estilos de codigo sin pasos manuales.


Configurar

Puedes personalizar los formateadores a traves de la seccion formatter en tu configuracion de OpenCode.

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

Cada configuracion de formateador admite lo siguiente:

PropertyTypeDescription
disabledbooleanEstablecer en true para desactivar el formateador
commandstring[]El comando a ejecutar para el formateo
environmentobjectVariables de entorno al ejecutar el formateador
extensionsstring[]Extensiones de archivo que este formateador debe manejar

Veamos algunos ejemplos.


Desactivar formateadores

Para desactivar todos los formateadores globalmente, establece formatter en false:

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

Para desactivar un formateador especifico, establece disabled en true:

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

Formateadores personalizados

Puedes reemplazar los formateadores integrados o agregar nuevos especificando el comando, las variables de entorno y las extensiones de archivo:

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

El marcador de posicion $FILE en el comando se reemplazara con la ruta del archivo que se esta formateando.