Configuração

A configuração é feita pelo arquivo pyproject.toml do seu projeto, por um arquivo djlint.toml ou .djlint.toml, ou por um arquivo .djlintrc. Os argumentos da linha de comando sempre têm prioridade sobre as configurações dos arquivos de configuração. As configurações locais do projeto têm prioridade sobre um arquivo de configuração global informado com --configuration, a menos que --prefer-configuration esteja definido.

O formato do pyproject.toml é toml.

[tool.djlint]
<config options>

O formato do djlint.toml e do .djlint.toml é toml.

<config options>

O formato do .djlintrc é json.

{ "option": "value" }

Opções


allow_empty_input

desde 1.44.0formatterlinter

Sai com 0 em vez de 2 quando os caminhos informados não correspondem a nenhum arquivo. Arquivos que foram encontrados e depois ignorados por exclude, extend_exclude, use_gitignore ou require_pragma já saem com 0. Desativado por padrão.

allow_empty_input=true
allow_empty_input=true
"allow_empty_input": true
--allow-empty-input

blank_line_after_tag

desde 0.4.2formatter

Adiciona uma linha em branco extra depois de grupos de tags {% <tag> ... %}. Linhas em branco nunca serão adicionadas ao fim de um bloco.

blank_line_after_tag="load,extends,include"
blank_line_after_tag="load,extends,include"
"blank_line_after_tag": "load,extends,include"
--blank-line-after-tag "load,extends,include"

blank_line_before_tag

desde 1.8.0formatter

Adiciona uma linha em branco extra antes de grupos de tags {% <tag> ... %}. Linhas em branco nunca serão adicionadas ao início do arquivo ou de um bloco, nem entre tags semelhantes.

blank_line_before_tag="load,extends,include"
blank_line_before_tag="load,extends,include"
"blank_line_before_tag": "load,extends,include"
--blank-line-before-tag "load,extends,include"

close_void_tags

desde 1.26.0formatterlinter

Adiciona uma marca de fechamento às tags vazias conhecidas, de modo que <img> vira <img />. A H018, que pede o contrário, não é relatada com essa opção.

close_void_tags=true
close_void_tags=true
"close_void_tags": true
--close-void-tags

custom_blocks

desde 0.3.5formatter

Use para indentar blocos de código personalizados. Por exemplo, {% toc %}...{% endtoc %}.

custom_blocks="toc,example"
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"

custom_html

desde 0.7.0formatter

Use para indentar tags HTML personalizadas. Por exemplo, <mjml>, <simple-greeting> ou <mj-\w+>

custom_html="mjml,simple-greeting,mj-\\w+"
custom_html="mjml,simple-greeting,mj-\\w+"
"custom_html": "mjml,simple-greeting,mj-\\w+"
--custom-html "mjml,simple-greeting,mj-\\w+"

exclude

desde 0.4.0linterformatter

Substitui os caminhos excluídos por padrão.

exclude=".venv,venv,.tox,.eggs,..."
exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."
--exclude ".venv,venv,.tox,.eggs,..."

extend_exclude

desde 0.4.0linterformatter

Adiciona mais caminhos à exclusão padrão.

extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"

extension

desde 0.0.5linterformatter

Use para encontrar apenas arquivos com uma extensão específica.

extension="html.dj"
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"

files

desde 1.14.0linterformatter

Uma lista de caminhos a usar como fonte do djlint. Quando esta opção é especificada, a fonte na linha de comando deve ser -, como ao usar o stdin. Com --stdin-filename, - significa stdin de qualquer forma.

[tool.djlint]
files=["index.html"]
files=["index.html"]
"files": [
    "index.html"
]
index.html

format_attribute_js_json

desde 1.37.0formatter

Formata código JavaScript e JSON dentro de atributos HTML. Isso formata literais de objeto e código JavaScript em atributos como onclick, x-* e outros atributos relacionados a JavaScript. Objetos com menos propriedades do que format_attribute_js_json_min_props não são formatados.

format_attribute_js_json=true
format_attribute_js_json=true
"format_attribute_js_json": true
--format-attribute-js-json

