Konfiguration

Die Konfiguration erfolgt entweder über die Datei pyproject.toml Ihres Projekts, über eine Datei djlint.toml oder .djlint.toml oder über eine Datei .djlintrc. Argumente auf der Befehlszeile haben immer Vorrang vor den Einstellungen in Konfigurationsdateien. Lokale Projekteinstellungen haben Vorrang vor einer globalen Konfigurationsdatei, die mit --configuration angegeben wird, es sei denn, --prefer-configuration ist gesetzt.

Für pyproject.toml wird das Format toml verwendet.

[tool.djlint]
<config options>

Für djlint.toml und .djlint.toml wird das Format toml verwendet.

<config options>

Für .djlintrc wird das Format json verwendet.

{ "option": "value" }

Optionen


allow_empty_input

seit 1.44.0formatterlinter

Beendet mit 0 statt 2, wenn die angegebenen Pfade auf überhaupt keine Datei passen. Dateien, die gefunden und dann durch exclude, extend_exclude, use_gitignore oder require_pragma übersprungen wurden, enden ohnehin mit 0. Standardmäßig deaktiviert.

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

blank_line_after_tag

seit 0.4.2formatter

Fügt nach Gruppen von {% <tag> ... %}-Tags eine zusätzliche Leerzeile ein. Am Ende eines Blocks werden nie Leerzeilen eingefügt.

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

seit 1.8.0formatter

Fügt vor Gruppen von {% <tag> ... %}-Tags eine zusätzliche Leerzeile ein. Am Anfang einer Datei oder eines Blocks und zwischen gleichartigen Tags werden nie Leerzeilen eingefügt.

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

seit 1.26.0formatterlinter

Versieht bekannte Void-Tags mit einem schließenden Zeichen, sodass aus <img> <img /> wird. H018, das das Gegenteil verlangt, wird mit dieser Option nicht gemeldet.

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

custom_blocks

seit 0.3.5formatter

Rückt eigene Codeblöcke ein. Zum Beispiel {% toc %}...{% endtoc %}.

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

custom_html

seit 0.7.0formatter

Rückt eigene HTML-Tags ein. Zum Beispiel <mjml> oder <simple-greeting> oder <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

seit 0.4.0linterformatter

Überschreibt die standardmäßig ausgeschlossenen Pfade.

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

extend_exclude

seit 0.4.0linterformatter

Fügt den standardmäßig ausgeschlossenen Pfaden weitere hinzu.

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

extension

seit 0.0.5linterformatter

Sucht nur nach Dateien mit einer bestimmten Endung.

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

files

seit 1.14.0linterformatter

Eine Liste von Pfaden, die djlint als Quelle verwendet. Ist diese Option angegeben, muss die Quelle auf der Befehlszeile - sein, als würde stdin verwendet. Mit --stdin-filename steht - in jedem Fall für stdin.

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

format_attribute_js_json

seit 1.37.0formatter

Formatiert JavaScript- und JSON-Code in HTML-Attributen. Formatiert werden Objektliterale und JavaScript-Code in Attributen wie onclick, x-* und anderen JavaScript-bezogenen Attributen. Objekte mit weniger Eigenschaften als format_attribute_js_json_min_props werden nicht formatiert.

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

seit 1.37.0formatter

Mindestanzahl an Eigenschaften, die ein JavaScript-/JSON-Objekt haben muss, damit es formatiert wird. Standard ist 2. Objekte mit weniger Eigenschaften bleiben in einer einzigen Zeile.

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

seit 1.37.0formatter

Eigenes Regex-Muster für die JavaScript-Attribute, die formatiert werden sollen. Das Standardmuster trifft auf gängige JavaScript-Attribute wie onclick, x-*, Direktiven von Vue.js, Alpine.js und Angular und weitere zu.

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

seit 0.6.7formatter

Der Formatter versucht, Template-Syntax innerhalb von Tag-Attributen zu formatieren. Standardmäßig deaktiviert.

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

format_css

seit 1.9.0formatter

Formatiert den Inhalt von style-Tags mit css-beautify. Alle Konfigurationsoptionen finden Sie unter css-beautify. Template-Syntax wird nicht vollständig unterstützt.

