Konfiguracja

Konfigurację ustawia się w pliku pyproject.toml projektu, w pliku djlint.toml lub .djlint.toml albo w pliku .djlintrc. Argumenty wiersza poleceń zawsze mają pierwszeństwo przed ustawieniami z plików konfiguracyjnych. Lokalne ustawienia projektu mają pierwszeństwo przed globalnym plikiem konfiguracyjnym podanym przez --configuration, chyba że ustawiono --prefer-configuration.

Plik pyproject.toml ma format toml.

[tool.djlint]
<config options>

Pliki djlint.toml i .djlint.toml mają format toml.

<config options>

Plik .djlintrc ma format json.

{ "option": "value" }

Opcje


allow_empty_input

od wersji 1.44.0formatterlinter

Kończy działanie z kodem 0 zamiast 2, gdy podane ścieżki nie pasują do żadnego pliku. Pliki, które zostały znalezione, a następnie pominięte przez exclude, extend_exclude, use_gitignore lub require_pragma, i tak kończą działanie z kodem 0. Domyślnie wyłączone.

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

blank_line_after_tag

od wersji 0.4.2formatter

Dodaje dodatkowy pusty wiersz po grupach tagów {% <tag> ... %}. Puste wiersze nigdy nie są dodawane na końcu bloku.

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

od wersji 1.8.0formatter

Dodaje dodatkowy pusty wiersz przed grupami tagów {% <tag> ... %}. Puste wiersze nigdy nie są dodawane na początku pliku lub bloku ani między podobnymi tagami.

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

od wersji 1.26.0formatterlinter

Dodaje znak zamykający do znanych tagów void, dzięki czemu <img> staje się <img />. Przy tej opcji nie jest zgłaszana reguła H018, która wymaga czegoś odwrotnego.

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

custom_blocks

od wersji 0.3.5formatter

Pozwala wcinać własne bloki kodu. Na przykład {% toc %}...{% endtoc %}.

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

custom_html

od wersji 0.7.0formatter

Pozwala wcinać własne tagi HTML. Na przykład <mjml>, <simple-greeting> lub <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

od wersji 0.4.0linterformatter

Nadpisuje domyślne wykluczone ścieżki.

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

extend_exclude

od wersji 0.4.0linterformatter

Dodaje kolejne ścieżki do domyślnie wykluczonych.

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

extension

od wersji 0.0.5linterformatter

Pozwala wyszukiwać tylko pliki z określonym rozszerzeniem.

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

files

od wersji 1.14.0linterformatter

Lista ścieżek, których djlint ma użyć jako źródła. Gdy ta opcja jest podana, źródłem w wierszu poleceń musi być -, tak jak przy używaniu stdin. --stdin-filename sprawia, że - mimo to oznacza stdin.

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

format_attribute_js_json

od wersji 1.37.0formatter

Formatuje kod JavaScript i JSON wewnątrz atrybutów HTML. Formatowane są literały obiektów i kod JavaScript w atrybutach takich jak onclick, x-* i w innych atrybutach związanych z JavaScriptem. Obiekty, które mają mniej właściwości niż format_attribute_js_json_min_props, nie są formatowane.

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

od wersji 1.37.0formatter

Minimalna liczba właściwości, jaką musi mieć obiekt JavaScript/JSON, aby został sformatowany. Domyślnie 2. Obiekty z mniejszą liczbą właściwości pozostają w jednym wierszu.

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

od wersji 1.37.0formatter

Własny wzorzec wyrażenia regularnego, który dopasowuje atrybuty JavaScript do formatowania. Domyślny wzorzec dopasowuje popularne atrybuty JavaScript, takie jak onclick, x-*, dyrektywy Vue.js, Alpine.js i Angulara, i nie tylko.

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

od wersji 0.6.7formatter

Formater próbuje formatować składnię szablonu wewnątrz atrybutów tagów. Domyślnie wyłączone.

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

format_css

od wersji 1.9.0formatter

Formatuje zawartość tagów style za pomocą css-beautify. Wszystkie opcje konfiguracji opisuje css-beautify. Składnia szablonów nie jest w pełni obsługiwana.

