mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-09 19:52:44 +00:00
130 lines
9.4 KiB
Text
130 lines
9.4 KiB
Text
---
|
|
title: Formatierer
|
|
description: 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](https://prettier.io/docs/en/index.html) | `prettier`-Abhängigkeit in `package.json` |
|
|
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, und [more](https://biomejs.dev/) | `biome.json(c)` Konfigurationsdatei |
|
|
| zig | .zig, .zon | `zig`-Befehl verfügbar |
|
|
| clang-format | .c, .cpp, .h, .hpp, .ino und [more](https://clang.llvm.org/docs/ClangFormat.html) | `.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](/docs/cli/#experimental) |
|
|
| 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:
|
|
|
|
1. Überprüft die Dateierweiterung anhand aller aktivierten Formatierer.
|
|
2. Führt den entsprechenden Formatierungsbefehl für die Datei aus.
|
|
3. 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.
|
|
|
|
```json title="opencode.json"
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"formatter": {}
|
|
}
|
|
```
|
|
|
|
Jede Formatierungskonfiguration unterstützt Folgendes:
|
|
|
|
| Eigentum | 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`:
|
|
|
|
```json title="opencode.json" {3}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"formatter": false
|
|
}
|
|
```
|
|
|
|
Um einen **bestimmten** Formatierer zu deaktivieren, setzen Sie `disabled` auf `true`:
|
|
|
|
```json title="opencode.json" {5}
|
|
{
|
|
"$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:
|
|
|
|
```json title="opencode.json" {4-14}
|
|
{
|
|
"$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.
|