Aller au contenu

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.

FormatterExtensionsRequirements
gofmt.gocommande gofmt disponible
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacecommande mix disponible
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, et plusdependance prettier dans package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, et plusfichier de configuration biome.json(c)
zig.zig, .zoncommande zig disponible
clang-format.c, .cpp, .h, .hpp, .ino, et plusfichier de configuration .clang-format
ktlint.kt, .ktscommande ktlint disponible
ruff.py, .pyicommande ruff disponible avec configuration
rustfmt.rscommande rustfmt disponible
cargofmt.rscommande cargo fmt disponible
uv.py, .pyicommande uv disponible
rubocop.rb, .rake, .gemspec, .rucommande rubocop disponible
standardrb.rb, .rake, .gemspec, .rucommande standardrb disponible
htmlbeautifier.erb, .html.erbcommande htmlbeautifier disponible
air.Rcommande air disponible
dart.dartcommande dart disponible
ocamlformat.ml, .mlicommande ocamlformat disponible et fichier de configuration .ocamlformat
terraform.tf, .tfvarscommande terraform disponible
gleam.gleamcommande gleam disponible
nixfmt.nixcommande nixfmt disponible
shfmt.sh, .bashcommande shfmt disponible
oxfmt (Experimental).js, .jsx, .ts, .tsxdependance 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 :

  1. Verifie l’extension du fichier par rapport a tous les formateurs actives.
  2. Execute la commande de formattage appropriee sur le fichier.
  3. 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.

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

Chaque configuration de formateur prend en charge les elements suivants :

PropertyTypeDescription
disabledbooleanDefinir sur true pour desactiver le formateur
commandstring[]La commande a executer pour le formatage
environmentobjectVariables d’environnement a definir lors du formatage
extensionsstring[]Extensions de fichiers que ce formateur doit gerer

Examinons quelques exemples.


Desactivation des formatters

Pour desactiver tous les formateurs globalement, definissez formatter sur false :

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

Pour desactiver un formateur specifique, definissez disabled sur true :

opencode.json
{
"$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 :

opencode.json
{
"$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.