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.
| Formatter | Extensions | Requirements |
|---|---|---|
| gofmt | .go | verfugbarer gofmt Befehl |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | verfugbarer mix Befehl |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und mehr | prettier-Abhangigkeit in package.json |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und mehr | biome.json(c)-Konfigurationsdatei |
| zig | .zig, .zon | verfugbarer zig Befehl |
| clang-format | .c, .cpp, .h, .hpp, .ino, und mehr | .clang-format-Konfigurationsdatei |
| ktlint | .kt, .kts | verfugbarer ktlint Befehl |
| ruff | .py, .pyi | verfugbarer ruff Befehl mit Konfiguration |
| rustfmt | .rs | verfugbarer rustfmt Befehl |
| cargofmt | .rs | verfugbarer cargo fmt Befehl |
| uv | .py, .pyi | verfugbarer uv Befehl |
| rubocop | .rb, .rake, .gemspec, .ru | verfugbarer rubocop Befehl |
| standardrb | .rb, .rake, .gemspec, .ru | verfugbarer standardrb Befehl |
| htmlbeautifier | .erb, .html.erb | verfugbarer htmlbeautifier Befehl |
| air | .R | verfugbarer air Befehl |
| dart | .dart | verfugbarer dart Befehl |
| ocamlformat | .ml, .mli | verfugbarer ocamlformat Befehl und .ocamlformat-Konfigurationsdatei |
| terraform | .tf, .tfvars | verfugbarer terraform Befehl |
| gleam | .gleam | verfugbarer gleam Befehl |
| nixfmt | .nix | verfugbarer nixfmt Befehl |
| shfmt | .sh, .bash | verfugbarer shfmt Befehl |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | oxfmt-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:
- Uberpruft die Dateiendung gegen alle aktivierten Formatierer.
- Fuhrt den entsprechenden Formatierer-Befehl auf der Datei aus.
- 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.
{ "$schema": "https://opencode.ai/config.json", "formatter": {}}Jede Formatierer-Konfiguration unterstutzt die folgenden Eigenschaften:
| Property | Type | Description |
|---|---|---|
disabled | boolean | Auf true setzen, um den Formatierer zu deaktivieren |
command | string[] | Der Befehl, der fur das Formatieren ausgefuhrt wird |
environment | object | Umgebungsvariablen beim Ausfuhren des Formatierers |
extensions | string[] | Dateierweiterungen, die dieser Formatierer verarbeiten |
Lassen Sie uns einige Beispiele betrachten.
Formatierer deaktivieren
Um alle Formatierer global zu deaktivieren, setzen Sie formatter auf false:
{ "$schema": "https://opencode.ai/config.json", "formatter": false}Um einen spezifischen Formatierer zu deaktivieren, setzen Sie disabled auf true:
{ "$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:
{ "$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.