Dropstone Docs

Форматеры

Dropstone использует форматеры для конкретных языков программирования.

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


Встроенные

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

ФорматерРасширенияТребования
air.Rдоступна команда air
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другиефайл конфигурации biome.json(c)
cargofmt.rsдоступна команда cargo fmt
clang-format.c, .cpp, .h, .hpp, .ino и другиефайл конфигурации .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
pint.phpзависимость laravel/pint в composer.json
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml и другиезависимость 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

Когда форматеры включены, Dropstone будет использовать prettier для совпадающих файлов, если в вашем проекте есть prettier в package.json.


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

Когда Dropstone создает или редактирует файл и форматеры включены, он:

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

Этот процесс происходит в фоновом режиме для включенных форматеров.


Конфигурация

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

Чтобы включить все встроенные форматеры, установите formatter в true.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": true
}

Используйте объект, чтобы сохранить встроенные форматеры включенными при настройке переопределений или пользовательских форматеров.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": {}
}

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

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

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


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

Если formatter опущен, все форматеры отключены. Чтобы отключить все форматеры после того, как другая конфигурация их включила, установите formatter в false:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": false
}

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

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

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

Вы можете настроить встроенные форматеры с параметрами, такими как environment или extensions. Чтобы добавить пользовательский форматер, укажите command и extensions:

{
  "$schema": "https://dropstone.io/schema/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 в команде будет заменен на путь к форматируемому файлу.

Ctrl+I