Przejdź do głównej zawartości

Formatery

OpenCode używa formaterów specyficznych dla języka.

OpenCode automatycznie formatuje pliki po ich zapisaniu lub edycji przy użyciu formaterów specyficznych dla języka. Zapewnia to, że wygenerowany kod jest zgodny ze stylem kodu Twojego projektu.


Wbudowane

OpenCode zawiera kilka wbudowanych formaterów dla popularnych języków i frameworków. Poniższa tabela zawiera listę formaterów, obsługiwanych plików oraz wymagań konfiguracyjnych.

FormaterRozszerzeniaWymagania
gofmt.goDostępne polecenie gofmt
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceDostępne polecenie mix
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i więcejZależność prettier w package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i więcejPlik konfiguracyjny biome.json(c)
zig.zig, .zonDostępne polecenie zig
clang-format.c, .cpp, .h, .hpp, .ino i więcejPlik konfiguracyjny .clang-format
ktlint.kt, .ktsDostępne polecenie ktlint
ruff.py, .pyiDostępne polecenie ruff
rustfmt.rsDostępne polecenie rustfmt
cargo.rsDostępne polecenie cargo fmt
uv.py, .pyiDostępne polecenie uv
rubocop.rb, .rake, .gemspec, .ruDostępne polecenie rubocop
standardrb.rb, .rake, .gemspec, .ruDostępne polecenie standardrb
htmlbeautifier.erb, .html.erbDostępne polecenie htmlbeautifier
air.RDostępne polecenie air
dart.dartDostępne polecenie dart
ocamlformat.ml, .mliDostępne polecenie ocamlformat i plik konfiguracyjny .ocamlformat
terraform.tf, .tfvarsDostępne polecenie terraform
gleam.gleamDostępne polecenie gleam
nixfmt.nixDostępne polecenie nixfmt
shfmt.sh, .bashDostępne polecenie shfmt
pint.phpZależność laravel/pint w composer.json
oxfmt (experimental).js, .jsx, .ts, .tsxZależność oxfmt w package.json i eksperymentalna flaga
ormolu.hsDostępne polecenie ormolu

Jeśli więc Twój projekt zawiera prettier w package.json, OpenCode automatycznie go użyje.


Jak to działa

Kiedy OpenCode zapisuje lub edytuje plik:

  1. Sprawdza plik pod kątem wszystkich dostępnych formaterów.
  2. Uruchamia odpowiedni formater na pliku.
  3. Automatycznie stosuje zmiany formatowania.

Ten proces odbywa się w tle, zapewniając spójność stylu kodu bez konieczności ręcznej interwencji.


Konfiguracja

Możesz dostosować formatery za pomocą sekcji formatter w konfiguracji OpenCode.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}

Każdy formater obsługuje następujące właściwości:

WłaściwośćTypOpis
disabledbooleanUstaw na true, aby wyłączyć ten formater
commandstring[]Polecenie uruchomienia formatera
environmentobjectZmienne środowiskowe ustawiane podczas uruchamiania
extensionsstring[]Rozszerzenia plików, które powinny używać tego formatera

Spójrzmy na kilka przykładów.


Wyłączanie formaterów

Aby globalnie wyłączyć wszystkie formatery, ustaw formatter na false:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}

Aby wyłączyć określony formater, ustaw disabled na true:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}

Niestandardowe formatery

Możesz dodać niestandardowe formatery, podając polecenie, zmienne środowiskowe i rozszerzenia plików:

opencode.json
{
"$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"]
}
}
}

Symbol zastępczy $FILE w poleceniu jest zastępowany ścieżką do formatowanego pliku.