summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/nb/formatters.mdx
blob: 9619c1470aacfc7717fe97ea9ff93dea2629763b (plain)
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
---
title: Formattere
description: OpenCode bruker språkspesifikke formattere.
---

OpenCode formaterer automatisk filer etter at de er skrevet eller redigert ved hjelp av språkspesifikke formattere. Dette sikrer at koden som genereres følger kodestilene til prosjektet ditt.

---

## Innebygde formattere

OpenCode kommer med flere innebygde formattere for populære språk og rammeverk. Nedenfor er en liste over formattere, støttede filendelser og kommandoer eller konfigurasjonsalternativer den krever.

| Formatter              | Filendelser                                                                                             | Krav                                                                                                    |
| ---------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| gofmt                  | .go                                                                                                     | `gofmt` kommando tilgjengelig                                                                           |
| mix                    | .ex, .exs, .eex, .heex, .leex, .neex, .sface                                                            | `mix` kommando tilgjengelig                                                                             |
| prettier               | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml og [flere](https://prettier.io/docs/en/index.html) | `prettier` avhengighet i `package.json`                                                                 |
| biome                  | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml og [flere](https://biomejs.dev/)                   | `biome.json(c)` konfigurasjonsfil                                                                       |
| zig                    | .zig, .zon                                                                                              | `zig` kommando tilgjengelig                                                                             |
| clang-format           | .c, .cpp, .h, .hpp, .ino og [flere](https://clang.llvm.org/docs/ClangFormat.html)                       | `.clang-format` konfigurasjonsfil                                                                       |
| ktlint                 | .kt, .kts                                                                                               | `ktlint` kommando tilgjengelig                                                                          |
| ruff                   | .py, .pyi                                                                                               | `ruff` kommando tilgjengelig med config                                                                 |
| rustfmt                | .rs                                                                                                     | `rustfmt` kommando tilgjengelig                                                                         |
| cargofmt               | .rs                                                                                                     | `cargo fmt` kommando tilgjengelig                                                                       |
| uv                     | .py, .pyi                                                                                               | `uv` kommando tilgjengelig                                                                              |
| rubocop                | .rb, .rake, .gemspec, .ru                                                                               | `rubocop` kommando tilgjengelig                                                                         |
| standardrb             | .rb, .rake, .gemspec, .ru                                                                               | `standardrb` kommando tilgjengelig                                                                      |
| htmlbeautifier         | .erb, .html.erb                                                                                         | `htmlbeautifier` kommando tilgjengelig                                                                  |
| air                    | .R                                                                                                      | `air` kommando tilgjengelig                                                                             |
| dart                   | .dart                                                                                                   | `dart` kommando tilgjengelig                                                                            |
| dfmt                   | .d                                                                                                      | `dfmt` kommando tilgjengelig                                                                            |
| ocamlformat            | .ml, .mli                                                                                               | `ocamlformat` kommando tilgjengelig og `.ocamlformat` konfigurasjonsfil                                 |
| terraform              | .tf, .tfvars                                                                                            | `terraform` kommando tilgjengelig                                                                       |
| gleam                  | .gleam                                                                                                  | `gleam` kommando tilgjengelig                                                                           |
| nixfmt                 | .nix                                                                                                    | `nixfmt` kommando tilgjengelig                                                                          |
| shfmt                  | .sh, .bash                                                                                              | `shfmt` kommando tilgjengelig                                                                           |
| pint                   | .php                                                                                                    | `laravel/pint` avhengighet i `composer.json`                                                            |
| oxfmt (Eksperimentell) | .js, .jsx, .ts, .tsx                                                                                    | `oxfmt` avhengighet i `package.json` og et [eksperimentelt env variabel flagg](/docs/cli/#experimental) |
| ormolu                 | .hs                                                                                                     | `ormolu` kommando tilgjengelig                                                                          |

Så hvis prosjektet ditt har `prettier` i `package.json`, vil OpenCode automatisk bruke det.

---

## Slik fungerer det

Når OpenCode skriver eller redigerer en fil, gjør den:

1. Kontrollerer filtypen mot alle aktiverte formattere.
2. Kjører riktig formateringskommando på filen.
3. Bruker formateringsendringene automatisk.

Denne prosessen skjer i bakgrunnen, og sikrer at kodestilene dine opprettholdes uten noen manuelle trinn.

---

## Konfigurasjon

Du kan tilpasse formattere gjennom `formatter`-delen i OpenCode-konfigurasjonen.

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

Hver formateringskonfigurasjon støtter følgende:

| Egenskap      | Type     | Beskrivelse                                                     |
| ------------- | -------- | --------------------------------------------------------------- |
| `disabled`    | boolean  | Sett dette til `true` for å deaktivere formatteren              |
| `command`     | string[] | Kommandoen som skal kjøres for formatering                      |
| `environment` | object   | Miljøvariabler som skal settes når formateringsverktøyet kjøres |
| `extensions`  | string[] | Filendelser denne formatteren skal håndtere                     |

La oss se på noen eksempler.

---

### Deaktivering av formattere

For å deaktivere **alle** formattere globalt, sett `formatter` til `false`:

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

For å deaktivere en **spesifikk** formatter, sett `disabled` til `true`:

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

---

### Egendefinerte formattere

Du kan overstyre de innebygde formatterne eller legge til nye ved å spesifisere kommandoen, miljøvariablene og filtypene:

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

**Plassholderen $FILE** i kommandoen vil bli erstattet med banen til filen som formateres.