Español
Documentación
Formateadores

Formateadores

OpenCode usa formateadores especificos de lenguaje.

OpenCode formatea automaticamente los archivos despues de escribirlos o editarlos usando formateadores especificos de lenguaje. Esto asegura que el codigo generado siga los estilos de codigo de tu proyecto.

Formateadores integrados

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

FormateadorExtensionesRequisitos
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 mas (opens in a new tab)Dependencia prettier en package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y mas (opens in a new tab)Archivo de configuracion biome.json(c)
zig.zig, .zonComando zig disponible
clang-format.c, .cpp, .h, .hpp, .ino y mas (opens in a new tab)Archivo 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
pint.phpDependencia laravel/pint en composer.json
oxfmt (Experimental).js, .jsx, .ts, .tsxDependencia oxfmt en package.json y una variable de entorno experimental
ormolu.hsComando ormolu disponible

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

Como funciona

Cuando OpenCode escribe o edita un archivo:

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

Este proceso ocurre en segundo plano, asegurando que tus estilos de codigo se mantengan sin ningun paso manual.

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 soporta lo siguiente:

PropiedadTipoDescripcion
disabledbooleanEstablecer en true para deshabilitar el formateador
commandstring[]El comando a ejecutar para formatear
environmentobjectVariables de entorno a establecer al ejecutar el formateador
extensionsstring[]Extensiones de archivo que este formateador debe manejar

Veamos algunos ejemplos.

Deshabilitar formateadores

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

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

Para deshabilitar un formateador especifico, establece disabled en true:

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

Formateadores personalizados

Puedes anular los formateadores integrados o agregar nuevos especificando el comando, variables de entorno y 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 $FILE en el comando sera reemplazado por la ruta del archivo que se esta formateando.