Formatere
opencode bruker språkspesifikke formatere.
OpenCode formaterer automatisk filer etter at de er skrevet eller redigert ved hjelp av språkspesifikke formatere. Dette sikrer at koden som genereres følger kodestilene til prosjektet ditt.
Innebygd
OpenCode kommer med flere innebygde formatere for populære språk og rammeverk. Nedenfor er en liste over formatere, støttede filutvidelser og kommandoer eller konfigurasjonsalternativer den trenger.
| Formater | Utvidelser | Krav |
|---|---|---|
| gofmt | .go | gofmt kommando tilgjengelig |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | mix kommando tilgjengelig |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml og mer | prettier avhengighet i package.json |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml og mer | biome.json(c) konfigurasjonsfil |
| zig | .zig, .zon | zig kommando tilgjengelig |
| clang-format | .c, .cpp, .h, .hpp, .ino og mer | .clang-format konfigurasjonsfil |
| ktlint | .kt, .kts | ktlint kommando tilgjengelig |
| ruff | .py, .pyi | ruff kommando tilgjengelig med config |
| rustfmt | .rs | rustfmt kommando tilgjengelig |
| cargofmt | .rs | cargo fmt kommando tilgjengelig |
| uv | .py, .pyi | uv kommando tilgjengelig |
| rubocop | .rb, .rake, .gemspec, .ru | rubocop kommando tilgjengelig |
| standardrb | .rb, .rake, .gemspec, .ru | standardrb kommando tilgjengelig |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier kommando tilgjengelig |
| air | .R | air kommando tilgjengelig |
| dart | .dart | dart kommando tilgjengelig |
| ocamlformat | .ml, .mli | ocamlformat kommando tilgjengelig og .ocamlformat konfigurasjonsfil |
| terraform | .tf, .tfvars | terraform kommando tilgjengelig |
| gleam | .gleam | gleam kommando tilgjengelig |
| nixfmt | .nix | nixfmt kommando tilgjengelig |
| shfmt | .sh, .bash | shfmt kommando tilgjengelig |
| pint | .php | laravel/pint avhengighet i composer.json |
| oxfmt (Eksperimentell) | .js, .jsx, .ts, .tsx | oxfmt avhengighet i package.json og et eksperimentelt env variabel flagg |
| ormolu | .hs | ormolu kommando tilgjengelig |
Så hvis prosjektet ditt har prettier i package.json, vil OpenCode automatisk bruke det.
Slik fungerer det
Når OpenCode skriver eller redigerer en fil, gjør den:
- Kontrollerer filtypen mot alle aktiverte formatere.
- Kjører riktig formateringskommando på filen.
- Bruker formateringsendringene automatisk.
Denne prosessen skjer i bakgrunnen, og sikrer at kodestilene dine opprettholdes uten noen manuelle trinn.
Konfigurer
Du kan tilpasse formatere gjennom formatter-delen i OpenCode-konfigurasjonen.
{ "$schema": "https://opencode.ai/config.json", "formatter": {}}Hver formateringskonfigurasjon støtter følgende:
| Property | Type | Beskrivelse |
|---|---|---|
disabled | boolean | Sett dette til true for å deaktivere formatereren |
command | string[] | Kommandoen som skal kjøres for formatering |
environment | object | Miljøvariabler som skal angis når du kjører formateringsverktøyet |
extensions | string[] | Filutvidelser denne formatereren skal håndtere |
La oss se på noen eksempler.
Deaktivering av formatere
For å deaktivere alle formatere globalt, sett formatter til false:
{ "$schema": "https://opencode.ai/config.json", "formatter": false}For å deaktivere en spesifikk formatering, sett disabled til true:
{ "$schema": "https://opencode.ai/config.json", "formatter": { "prettier": { "disabled": true } }}Egendefinerte formatere
Du kan overstyre de innebygde formaterne eller legge til nye ved å spesifisere kommandoen, miljøvariablene og filtypene:
{ "$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"] } }}$FILE plassholderen i kommandoen vil bli erstattet med banen til filen som formateres.