Salta ai contenuti

Formattatori

OpenCode utilizza formattatori specifici per linguaggio.

OpenCode formatta automaticamente i file dopo che sono stati scritti o modificati utilizzando formattatori specifici per linguaggio. Questo garantisce che il codice generato segua gli stili di codice del tuo progetto.


Integrati

OpenCode include diversi formattatori integrati per linguaggi e framework popolari. Di seguito e riportato un elenco dei formattatori, delle estensioni di file supportate e dei comandi o opzioni di configurazione necessari.

FormatterExtensionsRequirements
gofmt.gocomando gofmt disponibile
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacecomando mix disponibile
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, e altrodipendenza prettier in package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, e altrofile di configurazione biome.json(c)
zig.zig, .zoncomando zig disponibile
clang-format.c, .cpp, .h, .hpp, .ino, e altrofile di configurazione .clang-format
ktlint.kt, .ktscomando ktlint disponibile
ruff.py, .pyicomando ruff disponibile con configurazione
rustfmt.rscomando rustfmt disponibile
cargofmt.rscomando cargo fmt disponibile
uv.py, .pyicomando uv disponibile
rubocop.rb, .rake, .gemspec, .rucomando rubocop disponibile
standardrb.rb, .rake, .gemspec, .rucomando standardrb disponibile
htmlbeautifier.erb, .html.erbcomando htmlbeautifier disponibile
air.Rcomando air disponibile
dart.dartcomando dart disponibile
ocamlformat.ml, .mlicomando ocamlformat disponibile e file di configurazione .ocamlformat
terraform.tf, .tfvarscomando terraform disponibile
gleam.gleamcomando gleam disponibile
nixfmt.nixcomando nixfmt disponibile
shfmt.sh, .bashcomando shfmt disponibile
oxfmt (Experimental).js, .jsx, .ts, .tsxdipendenza oxfmt in package.json e un flag sperimentale

Quindi se il tuo progetto ha prettier nel tuo package.json, OpenCode lo utilizzera automaticamente.


Come funziona

Quando OpenCode scrive o modifica un file, esegue questi passaggi:

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

Questo processo avviene in background, garantendo che gli stili di codice vengano mantenuti senza alcun passaggio manuale.


Configurazione

Puoi personalizzare i formattatori tramite la sezione formatter nella tua configurazione OpenCode.

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

Ogni configurazione del formattatore supporta quanto segue:

PropertyTypeDescription
disabledbooleanImposta su true per disabilitare il formattatore
commandstring[]Il comando da eseguire per la formattazione
environmentobjectVariabili d’ambiente da impostare durante la formattazione
extensionsstring[]Estensioni di file che questo formattatore deve gestire

Vediamo alcuni esempi.


Disabilitare i formattatori

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

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

Per disabilitare un formattatore specifico, imposta disabled su true:

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

Formattatori personalizzati

Puoi sostituire i formattatori integrati o aggiungerne di nuovi specificando il comando, le variabili d’ambiente e le estensioni dei 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 segnaposto $FILE nel comando verra sostituito con il percorso del file che viene formattato.