Aller au contenu

Formateurs

OpenCode utilise des formateurs spécifiques à la langue.

OpenCode formate automatiquement les fichiers après leur écriture ou leur modification à l’aide de formateurs spécifiques à la langue. Cela garantit que le code généré suit les styles de code de votre projet.


Intégré

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.

FormateurRallongesExigences
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 plusDépendance 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 config
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
pint.phpDépendance laravel/pint dans composer.json
oxfmt (expérimental).js, .jsx, .ts, .tsxDépendance oxfmt dans package.json et un flag de variable d’environnement expérimental
ormolu.hsCommande 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.


Configurer

Vous pouvez personnaliser les formateurs via la section formatter de votre configuration OpenCode.

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

Chaque configuration du formateur prend en charge les éléments suivants :

PropriétéTapezDescriptif
disabledbooléenDéfinissez ceci sur true pour désactiver le formateur
commandchaîne[]La commande à exécuter pour le formatage
environmentobjetVariables d’environnement à définir lors de l’exécution du formateur
extensionschaî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 :

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

Pour désactiver un formateur spécifique, définissez disabled sur true :

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

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

L’espace réservé $FILE dans la commande sera remplacé par le chemin d’accès au fichier en cours de formatage.