[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

od wersji 1.9.0formatter

Formatuje zawartość tagów script za pomocą js-beautify. Wszystkie opcje konfiguracji opisuje js-beautify. Składnia szablonów nie jest w pełni obsługiwana.

[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

od wersji 0.1.5linter

Ignoruje kody lintera.

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

ignore_blocks

od wersji 1.24.0formatter

Pomija wcinanie elementów potomnych tagów szablonu. Elementy potomne są traktowane jak elementy równorzędne i odpowiednio do tego wcinane.

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

ignore_case

od wersji 1.23.0formatterlinter

Nie próbuje poprawiać wielkości liter w znanych tagach HTML. Przy tej opcji nie są zgłaszane H009 i H010.

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

include

od wersji 1.20.0linter

Dołącza kody lintera.

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

indent

od wersji 0.3.5formatter

Zmienia wcięcia kodu. Domyślnie 4 (cztery spacje) albo indent_size z pliku .editorconfig w katalogu głównym projektu.

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

keep_br_inline

od wersji 1.45.0formatter

Zostawia <br> w wierszu tekstu, który dzieli, zamiast przenosić go do osobnego wiersza. Nie dotyczy to <hr>, który renderuje się jako linia pod poprzedzającą treścią.

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

line_break_after_multiline_tag

od wersji 1.27.0formatter

Nie zbija zawartości wielowierszowych tagów do wiersza ostatniego atrybutu.

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

od wersji 0.6.7linter

Dostosowuje kolejność elementów komunikatu na wyjściu. Domyślnie “{code} {line} {message} {match}”. Jeśli komunikat nie zawiera {filename}, wyniki są grupowane według plików, a do każdej grupy automatycznie dodawany jest nagłówek.

Zmienne opcjonalne:

  • {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

od wersji 0.5.8formatter

Formater próbuje zawijać atrybuty tagu, jeśli ich długość przekracza tę wartość. Domyślnie 70.

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

max_blank_lines

od wersji 1.31.0formatter

Ogranicza ciągi pustych wierszy do x wierszy. Domyślnie 0, co oznacza, że puste wiersze są usuwane.

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

max_line_length

od wersji 0.5.7formatter

Formater próbuje umieszczać niektóre tagi HTML i tagi szablonu w jednym wierszu zamiast je zawijać, jeśli długość wiersza nie przekroczy tej wartości. Domyślnie 120 albo max_line_length z pliku .editorconfig w katalogu głównym projektu.

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

name_endblocks

od wersji 1.45.0formatter

Wpisuje nazwę bloku do zamykającego go {% endblock %}, jeśli blok zajmuje kilka wierszy. Tego właśnie wymaga T003.

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

no_entity_formatting

od wersji 1.45.0formatter

Nie zamienia odwołania do encji na znak, który ono oznacza, więc &copy; pozostaje w zapisanej postaci, zamiast stać się ©. Encje niosące składnię oraz encje niewidoczne i tak nigdy nie są zamieniane. H023 nadal zgłasza encje przy tej opcji; aby zachować encje, dodaj H023 do ignore.

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

no_function_formatting

od wersji 1.30.2formatter

Nie próbuje formatować argumentów wywołań funkcji wewnątrz wyrażeń {{ }}.

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

no_indent_inner_html

od wersji 1.45.0formatter

Nie wcina <head> i <body> pod <html>, czyli układa dokument tak jak domyślny formater HTML w VS Code.

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

no_line_after_yaml

od wersji 1.29.0formatter

Nie dodaje pustego wiersza po front matter w yaml.

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

no_set_formatting

od wersji 1.30.2formatter

Nie próbuje formatować zawartości tagów {% set %}.

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

per_file_ignores

od wersji 1.7.0linter

Ignoruje reguły lintera osobno dla poszczególnych plików.

[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

od wersji 1.45.0formatterlinter

Pozwala, by plik wskazany przez configuration miał pierwszeństwo przed własnym plikiem konfiguracyjnym projektu. configuration wskazuje plik globalny, więc domyślnie pyproject.toml lub .djlintrc obok szablonów wygrywa tam, gdzie oba ustawiają to samo. Tylko w wierszu poleceń, ponieważ decyduje o tym, jak wczytywane są same pliki konfiguracyjne.

--prefer-configuration

preserve_blank_lines

od wersji 1.3.0formatter

Tam, gdzie to możliwe, zachowuje puste wiersze. Idealne dla plików szablonów innych niż HTML, w których puste wiersze są celowe.

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

preserve_class_newlines

od wersji 1.39.0formatter

Zachowuje podziały wierszy wewnątrz wielowierszowych atrybutów class.

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

preserve_leading_space

od wersji 1.2.0formatter

Tam, gdzie to możliwe, zachowuje spacje na początku tekstu. Idealne dla plików szablonów innych niż HTML, w których wcięcia tekstu są celowe.

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

profile

od wersji 0.4.5linterformatter

Ustawia profil języka szablonów. Profil włącza reguły lintera, które dotyczą twojego języka szablonów, i może też zmienić sposób formatowania. Na przykład w handlebars wewnątrz tagów {{#if}} nie ma spacji.

Opcje:

  • html (domyślnie)
  • django
  • jinja
  • nunjucks (dla nunjucks i twig)
  • handlebars (dla handlebars i mustache)
  • liquid (shopify, jekyll, eleventy)
  • golang (szablony go; hugo, helm)
  • angular
  • tera (także dla zola; dla minijinja użyj jinja)
  • askama (szablony w stylu jinja w rust; wyrażenia rust nigdy nie są formatowane)
profile="django"
profile="django"
"profile": "django"
--profile "django"

quiet

od wersji 0.0.9formatterlinter

Nie wypisuje diffu podczas przeformatowywania.

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

quote_style

od wersji 1.45.0formatterlinter

Cudzysłowy używane dla ciągów znaków wewnątrz tagów szablonu: double (domyślnie) lub single. T002 wymaga tych samych cudzysłowów. Formater stosuje je również w warunkach, takich jak {% if x == "a" %}, aby w jednym pliku ten sam ciąg znaków nie był zapisywany na dwa sposoby. Cudzysłowy atrybutów HTML pozostawia się regule H008.

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

require_pragma

od wersji 0.5.8formatter

Formatuje lub lintuje tylko pliki, które zaczynają się od komentarza zawierającego wyłącznie tekst „djlint:on”. Może to być komentarz HTML lub komentarz w języku szablonów określonym przez ustawienie profile. Jeśli profil nie jest określony, akceptowany jest komentarz w dowolnym z języków szablonów.

<!-- 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

od wersji 1.40.0formatter

Gdy tag otwierający jest zawijany, umieszcza nazwę tagu, każdy atrybut i nawias zamykający w osobnych wierszach. Domyślnie wyłączone.

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

sort_attributes

od wersji 1.45.0formatter

Sortuje atrybuty według nazwy, z id na pierwszym i class na drugim miejscu. Tag, którego atrybuty są objęte tagiem szablonu, zachowuje kolejność, w jakiej go zapisano, ponieważ przeniesienie atrybutu poza jego gałąź zmieniłoby stronę.

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

sort_load_tags

od wersji 1.47.0formatter

Sortuje biblioteki w tagu django {% load %} i usuwa te zapisane dwukrotnie, więc {% load static i18n %} staje się {% load i18n static %}. W {% load a b from library %} sortowane są nazwy przed from. Gdy dwie biblioteki definiują tag lub filtr o tej samej nazwie, wygrywa ta wczytana jako ostatnia, więc sortowanie może zmienić to, którego z nich używa szablon.

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

stdin_filename

od wersji 1.43.0formatterlinter

Nazwa pliku używana dla per-file-ignores i w komunikatach przy czytaniu ze stdin. Domyślnie „-”.

--stdin-filename templates/index.html

use_gitignore

od wersji 0.5.9linterformatter

Dodaje wykluczenia z .gitignore do domyślnych wykluczeń. Domyślnie wyłączone.

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

version

od wersji 0.3.9formatterlinter

Wyświetla wersję i kończy działanie.

--version

warn

od wersji 0.7.6formatterlinter

Zgłasza błędy jako ostrzeżenia.

--warn