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.
| 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 more | prettier-Abhängigkeit in package.json |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und more | biome.json(c) Konfigurationsdatei |
| zig | .zig, .zon | zig-Befehl verfügbar |
| clang-format | .c, .cpp, .h, .hpp, .ino und more | .clang-format Konfigurationsdatei |
| ktlint | .kt, .kts | ktlint-Befehl verfügbar |
| ruff | .py, .pyi | ruff-Befehl verfügbar mit config |
| 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 (Experimental) | .js, .jsx, .ts, .tsx | oxfmt-Abhängigkeit in package.json und einer experimental env variable flag |
| Ormolu | .hs | ormolu-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:
- Überprüft die Dateierweiterung anhand aller aktivierten Formatierer.
- Führt den entsprechenden Formatierungsbefehl für die Datei aus.
- 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.
{ "$schema": "https://opencode.ai/config.json", "formatter": {}}Jede Formatierungskonfiguration unterstützt Folgendes:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
disabled | boolescher Wert | Setzen Sie dies auf true, um den Formatierer zu deaktivieren |
command | string[] | Der zum Formatieren auszuführende Befehl |
environment | Objekt | Umgebungsvariablen, die beim Ausführen des Formatierers festgelegt werden sollen |
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 } }}Benutzerdefinierter Formatierer
Sie können den integrierten Formatierer überschreiben oder neu 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 Platzhalter $FILE im Befehl wird durch den Pfad zur zu formatierenden Datei ersetzt.