Formatierer
OpenCode verwendet sprachspezifische Formatierer.
OpenCode formatiert Dateien automatisch nach dem Schreiben oder Bearbeiten mit sprachspezifischen Formatierern. Dies stellt sicher, dass der generierte Code den Codestilen Ihres Projekts folgt.
Integrierte Formatierer
OpenCode enthält mehrere integrierte Formatierer für beliebte Sprachen und Frameworks. Unten finden Sie eine Liste der Formatierer, unterstützten Dateierweiterungen und erforderlichen Befehle oder Konfigurationsoptionen.
| Formatierer | Erweiterungen | Anforderungen |
|---|---|---|
| gofmt | .go | gofmt Befehl verfügbar |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | mix Befehl verfügbar |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und mehr (opens in a new tab) | prettier Abhängigkeit in package.json |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und mehr (opens in a new tab) | biome.json(c) Konfigurationsdatei |
| zig | .zig, .zon | zig Befehl verfügbar |
| clang-format | .c, .cpp, .h, .hpp, .ino und mehr (opens in a new tab) | .clang-format Konfigurationsdatei |
| ktlint | .kt, .kts | ktlint Befehl verfügbar |
| ruff | .py, .pyi | ruff Befehl verfügbar mit Konfiguration |
| rustfmt | .rs | rustfmt Befehl verfügbar |
| cargofmt | .rs | cargo fmt Befehl verfügbar |
| uv | .py, .pyi | uv Befehl verfügbar |
| rubocop | .rb, .rake, .gemspec, .ru | rubocop Befehl verfügbar |
| standardrb | .rb, .rake, .gemspec, .ru | standardrb Befehl verfügbar |
| htmlbeautifier | .erb, .html.erb | htmlbeautifier Befehl verfügbar |
| air | .R | air Befehl verfügbar |
| dart | .dart | dart Befehl verfügbar |
| ocamlformat | .ml, .mli | ocamlformat Befehl verfügbar und .ocamlformat Konfigurationsdatei |
| terraform | .tf, .tfvars | terraform Befehl verfügbar |
| gleam | .gleam | gleam Befehl verfügbar |
| nixfmt | .nix | nixfmt Befehl verfügbar |
| shfmt | .sh, .bash | shfmt Befehl verfügbar |
| pint | .php | laravel/pint Abhängigkeit in composer.json |
| oxfmt (Experimentell) | .js, .jsx, .ts, .tsx | oxfmt Abhängigkeit in package.json und ein experimentelles Umgebungsvariablen-Flag |
| ormolu | .hs | ormolu Befehl verfügbar |
Wenn Ihr Projekt also prettier in Ihrer package.json hat, wird OpenCode es automatisch verwenden.
Funktionsweise
Wenn OpenCode eine Datei schreibt oder bearbeitet:
- Prüft die Dateierweiterung gegen alle aktivierten Formatierer.
- Führt den entsprechenden Formatierer-Befehl für die Datei aus.
- Wendet die Formatierungsänderungen automatisch an.
Dieser Prozess läuft im Hintergrund und stellt sicher, dass Ihre Codestile ohne manuelle Schritte beibehalten werden.
Konfiguration
Sie können Formatierer über den Abschnitt formatter in Ihrer OpenCode-Konfiguration anpassen.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Jede Formatierer-Konfiguration unterstützt Folgendes:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
disabled | boolean | Auf true setzen, um den Formatierer zu deaktivieren |
command | string[] | Der Befehl zum Formatieren |
environment | object | Umgebungsvariablen beim Ausführen des Formatierers |
extensions | string[] | 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:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}Um einen bestimmten Formatierer zu deaktivieren, setzen Sie disabled auf true:
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}Benutzerdefinierte Formatierer
Sie können die integrierten Formatierer überschreiben oder neue hinzufügen, 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 zur zu formatierenden Datei ersetzt.