format_attribute_js_json_min_props

desde 1.37.0formatter

Número mínimo de propriedades que um objeto JavaScript/JSON precisa ter para ser formatado. O padrão é 2. Objetos com menos propriedades permanecem em uma única linha.

format_attribute_js_json_min_props=3
format_attribute_js_json_min_props=3
"format_attribute_js_json_min_props": 3
--format-attribute-js-json-min-props 3

format_attribute_js_json_pattern

desde 1.37.0formatter

Padrão de regex personalizado para identificar os atributos JavaScript a formatar. O padrão predefinido corresponde a atributos JavaScript comuns, como onclick, x-*, diretivas do Vue.js, do Alpine.js e do Angular, entre outros.

format_attribute_js_json_pattern="^(on[a-z]+|data-[a-z-]+|x-[a-z-]+)$"
format_attribute_js_json_pattern="^(on[a-z]+|data-[a-z-]+|x-[a-z-]+)$"
"format_attribute_js_json_pattern": "^(on[a-z]+|data-[a-z-]+|x-[a-z-]+)$"
--format-attribute-js-json-pattern "^(on[a-z]+|data-[a-z-]+|x-[a-z-]+)$"

format_attribute_template_tags

desde 0.6.7formatter

O formatador tentará formatar a sintaxe de template dentro dos atributos das tags. Desativado por padrão.

format_attribute_template_tags=true
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags

format_css

desde 1.9.0formatter

Formata o conteúdo das tags style usando o css-beautify. Consulte o css-beautify para ver todas as opções de configuração. A sintaxe de template não é totalmente suportada.

[tool.djlint]
format_css=true

[tool.djlint.css]
indent_size=5
format_css=true

[css]
indent_size=5
"format_css": true,
"css": {
        "indent_size": 5
    }
--format-css --indent-css 5

format_js

desde 1.9.0formatter

Formata o conteúdo das tags script usando o js-beautify. Consulte o js-beautify para ver todas as opções de configuração. A sintaxe de template não é totalmente suportada.

[tool.djlint]
format_js=true

[tool.djlint.js]
indent_size=5
format_js=true

[js]
indent_size=5
"format_js": true,
"js": {
        "indent_size": 5
    }
--format-js --indent-js 5

ignore

desde 0.1.5linter

Ignora códigos do linter.

ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"

ignore_blocks

desde 1.24.0formatter

Usado para não indentar os filhos de tags de template. Os filhos serão tratados como irmãos e indentados de acordo.

ignore_blocks="raw,example"
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"

ignore_case

desde 1.23.0formatterlinter

Não tenta corrigir maiúsculas e minúsculas de tags html conhecidas. A H009 e a H010 não são relatadas com essa opção.

[tool.djlint]
ignore_case=true
ignore_case=true
"ignore_case": true
--ignore-case

include

desde 1.20.0linter

Inclui códigos do linter.

include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"

indent

desde 0.3.5formatter

Use para alterar a indentação do código. O padrão é 4 (quatro espaços), ou o indent_size de um .editorconfig na raiz do projeto.

indent=3
indent=3
"indent": 3
--indent 3

keep_br_inline

desde 1.45.0formatter

Mantém o <br> na linha do texto que ele quebra, em vez de colocá-lo em uma linha própria. O <hr>, que é renderizado como uma linha abaixo do conteúdo anterior, não é afetado.

keep_br_inline=true
keep_br_inline=true
"keep_br_inline": true
--keep-br-inline

line_break_after_multiline_tag

desde 1.27.0formatter

Não condensa o conteúdo de tags de várias linhas na linha do último atributo.

line_break_after_multiline_tag=true
line_break_after_multiline_tag=true
"line_break_after_multiline_tag": true
--line-break-after-multiline-tag

linter_output_format

desde 0.6.7linter

Personaliza a ordem da mensagem de saída. Padrão=“{code} {line} {message} {match}”. Se {filename} não estiver incluído na mensagem, a saída será agrupada por arquivo e um cabeçalho será adicionado automaticamente a cada grupo.

