Перейти к содержимому

Форматеры

opencode использует средства форматирования, специфичные для языка.

opencode автоматически форматирует файлы после их записи или редактирования с использованием средств форматирования для конкретного языка. Это гарантирует, что создаваемый код будет соответствовать стилям кода вашего проекта.


Built-in

opencode поставляется с несколькими встроенными форматировщиками для популярных языков и платформ. Ниже приведен список форматтеров, поддерживаемых расширений файлов, а также необходимых команд или параметров конфигурации.

FormatterРасширенияТребования
gofmt.goДоступна команда gofmt
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceДоступна команда mix
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и подробнееЗависимость prettier в package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и подробнееКонфигурационный файл biome.json(c)
zig.zig, .zonДоступна команда zig
clang-format.c, .cpp, .h, .hpp, .ino и подробнееКонфигурационный файл .clang-format
ktlint.kt, .ktsДоступна команда ktlint
ruff.py, .pyiКоманда ruff доступна в конфигурации
rustfmt.rsДоступна команда rustfmt
cargofmt.rsДоступна команда cargo fmt
uv.py, .pyiДоступна команда uv
rubocop.rb, .rake, .gemspec, .ruДоступна команда rubocop
standardrb.rb, .rake, .gemspec, .ruДоступна команда standardrb
htmlbeautifier.erb, .html.erbДоступна команда htmlbeautifier
air.RДоступна команда air
dart.dartДоступна команда dart
ocamlformat.ml, .mliДоступна команда ocamlformat и файл конфигурации .ocamlformat.
terraform.tf, .tfvarsДоступна команда terraform
gleam.gleamДоступна команда gleam
nixfmt.nixДоступна команда nixfmt
shfmt.sh, .bashДоступна команда shfmt
pint.phpЗависимость laravel/pint в composer.json
oxfmt (Experimental).js, .jsx, .ts, .tsxЗависимость oxfmt в package.json и экспериментальная переменная окружения flag
ormolu.hsДоступна команда ormolu

Поэтому, если ваш проект имеет prettier в вашем package.json, opencode автоматически его использует.


Configure

Вы можете настроить форматтеры через раздел formatter в конфигурации opencode.

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

Каждая конфигурация форматтера поддерживает следующее:

СвойствоТипОписание
disabledbooleanУстановите для этого параметра значение true, чтобы отключить форматтер.
commandstring[]Команда для форматирования
environmentобъектПеременные среды, которые необходимо установить при запуске средства форматирования
extensionsstring[]Расширения файлов, которые должен обрабатывать этот форматтер

Давайте посмотрим на несколько примеров.


Disabling Formatters

Чтобы глобально отключить все средства форматирования, установите для formatter значение false:

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

Чтобы отключить конкретный форматтер, установите для disabled значение true:

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

Custom Formatters

Вы можете переопределить встроенные средства форматирования или добавить новые, указав команду, переменные среды и расширения файлов:

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

Заполнитель $FILE в команде будет заменен путем к форматируемому файлу.