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
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
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
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
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
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
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
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
Dodaje kolejne ścieżki do domyślnie wykluczonych.
extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
extension
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
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
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
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
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
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
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
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
Ignoruje kody lintera.
ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"
ignore_blocks
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
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
Dołącza kody lintera.
include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"
indent
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
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
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
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
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
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
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
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
Nie zamienia odwołania do encji na znak, który ono oznacza, więc © 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
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
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
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
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
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
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
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
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
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
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
Nie wypisuje diffu podczas przeformatowywania.
quiet=true
quiet=true
"quiet": true
--quiet
quote_style
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
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
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
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
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
Nazwa pliku używana dla per-file-ignores i w komunikatach przy czytaniu ze stdin. Domyślnie „-”.
--stdin-filename templates/index.html
use_gitignore
Dodaje wykluczenia z .gitignore do domyślnych wykluczeń. Domyślnie wyłączone.
use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore