Salta ai contenuti

Formattatori

OpenCode usa formattatori specifici per linguaggio.

OpenCode formatta automaticamente i file dopo che vengono scritti o modificati usando formattatori specifici per linguaggio. Questo assicura che il codice generato segua lo stile del tuo progetto.


Integrati

OpenCode include diversi formattatori integrati per linguaggi e framework popolari. Qui sotto trovi la lista dei formattatori, delle estensioni supportate e dei comandi o opzioni di config richiesti.

FormattatoreEstensioniRequisiti
air.Rcomando air disponibile
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and morefile di configurazione biome.json(c)
cargofmt.rscomando cargo fmt disponibile
clang-format.c, .cpp, .h, .hpp, .ino, and morefile di configurazione .clang-format
cljfmt.clj, .cljs, .cljc, .edncomando cljfmt disponibile
dart.dartcomando dart disponibile
dfmt.dcomando dfmt disponibile
gleam.gleamcomando gleam disponibile
gofmt.gocomando gofmt disponibile
htmlbeautifier.erb, .html.erbcomando htmlbeautifier disponibile
ktlint.kt, .ktscomando ktlint disponibile
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacecomando mix disponibile
nixfmt.nixcomando nixfmt disponibile
ocamlformat.ml, .mlicomando ocamlformat disponibile e file di configurazione .ocamlformat
ormolu.hscomando ormolu disponibile
oxfmt (Experimental).js, .jsx, .ts, .tsxdipendenza oxfmt in package.json e una flag variabile d’ambiente sperimentale
pint.phpdipendenza laravel/pint in composer.json
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and moredipendenza prettier in package.json
rubocop.rb, .rake, .gemspec, .rucomando rubocop disponibile
ruff.py, .pyicomando ruff disponibile con config
rustfmt.rscomando rustfmt disponibile
shfmt.sh, .bashcomando shfmt disponibile
standardrb.rb, .rake, .gemspec, .rucomando standardrb disponibile
terraform.tf, .tfvarscomando terraform disponibile
uv.py, .pyicomando uv disponibile
zig.zig, .zoncomando zig disponibile

Quindi, se il progetto ha prettier in package.json, OpenCode lo usera automaticamente.


Come funziona

Quando OpenCode scrive o modifica un file:

  1. Controlla l’estensione del file rispetto a tutti i formattatori abilitati.
  2. Esegue il comando del formattatore appropriato sul file.
  3. Applica automaticamente le modifiche di formattazione.

Questo processo avviene in background, mantenendo lo stile del codice senza passaggi manuali.


Configurazione

Puoi personalizzare i formattatori nella sezione formatter della config di OpenCode.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}

Ogni configurazione di formattatore supporta:

ProprietaTipoDescrizione
disabledbooleanImpostalo a true per disabilitare il formattatore
commandstring[]Il comando da eseguire per la formattazione
environmentobjectVariabili d’ambiente da impostare quando si esegue
extensionsstring[]Estensioni file gestite da questo formattatore

Vediamo alcuni esempi.


Disabilitare i formattatori

Per disabilitare tutti i formattatori globalmente, imposta formatter a false:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}

Per disabilitare un formattatore specifico, imposta disabled a true:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}

Formattatori personalizzati

Puoi sovrascrivere i formattatori integrati o aggiungerne di nuovi specificando comando, variabili d’ambiente ed estensioni file:

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"]
}
}
}

Il placeholder $FILE nel comando viene sostituito con il percorso del file in fase di formattazione.