Variáveis opcionais:

  • {filename}
  • {line}
  • {end}
  • {code}
  • {message}
  • {match}
linter_output_format="{filename}:{line}: {code} {message} {match}"
linter_output_format="{filename}:{line}: {code} {message} {match}"
"linter_output_format": "{filename}:{line}: {code} {message} {match}"
--linter-output-format "{filename}:{line}: {code} {message} {match}"

max_attribute_length

desde 0.5.8formatter

O formatador tentará quebrar os atributos das tags se o comprimento dos atributos ultrapassar este valor. O padrão é 70.

max_attribute_length=10
max_attribute_length=10
"max_attribute_length": 10
--max-attribute-length 10

max_blank_lines

desde 1.31.0formatter

Reduz as linhas em branco consecutivas a no máximo x linhas. O padrão é 0, o que significa que as linhas em branco serão removidas.

max_blank_lines=5
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5

max_line_length

desde 0.5.7formatter

O formatador tentará colocar algumas tags html e de template em uma única linha, em vez de quebrá-las, se o comprimento da linha não ultrapassar este valor. O padrão é 120, ou o max_line_length de um .editorconfig na raiz do projeto.

max_line_length=120
max_line_length=120
"max_line_length": 120
--max-line-length 120

name_endblocks

desde 1.45.0formatter

Escreve o nome do bloco no {% endblock %} que o fecha, quando o bloco se estende por várias linhas. É isso que a T003 exige.

name_endblocks=true
name_endblocks=true
"name_endblocks": true
--name-endblocks

no_entity_formatting

desde 1.45.0formatter

Não reescreve uma referência de entidade como o caractere que ela nomeia, então &copy; é mantido como foi escrito em vez de virar ©. As entidades que carregam sintaxe, e as invisíveis, nunca são reescritas, em nenhum caso. A H023 continua relatando uma entidade com essa opção; adicione H023 a ignore para manter as entidades.

no_entity_formatting=true
no_entity_formatting=true
"no_entity_formatting": true
--no-entity-formatting

no_function_formatting

desde 1.30.2formatter

Não tenta formatar os argumentos de chamadas de função dentro de expressões {{ }}.

no_function_formatting=true
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting

no_indent_inner_html

desde 1.45.0formatter

Não indenta <head> e <body> abaixo de <html>, que é como o formatador html padrão do VS Code organiza um documento.

no_indent_inner_html=true
no_indent_inner_html=true
"no_indent_inner_html": true
--no-indent-inner-html

no_line_after_yaml

desde 1.29.0formatter

Não adiciona uma linha em branco depois do front matter yaml.

no_line_after_yaml=true
no_line_after_yaml=true
"no_line_after_yaml": true
--no-line-after-yaml

no_set_formatting

desde 1.30.2formatter

Não tenta formatar o conteúdo das tags {% set %}.

no_set_formatting=true
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting

per_file_ignores

desde 1.7.0linter

Ignora regras do linter arquivo por arquivo.

[tool.djlint.per-file-ignores]
"file.html"= "H026,H025"
"file_two.html"="H001"
[per-file-ignores]
"file.html"= "H026,H025"
"file_two.html"="H001"
"per-file-ignores": {
        "file.html": "H026,H025",
        "file_two.html":"H001"
    }
--per-file-ignores "file.html" "H026,H025" --per-file-ignores "file_two.html" "H001"

prefer_configuration

desde 1.45.0formatterlinter

Faz o arquivo indicado por configuration prevalecer sobre o arquivo de configuração do próprio projeto. configuration indica um arquivo global, então, por padrão, um pyproject.toml ou .djlintrc ao lado dos templates prevalece quando os dois definem a mesma coisa. Só na linha de comando, já que essa opção decide como os próprios arquivos de configuração são lidos.

--prefer-configuration

preserve_blank_lines

desde 1.3.0formatter

Preserva as linhas em branco, quando possível. Ideal para arquivos de template que não são html, em que as linhas em branco são intencionais.

preserve_blank_lines=true
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines

