Formatierer
OpenCode verwendet sprachspezifische Formatierer.
OpenCode kann Dateien nach dem Schreiben oder Bearbeiten mithilfe sprachspezifischer Formatierer formatieren. Formatierer sind standardmäßig deaktiviert; aktivieren Sie sie in Ihrer Konfiguration, bevor OpenCode sie ausführt.
Integriert
OpenCode wird mit mehreren integrierten Formatierern für beliebte Sprachen und Frameworks ausgeliefert. Nachfolgend finden Sie eine Liste der Formatierer, der unterstützten Dateierweiterungen und der benötigten Befehle oder Konfigurationsoptionen.
| Formatierer | Erweiterungen | Voraussetzungen |
|---|---|---|
| air | .R | Befehl air verfügbar |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und mehr (opens in a new tab) | Konfigurationsdatei biome.json(c) |
| cargofmt | .rs | Befehl cargo fmt verfügbar |
| clang-format | .c, .cpp, .h, .hpp, .ino und mehr (opens in a new tab) | Konfigurationsdatei .clang-format |
| cljfmt | .clj, .cljs, .cljc, .edn | Befehl cljfmt verfügbar |
| dart | .dart | Befehl dart verfügbar |
| dfmt | .d | Befehl dfmt verfügbar |
| gleam | .gleam | Befehl gleam verfügbar |
| gofmt | .go | Befehl gofmt verfügbar |
| htmlbeautifier | .erb, .html.erb | Befehl htmlbeautifier verfügbar |
| ktlint | .kt, .kts | Befehl ktlint verfügbar |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Befehl mix verfügbar |
| nixfmt | .nix | Befehl nixfmt verfügbar |
| ocamlformat | .ml, .mli | Befehl ocamlformat verfügbar und Konfigurationsdatei .ocamlformat |
| ormolu | .hs | Befehl ormolu verfügbar |
| oxfmt (experimentell) | .js, .jsx, .ts, .tsx | Abhängigkeit oxfmt in package.json und ein experimentelles Umgebungsvariablen-Flag |
| pint | .php | Abhängigkeit laravel/pint in composer.json |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml und mehr (opens in a new tab) | Abhängigkeit prettier in package.json |
| rubocop | .rb, .rake, .gemspec, .ru | Befehl rubocop verfügbar |
| ruff | .py, .pyi | Befehl ruff mit Konfiguration verfügbar |
| rustfmt | .rs | Befehl rustfmt verfügbar |
| shfmt | .sh, .bash | Befehl shfmt verfügbar |
| standardrb | .rb, .rake, .gemspec, .ru | Befehl standardrb verfügbar |
| terraform | .tf, .tfvars | Befehl terraform verfügbar |
| uv | .py, .pyi | Befehl uv verfügbar |
| zig | .zig, .zon | Befehl zig verfügbar |
Wenn Formatierer aktiviert sind, verwendet OpenCode prettier für passende Dateien, sofern Ihr Projekt prettier in der package.json enthält.
Funktionsweise
Wenn OpenCode eine Datei schreibt oder bearbeitet und Formatierer aktiviert sind, führt es Folgendes aus:
- Prüft die Dateierweiterung gegen alle aktivierten Formatierer.
- Führt den passenden Formatierer-Befehl für die Datei aus.
- Wendet die Formatierungsänderungen an.
Dieser Vorgang läuft für aktivierte Formatierer im Hintergrund ab.
Konfigurieren
Sie können Formatierer über den Abschnitt formatter in Ihrer OpenCode-Konfiguration aktivieren und anpassen.
Um alle integrierten Formatierer zu aktivieren, setzen Sie formatter auf true.
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}Verwenden Sie ein Objekt, um die integrierten Formatierer aktiviert zu lassen, während Sie Überschreibungen oder benutzerdefinierte Formatierer konfigurieren.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Jede Formatierer-Konfiguration unterstützt Folgendes:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
disabled | boolean | Setzen Sie dies auf true, um den Formatierer zu deaktivieren |
command | string[] | Der Befehl, der zur Formatierung ausgeführt wird. Erforderlich für benutzerdefinierte Formatierer; optional für integrierte. |
environment | object | Umgebungsvariablen, die beim Ausführen des Formatierers gesetzt werden |
extensions | string[] | Dateierweiterungen, die dieser Formatierer behandeln soll |
Sehen wir uns einige Beispiele an.
Formatierer deaktivieren
Wenn formatter weggelassen wird, sind alle Formatierer deaktiviert. Um alle Formatierer zu deaktivieren, nachdem eine andere Konfiguration sie aktiviert hat, 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 integrierte Formatierer mit Optionen wie environment oder extensions konfigurieren. Um einen benutzerdefinierten Formatierer hinzuzufügen, geben Sie einen command und extensions an:
{
"$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.