Zum Inhalt springen

Formatierer

OpenCode verwendet sprachspezifische Formatierer.

OpenCode formatiert Dateien automatisch nach dem Schreiben oder Bearbeiten mit sprachspezifischen Formatierern. Dies stellt sicher, dass der generierte Code die Code-Stile Ihres Projekts befolgt.


Integriert

OpenCode wird mit mehreren integrierten Formatierern fur beliebte Sprachen und Frameworks geliefert. Unten finden Sie eine Liste der Formatierer, unterstutzten Dateierweiterungen und benotigten Befehle oder Konfigurationsoptionen.

FormatterExtensionsRequirements
gofmt.goverfugbarer gofmt Befehl
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceverfugbarer mix Befehl
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und mehrprettier-Abhangigkeit in package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und mehrbiome.json(c)-Konfigurationsdatei
zig.zig, .zonverfugbarer zig Befehl
clang-format.c, .cpp, .h, .hpp, .ino, und mehr.clang-format-Konfigurationsdatei
ktlint.kt, .ktsverfugbarer ktlint Befehl
ruff.py, .pyiverfugbarer ruff Befehl mit Konfiguration
rustfmt.rsverfugbarer rustfmt Befehl
cargofmt.rsverfugbarer cargo fmt Befehl
uv.py, .pyiverfugbarer uv Befehl
rubocop.rb, .rake, .gemspec, .ruverfugbarer rubocop Befehl
standardrb.rb, .rake, .gemspec, .ruverfugbarer standardrb Befehl
htmlbeautifier.erb, .html.erbverfugbarer htmlbeautifier Befehl
air.Rverfugbarer air Befehl
dart.dartverfugbarer dart Befehl
ocamlformat.ml, .mliverfugbarer ocamlformat Befehl und .ocamlformat-Konfigurationsdatei
terraform.tf, .tfvarsverfugbarer terraform Befehl
gleam.gleamverfugbarer gleam Befehl
nixfmt.nixverfugbarer nixfmt Befehl
shfmt.sh, .bashverfugbarer shfmt Befehl
oxfmt (Experimental).js, .jsx, .ts, .tsxoxfmt-Abhangigkeit in package.json und eine experimentelle Umgebungsvariable

Wenn Ihr Projekt also prettier in Ihrem package.json hat, verwendet OpenCode es automatisch.


Funktionsweise

Wenn OpenCode eine Datei schreibt oder bearbeitet, folgt es diesen Schritten:

  1. Uberpruft die Dateiendung gegen alle aktivierten Formatierer.
  2. Fuhrt den entsprechenden Formatierer-Befehl auf der Datei aus.
  3. Wendet die Formatierungsaenderungen automatisch an.

Dieser Prozess lauft im Hintergrund, sodass Ihre Code-Stile ohne manuelle Schritte gewahrt bleiben.


Konfiguration

Sie konnen Formatierer uber den Abschnitt formatter in Ihrer OpenCode-Konfiguration anpassen.

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

Jede Formatierer-Konfiguration unterstutzt die folgenden Eigenschaften:

PropertyTypeDescription
disabledbooleanAuf true setzen, um den Formatierer zu deaktivieren
commandstring[]Der Befehl, der fur das Formatieren ausgefuhrt wird
environmentobjectUmgebungsvariablen beim Ausfuhren des Formatierers
extensionsstring[]Dateierweiterungen, die dieser Formatierer verarbeiten

Lassen Sie uns einige Beispiele betrachten.


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 spezifischen Formatierer zu deaktivieren, setzen Sie disabled auf true:

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

Benutzerdefinierte Formatierer

Sie konnen die integrierten Formatierer uberschreiben oder neue hinzufugen, 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 $FILE-Platzhalter im Befehl wird durch den Pfad der formatierten Datei ersetzt.