preserve_class_newlines

desde 1.39.0formatter

Preserva as quebras de linha dentro de atributos class de várias linhas.

preserve_class_newlines=true
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines

preserve_leading_space

desde 1.2.0formatter

Preserva o espaço no início do texto, quando possível. Ideal para arquivos de template que não são html, em que a indentação do texto é intencional.

preserve_leading_space=true
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space

profile

desde 0.4.5linterformatter

Define um perfil para a linguagem de template. O perfil ativa as regras do linter que se aplicam à sua linguagem de template e também pode alterar a reformatação. Por exemplo, no handlebars não há espaços dentro das tags {{#if}}.

Opções:

  • html (padrão)
  • django
  • jinja
  • nunjucks (para nunjucks e twig)
  • handlebars (para handlebars e mustache)
  • liquid (shopify, jekyll, eleventy)
  • golang (templates go; hugo, helm)
  • angular
  • tera (também para zola; use jinja para minijinja)
  • askama (templates no estilo jinja em rust; as expressões rust nunca são reformatadas)
profile="django"
profile="django"
"profile": "django"
--profile "django"

quiet

desde 0.0.9formatterlinter

Não imprime o diff ao reformatar.

quiet=true
quiet=true
"quiet": true
--quiet

quote_style

desde 1.45.0formatterlinter

Aspas a usar em strings dentro de tags de template: double (o padrão) ou single. A T002 exige as mesmas aspas. O formatador também as usa em uma condição, como {% if x == "a" %}, para que um mesmo arquivo não escreva a mesma string das duas formas. As aspas dos atributos HTML ficam a cargo da H008.

quote_style="single"
quote_style="single"
"quote_style": "single"
--quote-style single

require_pragma

desde 0.5.8formatter

Só formata ou faz o lint de arquivos que começam com um comentário contendo apenas o texto ‘djlint:on’. O comentário pode ser um comentário HTML ou um comentário na linguagem de template definida pela configuração de perfil. Se nenhum perfil for especificado, é aceito um comentário em qualquer uma das linguagens de template.

<!-- djlint:on -->
{# djlint:on #}
{% comment %} djlint:on {% endcomment %}
{{ /* djlint:on */ }}
{{!-- djlint:on --}}
require_pragma=true
require_pragma=true
"require_pragma": true
--require-pragma

single_attribute_per_line

desde 1.40.0formatter

Quando uma tag de abertura é quebrada, coloca o nome da tag, cada atributo e o sinal de fechamento da tag em linhas separadas. Desativado por padrão.

single_attribute_per_line=true
single_attribute_per_line=true
"single_attribute_per_line": true
--single-attribute-per-line

sort_attributes

desde 1.45.0formatter

Ordena os atributos por nome, com id primeiro e class em segundo. Uma tag cujos atributos são controlados por uma tag de template mantém a ordem em que foi escrita, já que tirar um deles do seu ramo mudaria a página.

sort_attributes=true
sort_attributes=true
"sort_attributes": true
--sort-attributes

sort_load_tags

desde 1.47.0formatter

Ordena as bibliotecas de uma tag {% load %} do django e remove as que aparecem duas vezes, de modo que {% load static i18n %} vira {% load i18n static %}. Em {% load a b from library %}, os nomes antes de from são ordenados. Quando duas bibliotecas definem uma tag ou um filtro com o mesmo nome, prevalece a carregada por último, então a ordenação pode mudar qual delas o template usa.

sort_load_tags=true
sort_load_tags=true
"sort_load_tags": true
--sort-load-tags

stdin_filename

desde 1.43.0formatterlinter

Nome de arquivo a usar para o per-file-ignores e as mensagens ao ler do stdin. O padrão é “-”.

--stdin-filename templates/index.html

use_gitignore

desde 0.5.9linterformatter

Adiciona as exclusões do .gitignore à exclusão padrão. Desativado por padrão.

use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore

version

desde 0.3.9formatterlinter

Mostra a versão e sai.

--version

warn

desde 0.7.6formatterlinter

Retorna os erros como avisos.

--warn