Русский
Документация
Форматтеры

Форматтеры

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

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

Встроенные форматтеры

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

ФорматтерРасширенияТребования
gofmt.goКоманда gofmt доступна
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfaceКоманда mix доступна
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другие (opens in a new tab)Зависимость prettier в package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другие (opens in a new tab)Файл конфигурации biome.json(c)
zig.zig, .zonКоманда zig доступна
clang-format.c, .cpp, .h, .hpp, .ino и другие (opens in a new tab)Файл конфигурации .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 (Экспериментальный).js, .jsx, .ts, .tsxЗависимость oxfmt в package.json и экспериментальный флаг переменной окружения
ormolu.hsКоманда ormolu доступна

Таким образом, если в вашем проекте есть prettier в package.json, OpenCode автоматически будет его использовать.

Как это работает

Когда OpenCode записывает или редактирует файл:

  1. Проверяет расширение файла на соответствие всем включённым форматтерам.
  2. Запускает соответствующую команду форматтера для файла.
  3. Автоматически применяет изменения форматирования.

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

Настройка

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

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

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

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

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

Отключение форматтеров

Чтобы отключить все форматтеры глобально, установите 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
    }
  }
}

Пользовательские форматтеры

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

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 в команде будет заменён на путь к форматируемому файлу.