Formateadores
OpenCode usa formateadores específicos de cada lenguaje.
OpenCode puede formatear archivos después de escribirlos o editarlos usando formateadores específicos de cada lenguaje. Los formateadores están deshabilitados por defecto; habilítalos en tu configuración antes de que OpenCode los ejecute.
Integrados
OpenCode incluye varios formateadores integrados para lenguajes y frameworks populares. A continuación se muestra una lista de los formateadores, las extensiones de archivo admitidas y los comandos u opciones de configuración que necesita.
| Formateador | Extensiones | Requisitos |
|---|---|---|
| air | .R | Comando air disponible |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y más (opens in a new tab) | Archivo de configuración biome.json(c) |
| cargofmt | .rs | Comando cargo fmt disponible |
| clang-format | .c, .cpp, .h, .hpp, .ino y más (opens in a new tab) | Archivo de configuración .clang-format |
| cljfmt | .clj, .cljs, .cljc, .edn | Comando cljfmt disponible |
| dart | .dart | Comando dart disponible |
| dfmt | .d | Comando dfmt disponible |
| gleam | .gleam | Comando gleam disponible |
| gofmt | .go | Comando gofmt disponible |
| htmlbeautifier | .erb, .html.erb | Comando htmlbeautifier disponible |
| ktlint | .kt, .kts | Comando ktlint disponible |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Comando mix disponible |
| nixfmt | .nix | Comando nixfmt disponible |
| ocamlformat | .ml, .mli | Comando ocamlformat disponible y archivo de configuración .ocamlformat |
| ormolu | .hs | Comando ormolu disponible |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | Dependencia oxfmt en package.json y una opción de variable de entorno experimental |
| pint | .php | Dependencia laravel/pint en composer.json |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y más (opens in a new tab) | Dependencia prettier en package.json |
| rubocop | .rb, .rake, .gemspec, .ru | Comando rubocop disponible |
| ruff | .py, .pyi | Comando ruff disponible con configuración |
| rustfmt | .rs | Comando rustfmt disponible |
| shfmt | .sh, .bash | Comando shfmt disponible |
| standardrb | .rb, .rake, .gemspec, .ru | Comando standardrb disponible |
| terraform | .tf, .tfvars | Comando terraform disponible |
| uv | .py, .pyi | Comando uv disponible |
| zig | .zig, .zon | Comando zig disponible |
Cuando los formateadores están habilitados, OpenCode usará prettier para los archivos coincidentes si tu proyecto tiene prettier en el package.json.
Cómo funciona
Cuando OpenCode escribe o edita un archivo y los formateadores están habilitados, este:
- Comprueba la extensión del archivo contra todos los formateadores habilitados.
- Ejecuta el comando del formateador apropiado sobre el archivo.
- Aplica los cambios de formateo.
Este proceso ocurre en segundo plano para los formateadores habilitados.
Configurar
Puedes habilitar y personalizar los formateadores a través de la sección formatter en tu configuración de OpenCode.
Para habilitar todos los formateadores integrados, establece formatter en true.
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o formateadores personalizados.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Cada configuración de formateador admite lo siguiente:
| Propiedad | Tipo | Descripción |
|---|---|---|
disabled | boolean | Establécela en true para deshabilitar el formateador |
command | string[] | El comando a ejecutar para formatear. Obligatorio para formateadores personalizados; opcional para los integrados. |
environment | object | Variables de entorno a establecer al ejecutar el formateador |
extensions | string[] | Extensiones de archivo que este formateador debe gestionar |
Veamos algunos ejemplos.
Deshabilitar formateadores
Si se omite formatter, todos los formateadores quedan deshabilitados. Para deshabilitar todos los formateadores después de que otra configuración los haya habilitado, establece formatter en false:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}Para deshabilitar un formateador específico, establece disabled en true:
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}Formateadores personalizados
Puedes configurar formateadores integrados con opciones como environment o extensions. Para agregar un formateador personalizado, especifica un command y extensions:
{
"$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 se reemplazará por la ruta del archivo que se está formateando.