Zum Inhalt springen

Formatierer

OpenCode verwendet sprachspezifische Formatierer.

OpenCode formatiert Dateien automatisch, nachdem sie mit sprachspezifischen Formatierern geschrieben oder bearbeitet wurden. Dadurch wird sichergestellt, dass der generierte Code dem Codestil Ihres Projekts entspricht.


Eingebaut

OpenCode verfügt über mehrere integrierte Formatierer für gängige Sprachen und Frameworks. Nachfolgend finden Sie eine Liste der Formatierer, unterstützten Dateierweiterungen und benötigten Befehle oder Konfigurationsoptionen.

FormatiererErweiterungenAnforderungen
gofmt.gogofmt-Befehl verfügbar
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacemix-Befehl verfügbar
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und moreprettier-Abhängigkeit in package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und morebiome.json(c) Konfigurationsdatei
zig.zig, .zonzig-Befehl verfügbar
clang-format.c, .cpp, .h, .hpp, .ino und more.clang-format Konfigurationsdatei
ktlint.kt, .ktsktlint-Befehl verfügbar
ruff.py, .pyiruff-Befehl verfügbar mit config
rustfmt.rsrustfmt-Befehl verfügbar
cargofmt.rscargo fmt-Befehl verfügbar
uv.py, .pyiuv-Befehl verfügbar
rubocop.rb, .rake, .gemspec, .rurubocop-Befehl verfügbar
standardrb.rb, .rake, .gemspec, .rustandardrb-Befehl verfügbar
htmlbeautifier.erb, .html.erbhtmlbeautifier-Befehl verfügbar
air.Rair-Befehl verfügbar
dart.dartdart-Befehl verfügbar
ocamlformat.ml, .mliocamlformat Befehl verfügbar und .ocamlformat Konfigurationsdatei
terraform.tf, .tfvarsterraform-Befehl verfügbar
gleam.gleamgleam-Befehl verfügbar
nixfmt.nixnixfmt-Befehl verfügbar
shfmt.sh, .bashshfmt-Befehl verfügbar
pint.phplaravel/pint-Abhängigkeit in composer.json
oxfmt (Experimental).js, .jsx, .ts, .tsxoxfmt-Abhängigkeit in package.json und einer experimental env variable flag
Ormolu.hsormolu-Befehl verfügbar

Wenn Ihr Projekt auch prettier in Ihrem package.json hat, wird OpenCode automatisch verwendet.


Wie es funktioniert

Wenn OpenCode eine Datei schreibt oder bearbeitet, geschieht Folgendes:

  1. Überprüft die Dateierweiterung anhand aller aktivierten Formatierer.
  2. Führt den entsprechenden Formatierungsbefehl für die Datei aus.
  3. Wendet die Formatierungsänderungen automatisch an.

Dieser Prozess findet im Hintergrund statt und stellt sicher, dass Ihr Codestile ohne manuelle Schritte beibehalten werden.


Konfigurieren

Sie können Formatierer über den Abschnitt formatter in Ihrer OpenCode-Konfiguration anpassen.

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

Jede Formatierungskonfiguration unterstützt Folgendes:

EigenschaftTypBeschreibung
disabledboolescher WertSetzen Sie dies auf true, um den Formatierer zu deaktivieren
commandstring[]Der zum Formatieren auszuführende Befehl
environmentObjektUmgebungsvariablen, die beim Ausführen des Formatierers festgelegt werden sollen
extensionsstring[]Dateierweiterungen, die dieser Formatierer verarbeiten soll

Schauen wir uns einige Beispiele an.


Formatierer deaktivieren

Um alle Formatierer global zu deaktivieren, setzen Sie formatter auf false:

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

Um einen bestimmten Formatierer zu deaktivieren, setzen Sie disabled auf true:

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

Benutzerdefinierter Formatierer

Sie können den integrierten Formatierer überschreiben oder neu hinzufügen, indem Sie den Befehl, Umgebungsvariablen und Dateierweiterungen angeben:

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

Der Platzhalter $FILE im Befehl wird durch den Pfad zur zu formatierenden Datei ersetzt.