Saltearse al contenido

Formateadores

OpenCode utiliza formateadores específicos del idioma.

OpenCode formatea automáticamente los archivos después de escribirlos o editarlos utilizando formateadores específicos del idioma. Esto garantiza que el código generado siga los estilos de código de su proyecto.


Integrados

OpenCode viene con varios formateadores integrados para lenguajes y marcos populares. A continuación se muestra una lista de los formateadores, las extensiones de archivo compatibles y los comandos u opciones de configuración que necesita.

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 másdependencia prettier en package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y másbiome.json(c) archivo de configuración
zig.zig, .zonComando zig disponible
clang-format.c, .cpp, .h, .hpp, .ino y más.clang-format archivo de configuración
ktlint.kt, .ktsComando ktlint disponible
ruff.py, .pyiComando ruff disponible con configuración
rustfmt.rsComando rustfmt disponible
cargo fmt.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 configuración .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 de oxfmt en package.json y un indicador de variable de entorno experimental
ormolu.hsComando ormolu disponible

Entonces, si su proyecto tiene prettier en su package.json, OpenCode lo usará automáticamente.


Cómo funciona

Cuando OpenCode escribe o edita un archivo:

  1. Comprueba la extensión del archivo con todos los formateadores habilitados.
  2. Ejecuta el comando de formateo apropiado en el archivo.
  3. Aplica los cambios de formato automáticamente.

Este proceso ocurre en segundo plano, lo que garantiza que los estilos de su código se mantengan sin ningún paso manual.


Configuración

Puede personalizar los formateadores a través de la sección formatter en su configuración OpenCode.

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

Cada configuración del formateador admite lo siguiente:

PropiedadTipoDescripción
disabledbooleanoEstablezca esto en true para deshabilitar el formateador
commandcadena[]El comando a ejecutar para formatear
environmentobjetoVariables de entorno para configurar al ejecutar el formateador
extensionscadena[]Extensiones de archivo que este formateador debería manejar

Veamos algunos ejemplos.


Deshabilitar formateadores

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

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

Para deshabilitar un formateador específico, establezca disabled en true:

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

Formateadores personalizados

Puede anular los formateadores integrados o agregar otros 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 posición $FILE en el comando se reemplazará con la ruta al archivo que se está formateando.