Spec-Zone.ru › Elixir 1.11

mix format

Форматирует заданные файлы и шаблоны.

mix format mix.exs "lib/**/*.{ex,exs}" "test/**/*.{ex,exs}"

Если какой-либо из файлов является -, то вывод считывается из стандартного ввода и записывается в стандартный вывод.

Параметры форматирования

Форматировщик будет читать файл .formatter.exs в текущем каталоге для настройки форматирования. Оценка этого файла должна вернуть список ключевых слов.

Вот пример файла .formatter.exs , который служит отправной точкой:

[
  inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]

Помимо параметров, перечисленных в Code.format_string!/2, файл .formatter.exs поддерживает следующие параметры:

  • :inputs (список путей и шаблонов) - задает стандартные входные данные для этой задачи. Например, ["mix.exs", "{config,lib,test}/**/*.{ex,exs}"]. Шаблоны расширяются с помощью Path.wildcard/2.

  • :subdirectories (список путей и шаблонов) - задает подкаталоги, имеющие свои правила форматирования. Каждый подкаталог должен иметь файл .formatter.exs , который настраивает, как записи в этом подкаталоге должны быть отформатированы. Настройки между .formatter.exs не совместно используются и не наследуются. Если .formatter.exs перечисляет "lib/app" как подкаталог, правила в .formatter.exs не будут доступны в lib/app/.formatter.exs. Обратите внимание, что родительский .formatter.exs не должен указывать файлы внутри подкаталога "lib/app" в своей :inputs конфигурации. Если это произойдёт, поведение, какой конфигурации форматирования будет выбрано, не определено.

  • :import_deps (список зависимостей как атомы) - задает список зависимостей, чья конфигурация форматирования будет импортирована. При указании форматировщик должен работать в той же директории, что и файл mix.exs , который определяет эти зависимости. Дополнительную информацию см. в разделе "Импорт конфигурации зависимостей" ниже.

  • :export (ключевой список) - задает конфигурацию форматирования для экспорта. См. раздел "Импорт конфигурации зависимостей" ниже.

Параметры, специфичные для задачи

  • --check-formatted - проверяет, что файл уже отформатирован. Это полезно в хуках pre-commit и скриптах CI, если вы хотите отклонить изменения с неотформатированным кодом. Однако помните, что отформатированный вывод может отличаться между версиями Elixir, так как к форматировщику применяются улучшения и исправления.

  • --check-equivalent - проверяет, что файлы после форматирования имеют тот же AST, что и до форматирования. Если AST не эквивалентны, это ошибка в кодовом форматировщике. Этот параметр полезен, если вы подозреваете, что столкнулись с ошибкой форматировщика, и хотите получить подтверждение.

  • --dry-run - не сохраняет файлы после форматирования.

  • --dot-formatter - путь к файлу с конфигурацией форматирования. По умолчанию .formatter.exs , если он доступен. Дополнительную информацию см. в разделе "Параметры форматирования" выше.

Если какой-либо из параметров --check-* задан и проверка завершилась неудачно, отформатированное содержимое не будет записано на диск и не будет выведено на стандартный вывод.

Когда форматировать код

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

cd $project && mix format $file

где $file относится к текущему файлу, а $project - к корню вашего проекта.

Также возможно отформатировать весь проект, передав список шаблонов и файлов в mix format, как показано в начале документации по этой задаче. Этот список также можно установить в файле .formatter.exs под ключом :inputs.

Импорт конфигурации зависимостей

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

Зависимость, которая хочет экспортировать конфигурацию форматирования, должна иметь файл .formatter.exs в корне проекта. В этом файле зависимость может экспортировать параметр :export с конфигурацией для экспорта. На данный момент поддерживается только один параметр в :export: :locals_without_parens (значение которого имеет ту же форму, что и значение параметра :locals_without_parens в Code.format_string!/2).

Функции, перечисленные под :locals_without_parens в параметре :export зависимости, могут быть импортированы в проект, перечислив эту зависимость в параметре :import_deps файла конфигурации форматирования проекта.

Например, рассмотрим проект под названием my_app , зависящий от другого проекта под названием my_dep. my_dep хочет экспортировать некоторую конфигурацию, поэтому файл my_dep/.formatter.exs будет выглядеть так:

# my_dep/.formatter.exs
[
  # Regular formatter configuration for my_dep
  # ...

  export: [
    locals_without_parens: [some_dsl_call: 2, some_dsl_call: 3]
  ]
]

Для импорта конфигурации файл my_app в параметре .formatter.exs должен выглядеть следующим образом:

# my_app/.formatter.exs
[
  import_deps: [:my_dep]
]

Обзор

Функции

formatter_opts_for_file(file, opts \\ [])

Возвращает параметры форматирования, которые следует использовать для данного файла.

Функции

formatter_opts_for_file(file, opts \\ [])

Возвращает параметры форматирования, которые следует использовать для данного файла.

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.11.2/Mix.Tasks.Format.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API