[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

seit 1.9.0formatter

Formatiert den Inhalt von script-Tags mit js-beautify. Alle Konfigurationsoptionen finden Sie unter js-beautify. Template-Syntax wird nicht vollständig unterstützt.

[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

seit 0.1.5linter

Ignoriert Linter-Codes.

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

ignore_blocks

seit 1.24.0formatter

Überspringt die Einrückung der Kinder von Template-Tags. Die Kinder werden als Geschwister behandelt und entsprechend eingerückt.

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

ignore_case

seit 1.23.0formatterlinter

Versucht nicht, die Groß-/Kleinschreibung bekannter HTML-Tags zu korrigieren. H009 und H010 werden mit dieser Option nicht gemeldet.

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

include

seit 1.20.0linter

Schließt Linter-Codes ein.

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

indent

seit 0.3.5formatter

Ändert die Einrückung des Codes. Standard ist 4 (vier Leerzeichen) oder die indent_size einer .editorconfig im Projektstamm.

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

keep_br_inline

seit 1.45.0formatter

Belässt <br> in der Zeile des Textes, den es umbricht, statt ihm eine eigene Zeile zu geben. <hr>, das als Linie unter dem vorangehenden Inhalt gerendert wird, ist davon nicht betroffen.

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

line_break_after_multiline_tag

seit 1.27.0formatter

Zieht den Inhalt mehrzeiliger Tags nicht in die Zeile des letzten Attributs zusammen.

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

seit 0.6.7linter

Passt die Reihenfolge der Ausgabemeldung an. Standard: “{code} {line} {message} {match}”. Ist {filename} nicht in der Meldung enthalten, wird die Ausgabe nach Dateien gruppiert, und jede Gruppe erhält automatisch eine Überschrift.

Optionale Variablen:

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

seit 0.5.8formatter

Der Formatter versucht, die Attribute eines Tags umzubrechen, wenn deren Länge diesen Wert überschreitet. Standard ist 70.

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

max_blank_lines

seit 1.31.0formatter

Fasst Leerzeilen auf höchstens x Zeilen zusammen. Standard ist 0, das heißt, Leerzeilen werden entfernt.

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

max_line_length

seit 0.5.7formatter

Der Formatter versucht, manche HTML- und Template-Tags in eine einzige Zeile zu setzen, statt sie umzubrechen, sofern die Zeilenlänge diesen Wert nicht überschreitet. Standard ist 120 oder die max_line_length einer .editorconfig im Projektstamm.

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

name_endblocks

seit 1.45.0formatter

Schreibt den Namen des Blocks in das {% endblock %}, das ihn schließt, sofern der Block über mehrere Zeilen geschrieben ist. Genau das verlangt T003.

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

no_entity_formatting

seit 1.45.0formatter

Ersetzt eine Entity-Referenz nicht durch das Zeichen, das sie bezeichnet, sodass &copy; so bleibt, wie es geschrieben ist, statt zu © zu werden. Die Entities, die Syntax tragen, und die unsichtbaren werden ohnehin nie ersetzt. H023 meldet eine Entity auch mit dieser Option; fügen Sie H023 zu ignore hinzu, um Entities zu behalten.

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

no_function_formatting

seit 1.30.2formatter

Versucht nicht, die Argumente von Funktionsaufrufen in {{ }}-Ausdrücken zu formatieren.

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

no_indent_inner_html

seit 1.45.0formatter

Rückt <head> und <body> unter <html> nicht ein, so wie der Standard-HTML-Formatter von VS Code ein Dokument anordnet.

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

no_line_after_yaml

seit 1.29.0formatter

Fügt nach YAML-Front-Matter keine Leerzeile ein.

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

no_set_formatting

seit 1.30.2formatter

Versucht nicht, den Inhalt von {% set %}-Tags zu formatieren.

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

per_file_ignores

seit 1.7.0linter

Ignoriert Linter-Regeln pro Datei.

[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

seit 1.45.0formatterlinter

Lässt die mit configuration angegebene Datei die eigene Konfigurationsdatei des Projekts überschreiben. configuration bezeichnet eine globale Datei, daher gewinnt standardmäßig eine pyproject.toml oder .djlintrc neben den Templates, wo beide dasselbe festlegen. Nur auf der Befehlszeile verfügbar, da die Option bestimmt, wie die Konfigurationsdateien selbst gelesen werden.

--prefer-configuration

preserve_blank_lines

seit 1.3.0formatter

Behält Leerzeilen nach Möglichkeit bei. Ideal für Template-Dateien ohne HTML, in denen Leerzeilen beabsichtigt sind.

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

preserve_class_newlines

seit 1.39.0formatter

Behält Zeilenumbrüche innerhalb mehrzeiliger class-Attribute bei.

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

preserve_leading_space

seit 1.2.0formatter

Behält führende Leerzeichen vor Text nach Möglichkeit bei. Ideal für Template-Dateien ohne HTML, in denen die Einrückung des Textes beabsichtigt ist.

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

profile

seit 0.4.5linterformatter

Legt ein Profil für die Template-Sprache fest. Das Profil aktiviert die Linter-Regeln, die für Ihre Template-Sprache gelten, und kann auch das Neuformatieren verändern. In handlebars zum Beispiel stehen innerhalb von {{#if}}-Tags keine Leerzeichen.

Optionen:

  • html (Standard)
  • django
  • jinja
  • nunjucks (für nunjucks und twig)
  • handlebars (für handlebars und mustache)
  • liquid (shopify, jekyll, eleventy)
  • golang (Go-Templates; hugo, helm)
  • angular
  • tera (auch für zola; für minijinja verwenden Sie jinja)
  • askama (Templates im Jinja-Stil in Rust; Rust-Ausdrücke werden nie neu formatiert)
profile="django"
profile="django"
"profile": "django"
--profile "django"

quiet

seit 0.0.9formatterlinter

Gibt beim Neuformatieren keinen Diff aus.

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

quote_style

seit 1.45.0formatterlinter

Anführungszeichen für Strings innerhalb von Template-Tags, entweder double (Standard) oder single. T002 verlangt dieselben Anführungszeichen. Der Formatter verwendet sie auch in einer Bedingung wie {% if x == "a" %}, damit eine Datei denselben String nicht auf beide Arten schreibt. Die Anführungszeichen von HTML-Attributen sind Sache von H008.

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

require_pragma

seit 0.5.8formatter

Formatiert oder lintet nur Dateien, die mit einem Kommentar beginnen, der ausschließlich den Text „djlint:on“ enthält. Das kann ein HTML-Kommentar sein oder ein Kommentar in der Template-Sprache, die in der Einstellung profile festgelegt ist. Ist kein Profil angegeben, wird ein Kommentar in jeder der Template-Sprachen akzeptiert.

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

seit 1.40.0formatter

Wird ein öffnendes Tag umgebrochen, kommen der Tag-Name, jedes Attribut und die schließende Klammer in eigene Zeilen. Standardmäßig deaktiviert.

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

sort_attributes

seit 1.45.0formatter

Sortiert Attribute nach Namen, mit id an erster und class an zweiter Stelle. Ein Tag, dessen Attribute von einem Template-Tag umschlossen sind, behält die geschriebene Reihenfolge, da das Verschieben eines Attributs aus seinem Zweig die Seite verändern würde.

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

sort_load_tags

seit 1.47.0formatter

Sortiert die Bibliotheken in einem Django-{% load %}-Tag und entfernt doppelt aufgeführte, sodass aus {% load static i18n %} {% load i18n static %} wird. In {% load a b from library %} werden die Namen vor from sortiert. Definieren zwei Bibliotheken ein Tag oder einen Filter mit demselben Namen, gewinnt die zuletzt geladene, sodass das Sortieren ändern kann, welche das Template verwendet.

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

stdin_filename

seit 1.43.0formatterlinter

Dateiname, der beim Lesen von stdin für per-file-ignores und Meldungen verwendet wird. Standard ist „-“.

--stdin-filename templates/index.html

use_gitignore

seit 0.5.9linterformatter

Fügt die Ausschlüsse aus .gitignore den standardmäßigen Ausschlüssen hinzu. Standardmäßig deaktiviert.

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

version

seit 0.3.9formatterlinter

Zeigt die Version an und beendet das Programm.

--version

warn

seit 0.7.6formatterlinter

Gibt Fehler als Warnungen zurück.

--warn