File size: 8,844 Bytes
0dbc9de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
title: Formatery
description: 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.

| Formater             | Rozszerzenia                                                                                            | Wymagania                                                                             |
| -------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| gofmt                | .go                                                                                                     | Dost臋pne polecenie `gofmt`                                                            |
| mix                  | .ex, .exs, .eex, .heex, .leex, .neex, .sface                                                            | Dost臋pne polecenie `mix`                                                              |
| prettier             | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [wi臋cej](https://prettier.io/docs/en/index.html) | Zale偶no艣膰 `prettier` w `package.json`                                                 |
| biome                | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [wi臋cej](https://biomejs.dev/)                   | Plik konfiguracyjny `biome.json(c)`                                                   |
| zig                  | .zig, .zon                                                                                              | Dost臋pne polecenie `zig`                                                              |
| clang-format         | .c, .cpp, .h, .hpp, .ino i [wi臋cej](https://clang.llvm.org/docs/ClangFormat.html)                       | Plik konfiguracyjny `.clang-format`                                                   |
| ktlint               | .kt, .kts                                                                                               | Dost臋pne polecenie `ktlint`                                                           |
| ruff                 | .py, .pyi                                                                                               | Dost臋pne polecenie `ruff`                                                             |
| rustfmt              | .rs                                                                                                     | Dost臋pne polecenie `rustfmt`                                                          |
| cargo                | .rs                                                                                                     | Dost臋pne polecenie `cargo fmt`                                                        |
| uv                   | .py, .pyi                                                                                               | Dost臋pne polecenie `uv`                                                               |
| rubocop              | .rb, .rake, .gemspec, .ru                                                                               | Dost臋pne polecenie `rubocop`                                                          |
| standardrb           | .rb, .rake, .gemspec, .ru                                                                               | Dost臋pne polecenie `standardrb`                                                       |
| htmlbeautifier       | .erb, .html.erb                                                                                         | Dost臋pne polecenie `htmlbeautifier`                                                   |
| air                  | .R                                                                                                      | Dost臋pne polecenie `air`                                                              |
| dart                 | .dart                                                                                                   | Dost臋pne polecenie `dart`                                                             |
| dfmt                 | .d                                                                                                      | Dost臋pne polecenie `dfmt`                                                             |
| ocamlformat          | .ml, .mli                                                                                               | Dost臋pne polecenie `ocamlformat` i plik konfiguracyjny `.ocamlformat`                 |
| terraform            | .tf, .tfvars                                                                                            | Dost臋pne polecenie `terraform`                                                        |
| gleam                | .gleam                                                                                                  | Dost臋pne polecenie `gleam`                                                            |
| nixfmt               | .nix                                                                                                    | Dost臋pne polecenie `nixfmt`                                                           |
| shfmt                | .sh, .bash                                                                                              | Dost臋pne polecenie `shfmt`                                                            |
| pint                 | .php                                                                                                    | Zale偶no艣膰 `laravel/pint` w `composer.json`                                            |
| oxfmt (experimental) | .js, .jsx, .ts, .tsx                                                                                    | Zale偶no艣膰 `oxfmt` w `package.json` i [eksperymentalna flaga](/docs/cli/#experimental) |
| ormolu               | .hs                                                                                                     | Dost臋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.

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

Ka偶dy formater obs艂uguje nast臋puj膮ce w艂a艣ciwo艣ci:

| W艂a艣ciwo艣膰    | Typ      | Opis                                                     |
| ------------- | -------- | -------------------------------------------------------- |
| `disabled`    | boolean  | Ustaw na `true`, aby wy艂膮czy膰 ten formater               |
| `command`     | string[] | Polecenie uruchomienia formatera                         |
| `environment` | object   | Zmienne 艣rodowiskowe ustawiane podczas uruchamiania      |
| `extensions`  | string[] | 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`:

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

Aby wy艂膮czy膰 **okre艣lony** formater, ustaw `disabled` na `true`:

```json title="opencode.json" {5}
{
  "$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:

```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"]
    }
  }
}
```

Symbol zast臋pczy **`$FILE`** w poleceniu jest zast臋powany 艣cie偶k膮 do formatowanego pliku.