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.
| Formateador | Extensiones | Requisitos |
|---|---|---|
| gobierno | .ir | Comando gofmt disponible |
| mezclar | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Comando mix disponible |
| más bonita | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y más | dependencia prettier en package.json |
| bioma | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml y más | biome.json(c) archivo de configuración |
| zigzag | .zig, .zon | Comando zig disponible |
| formato clang | .c, .cpp, .h, .hpp, .ino y más | .clang-format archivo de configuración |
| klint | .kt, .kts | Comando ktlint disponible |
| gorguera | .py, .pyi | Comando ruff disponible con configuración |
| óxido | .rs | Comando rustfmt disponible |
| cargafmt | .rs | Comando cargo fmt disponible |
| ultravioleta | .py, .pyi | Comando uv disponible |
| rubocop | .rb, .rake, .gemspec, .ru | Comando rubocop disponible |
| estándarrb | .rb, .rake, .gemspec, .ru | Comando standardrb disponible |
| embellecedor html | .erb, .html.erb | Comando htmlbeautifier disponible |
| aire | .R | Comando air disponible |
| dardo | .dardo | Comando dart disponible |
| formato ocaml | .ml, .mli | Comando ocamlformat disponible y archivo de configuración .ocamlformat |
| terraformar | .tf, .tfvars | Comando terraform disponible |
| brillo | .brillo | Comando gleam disponible |
| nixfmt | .nix | Comando nixfmt disponible |
| shfmt | .sh, .bash | Comando shfmt disponible |
| pinta | .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 |
| 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,:
- Comprueba la extensión del archivo con todos los formateadores habilitados.
- Ejecuta el comando de formateo apropiado en el archivo.
- 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.
{ "$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:
{ "$schema": "https://opencode.ai/config.json", "formatter": false}Para deshabilitar un formateador específico, establezca disabled en true:
{ "$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:
{ "$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.