Форматтеры
OpenCode использует форматтеры, специфичные для языка.
OpenCode может форматировать файлы после их записи или редактирования с помощью форматтеров, специфичных для языка. Форматтеры отключены по умолчанию; включите их в вашей конфигурации, прежде чем OpenCode будет их запускать.
Встроенные
OpenCode поставляется с несколькими встроенными форматтерами для популярных языков и фреймворков. Ниже приведён список форматтеров, поддерживаемых расширений файлов и необходимых команд или параметров конфигурации.
| Форматтер | Расширения | Требования |
|---|---|---|
| air | .R | Команда air доступна |
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другие (opens in a new tab) | Файл конфигурации biome.json(c) |
| cargofmt | .rs | Команда cargo fmt доступна |
| clang-format | .c, .cpp, .h, .hpp, .ino и другие (opens in a new tab) | Файл конфигурации .clang-format |
| cljfmt | .clj, .cljs, .cljc, .edn | Команда cljfmt доступна |
| dart | .dart | Команда dart доступна |
| dfmt | .d | Команда dfmt доступна |
| gleam | .gleam | Команда gleam доступна |
| gofmt | .go | Команда gofmt доступна |
| htmlbeautifier | .erb, .html.erb | Команда htmlbeautifier доступна |
| ktlint | .kt, .kts | Команда ktlint доступна |
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | Команда mix доступна |
| nixfmt | .nix | Команда nixfmt доступна |
| ocamlformat | .ml, .mli | Команда ocamlformat доступна и файл конфигурации .ocamlformat |
| ormolu | .hs | Команда ormolu доступна |
| oxfmt (Экспериментальный) | .js, .jsx, .ts, .tsx | Зависимость oxfmt в package.json и экспериментальный флаг переменной окружения |
| pint | .php | Зависимость laravel/pint в composer.json |
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другие (opens in a new tab) | Зависимость prettier в package.json |
| rubocop | .rb, .rake, .gemspec, .ru | Команда rubocop доступна |
| ruff | .py, .pyi | Команда ruff доступна с конфигурацией |
| rustfmt | .rs | Команда rustfmt доступна |
| shfmt | .sh, .bash | Команда shfmt доступна |
| standardrb | .rb, .rake, .gemspec, .ru | Команда standardrb доступна |
| terraform | .tf, .tfvars | Команда terraform доступна |
| uv | .py, .pyi | Команда uv доступна |
| zig | .zig, .zon | Команда zig доступна |
Когда форматтеры включены, OpenCode будет использовать prettier для подходящих файлов, если в вашем проекте есть prettier в package.json.
Как это работает
Когда OpenCode записывает или редактирует файл и форматтеры включены, он:
- Проверяет расширение файла на соответствие всем включённым форматтерам.
- Запускает соответствующую команду форматтера для файла.
- Применяет изменения форматирования.
Этот процесс происходит в фоновом режиме для включённых форматтеров.
Настройка
Вы можете включать и настраивать форматтеры через раздел formatter в вашей конфигурации OpenCode.
Чтобы включить все встроенные форматтеры, установите formatter в true.
{
"$schema": "https://opencode.ai/config.json",
"formatter": true
}Используйте объект, чтобы оставить встроенные форматтеры включёнными при настройке переопределений или пользовательских форматтеров.
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}Каждая конфигурация форматтера поддерживает следующее:
| Свойство | Тип | Описание |
|---|---|---|
disabled | boolean | Установите true для отключения форматтера |
command | string[] | Команда для форматирования. Обязательна для пользовательских форматтеров; опциональна для встроенных. |
environment | object | Переменные окружения, устанавливаемые при запуске форматтера |
extensions | string[] | Расширения файлов, которые должен обрабатывать этот форматтер |
Рассмотрим несколько примеров.
Отключение форматтеров
Если formatter опущен, все форматтеры отключены. Чтобы отключить все форматтеры после того, как другая конфигурация их включила, установите formatter в false:
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}Чтобы отключить конкретный форматтер, установите disabled в true:
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}Пользовательские форматтеры
Вы можете настроить встроенные форматтеры с помощью опций, таких как environment или extensions. Чтобы добавить пользовательский форматтер, укажите command и extensions:
{
"$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 в команде будет заменён на путь к форматируемому файлу.