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.


Incorporado

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
gobierno.irComando gofmt disponible
mezclar.ex, .exs, .eex, .heex, .leex, .neex, .sfaceComando mix disponible
más bonita.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y másdependencia prettier en package.json
bioma.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y másbiome.json(c) archivo de configuración
zigzag.zig, .zonComando zig disponible
formato clang.c, .cpp, .h, .hpp, .ino y más.clang-format archivo de configuración
klint.kt, .ktsComando ktlint disponible
gorguera.py, .pyiComando ruff disponible con configuración
óxido.rsComando rustfmt disponible
cargafmt.rsComando cargo fmt disponible
ultravioleta.py, .pyiComando uv disponible
rubocop.rb, .rake, .gemspec, .ruComando rubocop disponible
estándarrb.rb, .rake, .gemspec, .ruComando standardrb disponible
embellecedor html.erb, .html.erbComando htmlbeautifier disponible
aire.RComando air disponible
dardo.dardoComando dart disponible
formato ocaml.ml, .mliComando ocamlformat disponible y archivo de configuración .ocamlformat
terraformar.tf, .tfvarsComando terraform disponible
brillo.brilloComando gleam disponible
nixfmt.nixComando nixfmt disponible
shfmt.sh, .bashComando shfmt disponible
pinta.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.


Configurar

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.