File size: 10,062 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: Formateurs
description: OpenCode utilise des formateurs spécifiques au langage.
---
OpenCode formate automatiquement les fichiers après leur écriture ou leur modification à l'aide de formateurs spécifiques au langage. Cela garantit que le code généré suit les styles de code de votre projet.
---
## Formateurs intégrés
OpenCode est livré avec plusieurs formateurs intégrés pour les langages et frameworks populaires. Vous trouverez ci-dessous une liste des formateurs, des extensions de fichiers prises en charge et des commandes ou options de configuration dont il a besoin.
| Formateur | Extensions | Prérequis |
| -------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| gofmt | .go | Commande `gofmt` disponible |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Commande `mix` disponible |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml et [plus](https://prettier.io/docs/en/index.html) | Dépendance `prettier` dans `package.json` |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml et [plus](https://biomejs.dev/) | Fichier de configuration `biome.json(c)` |
| zig | .zig, .zon | Commande `zig` disponible |
| clang-format | .c, .cpp, .h, .hpp, .ino et [plus](https://clang.llvm.org/docs/ClangFormat.html) | Fichier de configuration `.clang-format` |
| ktlint | .kt, .kts | Commande `ktlint` disponible |
| ruff | .py, .pyi | Commande `ruff` disponible avec config |
| rustfmt | .rs | Commande `rustfmt` disponible |
| cargofmt | .rs | Commande `cargo fmt` disponible |
| uv | .py, .pyi | Commande `uv` disponible |
| rubocop | .rb, .rake, .gemspec, .ru | Commande `rubocop` disponible |
| standardrb | .rb, .rake, .gemspec, .ru | Commande `standardrb` disponible |
| htmlbeautifier | .erb, .html.erb | Commande `htmlbeautifier` disponible |
| air | .R | Commande `air` disponible |
| dart | .dart | Commande `dart` disponible |
| dfmt | .d | Commande `dfmt` disponible |
| ocamlformat | .ml, .mli | Commande `ocamlformat` disponible et fichier de configuration `.ocamlformat` |
| terraform | .tf, .tfvars | Commande `terraform` disponible |
| gleam | .gleam | Commande `gleam` disponible |
| nixfmt | .nix | Commande `nixfmt` disponible |
| shfmt | .sh, .bash | Commande `shfmt` disponible |
| pint | .php | Dépendance `laravel/pint` dans `composer.json` |
| oxfmt (expérimental) | .js, .jsx, .ts, .tsx | Dépendance `oxfmt` dans `package.json` et un [flag de variable d'environnement expérimental](/docs/cli/#experimental) |
| ormolu | .hs | Commande `ormolu` disponible |
Ainsi, si votre projet a `prettier` dans votre `package.json`, OpenCode l'utilisera automatiquement.
---
## Comment ça marche
Lorsque OpenCode écrit ou modifie un fichier, il :
1. Vérifie l'extension du fichier par rapport à tous les formateurs activés.
2. Exécute la commande de formatage appropriée sur le fichier.
3. Applique automatiquement les modifications de formatage.
Ce processus se déroule en arrière-plan, garantissant que vos styles de code sont conservés sans aucune étape manuelle.
---
## Configuration
Vous pouvez personnaliser les formateurs via la section `formatter` de votre configuration OpenCode.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
Chaque configuration du formateur prend en charge les éléments suivants :
| Propriété | Type | Description |
| ------------- | -------- | -------------------------------------------------------------------- |
| `disabled` | booléen | Définissez ceci sur `true` pour désactiver le formateur |
| `command` | chaîne[] | La commande à exécuter pour le formatage |
| `environment` | objet | Variables d'environnement à définir lors de l'exécution du formateur |
| `extensions` | chaîne[] | Extensions de fichiers que ce formateur doit gérer |
Regardons quelques exemples.
---
### Désactivation des formateurs
Pour désactiver **tous** les formateurs globalement, définissez `formatter` sur `false` :
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
Pour désactiver un formateur **spécifique**, définissez `disabled` sur `true` :
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### Formateurs personnalisés
Vous pouvez remplacer les formateurs intégrés ou en ajouter de nouveaux en spécifiant la commande, les variables d'environnement et les extensions de fichier :
```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"]
}
}
}
```
L'espace réservé **`$FILE`** dans la commande sera remplacé par le chemin d'accès au fichier en cours de formatage.
|