Formatters
OpenCode utilise des formateurs specifiques aux langages.
OpenCode formate automatiquement les fichiers apres qu’ils ont ete ecrits ou modifies en utilisant des formateurs specifiques aux langages. Cela garantit que le code genere respecte les styles de code de votre projet.
Integres
OpenCode est fourni avec plusieurs formateurs integres pour les langages et frameworks populaires. Voici une liste des formateurs, des extensions de fichiers prises en charge et des commandes ou options de configuration necessaires.
| Formatter | Extensions | Requirements |
|---|---|---|
| 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 | dependance prettier dans package.json |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, et plus | fichier de configuration biome.json(c) |
| zig | .zig, .zon | commande zig disponible |
| clang-format | .c, .cpp, .h, .hpp, .ino, et plus | fichier de configuration .clang-format |
| ktlint | .kt, .kts | commande ktlint disponible |
| ruff | .py, .pyi | commande ruff disponible avec configuration |
| 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 |
| 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 |
| oxfmt (Experimental) | .js, .jsx, .ts, .tsx | dependance oxfmt dans package.json et un indicateur experimental |
Ainsi, si votre projet a prettier dans votre package.json, OpenCode l’utilisera automatiquement.
Fonctionnement
Lorsqu’OpenCode ecrit ou modifie un fichier, il :
- Verifie l’extension du fichier par rapport a tous les formateurs actives.
- Execute la commande de formattage appropriee sur le fichier.
- Applique automatiquement les modifications de formatage.
Ce processus se deroule en arriere-plan, garantissant que vos styles de code sont maintenus sans aucune etape manuelle.
Configuration
Vous pouvez personnaliser les formatters via la section formatter de votre configuration OpenCode.
{ "$schema": "https://opencode.ai/config.json", "formatter": {}}Chaque configuration de formateur prend en charge les elements suivants :
| Property | Type | Description |
|---|---|---|
disabled | boolean | Definir sur true pour desactiver le formateur |
command | string[] | La commande a executer pour le formatage |
environment | object | Variables d’environnement a definir lors du formatage |
extensions | string[] | Extensions de fichiers que ce formateur doit gerer |
Examinons quelques exemples.
Desactivation des formatters
Pour desactiver tous les formateurs globalement, definissez formatter sur false :
{ "$schema": "https://opencode.ai/config.json", "formatter": false}Pour desactiver un formateur specifique, definissez disabled sur true :
{ "$schema": "https://opencode.ai/config.json", "formatter": { "prettier": { "disabled": true } }}Formateurs personnalisés
Vous pouvez remplacer les formateurs integres ou en ajouter de nouveaux en specifiant la commande, les variables d’environnement et les extensions de fichiers :
{ "$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"] } }}Le espace reservé $FILE dans la commande sera remplace par le chemin du fichier etant formate.