summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/nb/formatters.mdx
blob: d26cc19711ca0bb884007120539dfcfe7585974f (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
---
title: Formatere
description: opencode bruker språkspesifikke formatere.
---

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

---

## Innebygd

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

| Formater               | Utvidelser                                                                                            | 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 [mer](https://prettier.io/docs/en/index.html) | `prettier` avhengighet i `package.json`                                                                 |
| biome                  | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml og [mer](https://biomejs.dev/)                   | `biome.json(c)` konfigurasjonsfil                                                                       |
| zig                    | .zig, .zon                                                                                            | `zig` kommando tilgjengelig                                                                             |
| clang-format           | .c, .cpp, .h, .hpp, .ino og [mer](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                                                                            |
| 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 formatere.
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.

---

## Konfigurer

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

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

Hver formateringskonfigurasjon støtter følgende:

| Property      | Type     | Beskrivelse                                                       |
| ------------- | -------- | ----------------------------------------------------------------- |
| `disabled`    | boolean  | Sett dette til `true` for å deaktivere formatereren               |
| `command`     | string[] | Kommandoen som skal kjøres for formatering                        |
| `environment` | object   | Miljøvariabler som skal angis når du kjører formateringsverktøyet |
| `extensions`  | string[] | Filutvidelser denne formatereren skal håndtere                    |

La oss se på noen eksempler.

---

### Deaktivering av formatere

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

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

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

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

---

### Egendefinerte formatere

Du kan overstyre de innebygde formaterne 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"]
    }
  }
}
```

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