File size: 9,904 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | ---
title: Formateadores
description: 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.
| Formateador | Extensiones | Requisitos |
| -------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| gofmt | .go | Comando `gofmt` disponible |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Comando `mix` disponible |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y [m谩s](https://prettier.io/docs/en/index.html) | dependencia `prettier` en `package.json` |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y [m谩s](https://biomejs.dev/) | `biome.json(c)` archivo de configuraci贸n |
| zig | .zig, .zon | Comando `zig` disponible |
| clang-format | .c, .cpp, .h, .hpp, .ino y [m谩s](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` archivo de configuraci贸n |
| ktlint | .kt, .kts | Comando `ktlint` disponible |
| ruff | .py, .pyi | Comando `ruff` disponible con configuraci贸n |
| rustfmt | .rs | Comando `rustfmt` disponible |
| cargo fmt | .rs | Comando `cargo fmt` disponible |
| uv | .py, .pyi | Comando `uv` disponible |
| rubocop | .rb, .rake, .gemspec, .ru | Comando `rubocop` disponible |
| standardrb | .rb, .rake, .gemspec, .ru | Comando `standardrb` disponible |
| htmlbeautifier | .erb, .html.erb | Comando `htmlbeautifier` disponible |
| air | .R | Comando `air` disponible |
| dart | .dart | Comando `dart` disponible |
| dfmt | .d | Comando `dfmt` disponible |
| ocamlformat | .ml, .mli | Comando `ocamlformat` disponible y archivo de configuraci贸n `.ocamlformat` |
| terraform | .tf, .tfvars | Comando `terraform` disponible |
| gleam | .gleam | Comando `gleam` disponible |
| nixfmt | .nix | Comando `nixfmt` disponible |
| shfmt | .sh, .bash | Comando `shfmt` disponible |
| pint | .php | dependencia `laravel/pint` en `composer.json` |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | Dependencia de `oxfmt` en `package.json` y un [indicador de variable de entorno experimental](/docs/cli/#experimental) |
| ormolu | .hs | Comando `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.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
Cada configuraci贸n del formateador admite lo siguiente:
| Propiedad | Tipo | Descripci贸n |
| ------------- | -------- | --------------------------------------------------------------- |
| `disabled` | booleano | Establezca esto en `true` para deshabilitar el formateador |
| `command` | cadena[] | El comando a ejecutar para formatear |
| `environment` | objeto | Variables de entorno para configurar al ejecutar el formateador |
| `extensions` | cadena[] | Extensiones de archivo que este formateador deber铆a manejar |
Veamos algunos ejemplos.
---
### Deshabilitar formateadores
Para deshabilitar **todos** los formateadores globalmente, configure `formatter` en `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
Para deshabilitar un formateador **espec铆fico**, establezca `disabled` en `true`:
```json title="opencode.json" {5}
{
"$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:
```json title="opencode.json" {4-14}
{
"$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.
|