formatters.mdx 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. ---
  2. title: Formatere
  3. description: OpenCode bruger sprogspecifikke formatere.
  4. ---
  5. OpenCode formaterer automatisk filer, efter de er skrevet eller redigeret ved hjælp af sprogspecifikke formatere. Dette sikrer, at den kode, der genereres, følger kodestilene for dit projekt.
  6. ---
  7. ## Indbygget
  8. OpenCode leveres med flere indbyggede formatere til populære sprog og rammer. Nedenfor er en liste over de formatere, understøttede filtypenavne og kommandoer eller konfigurationsmuligheder, der har brug for.
  9. | Formater | Udvidelser | Krav |
  10. | --------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
  11. | gofmt | .go | `gofmt` kommando tilgængelig |
  12. | blande | .ex,.exs,.eex,.heex,.leex,.neex,.sface | `mix` kommando tilgængelig |
  13. | smukkere | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://prettier.io/docs/en/index.html) | `prettier` afhængighed i `package.json` |
  14. | biome | .js,.jsx,.ts,.tsx,.html,.css,.md,.json,.yaml og [more](https://biomejs.dev/) | `biome.json(c)` konfigurationsfil |
  15. | zig | .zig,.zon | `zig` kommando tilgængelig |
  16. | klang-format | .c,.cpp,.h,.hpp,.ino og [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` konfigurationsfil |
  17. | ktlint | .kt,.kts | `ktlint` kommando tilgængelig |
  18. | ruff | .py,.pyi | `ruff` kommando tilgængelig med konfiguration |
  19. | rustfmt | .rs | `rustfmt` kommando tilgængelig |
  20. | cargofmt | .rs | `cargo fmt` kommando tilgængelig |
  21. | uv | .py,.pyi | `uv` kommando tilgængelig |
  22. | rubocop | .rb,.rake,.gemspec,.ru | `rubocop` kommando tilgængelig |
  23. | standardrb | .rb,.rake,.gemspec,.ru | `standardrb` kommando tilgængelig |
  24. | htmlbeautifier | .erb,.html.erb | `htmlbeautifier` kommando tilgængelig |
  25. | luft | .R | `air` kommando tilgængelig |
  26. | dart | .dart | `dart` kommando tilgængelig |
  27. | ocamlformat | .ml,.mli | `ocamlformat` kommando tilgængelig og `.ocamlformat` config fil |
  28. | terraform | .tf,.tfvars | `terraform` kommando tilgængelig |
  29. | glimt | .glimt | `gleam` kommando tilgængelig |
  30. | nixfmt | .nix | `nixfmt` kommando tilgængelig |
  31. | shfmt | .sh,.bash | `shfmt` kommando tilgængelig |
  32. | pint | .php | `laravel/pint` afhængighed i `composer.json` |
  33. | oxfmt (Eksperimentel) | .js,.jsx,.ts,.tsx | `oxfmt` afhængighed i `package.json` og en [experimental env variable flag](/docs/cli/#experimental) |
  34. | ormolu | .hs | `ormolu` kommando tilgængelig |
  35. Så hvis dit projekt har `prettier` i din `package.json`, vil OpenCode automatisk bruge det.
  36. ---
  37. ## Sådan fungerer det
  38. Når OpenCode skriver eller redigerer en fil, vil det:
  39. 1. Kontrollerer filtypenavnet mod alle aktiverede formatere.
  40. 2. Kører den relevante formateringskommando på filen.
  41. 3. Anvender formateringsændringerne automatisk.
  42. Denne proces sker i baggrunden, hvilket sikrer, at dine kodestile vedligeholdes uden nogen manuelle trin.
  43. ---
  44. ## Konfigurer
  45. Du kan tilpasse formatere gennem afsnittet `formatter` i din OpenCode-konfiguration.
  46. ```json title="opencode.json"
  47. {
  48. "$schema": "https://opencode.ai/config.json",
  49. "formatter": {}
  50. }
  51. ```
  52. Hver formateringskonfiguration understøtter følgende:
  53. | Ejendom | Skriv | Beskrivelse |
  54. | ------------- | -------- | -------------------------------------------------------------------- |
  55. | `disabled` | boolean | Indstil dette til `true` for at deaktivere formateringsværktøjet |
  56. | `command` | string[] | Kommandoen til at køre for formatering |
  57. | `environment` | object | Miljøvariabler, der skal indstilles, når formateringsværktøjet køres |
  58. | `extensions` | string[] | Filtypenavne, som denne formaterer skal håndtere |
  59. Lad os se på nogle eksempler.
  60. ---
  61. ### Deaktivering af formatere
  62. For at deaktivere **alle** formatere globalt, skal du indstille `formatter` til `false`:
  63. ```json title="opencode.json" {3}
  64. {
  65. "$schema": "https://opencode.ai/config.json",
  66. "formatter": false
  67. }
  68. ```
  69. For at deaktivere en **specifik** formatter, skal du indstille `disabled` til `true`:
  70. ```json title="opencode.json" {5}
  71. {
  72. "$schema": "https://opencode.ai/config.json",
  73. "formatter": {
  74. "prettier": {
  75. "disabled": true
  76. }
  77. }
  78. }
  79. ```
  80. ---
  81. ### Brugerdefinerede formatere
  82. Du kan tilsidesætte de indbyggede formattere eller tilføje nye ved at angive kommandoen, miljøvariabler og filtypenavne:
  83. ```json title="opencode.json" {4-14}
  84. {
  85. "$schema": "https://opencode.ai/config.json",
  86. "formatter": {
  87. "prettier": {
  88. "command": ["npx", "prettier", "--write", "$FILE"],
  89. "environment": {
  90. "NODE_ENV": "development"
  91. },
  92. "extensions": [".js", ".ts", ".jsx", ".tsx"]
  93. },
  94. "custom-markdown-formatter": {
  95. "command": ["deno", "fmt", "$FILE"],
  96. "extensions": [".md"]
  97. }
  98. }
  99. }
  100. ```
  101. **`$FILE` pladsholderen** i kommandoen vil blive erstattet med stien til filen, der formateres.