Spec-Zone.ru › Elixir 1.12

mix формат

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

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 \\ [])Source

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

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

Spec-Zone.ru

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