Configuration

La configuration se fait dans le fichier pyproject.toml de votre projet, dans un fichier djlint.toml ou .djlint.toml, ou dans un fichier .djlintrc. Les arguments de la ligne de commande ont toujours priorité sur les réglages des fichiers de configuration. Les réglages locaux du projet ont priorité sur un fichier de configuration global passé avec --configuration, sauf si --prefer-configuration est indiqué.

Le format de pyproject.toml est toml.

[tool.djlint]
<config options>

Le format de djlint.toml et .djlint.toml est toml.

<config options>

Le format de .djlintrc est json.

{ "option": "value" }

Options


allow_empty_input

depuis 1.44.0formatterlinter

Quitter avec 0 au lieu de 2 quand les chemins indiqués ne correspondent à aucun fichier. Les fichiers trouvés puis ignorés par exclude, extend_exclude, use_gitignore ou require_pragma quittent déjà avec 0. Désactivé par défaut.

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

blank_line_after_tag

depuis 0.4.2formatter

Ajouter une ligne vide supplémentaire après les groupes de balises {% <tag> ... %}. Aucune ligne vide n’est jamais ajoutée à la fin d’un bloc.

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

depuis 1.8.0formatter

Ajouter une ligne vide supplémentaire avant les groupes de balises {% <tag> ... %}. Aucune ligne vide n’est jamais ajoutée au début d’un fichier ou d’un bloc, ni entre des balises similaires.

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

depuis 1.26.0formatterlinter

Ajouter une marque de fermeture aux balises vides connues, si bien que <img> devient <img />. H018, qui demande l’inverse, n’est pas signalée avec cette option.

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

custom_blocks

depuis 0.3.5formatter

Noms des blocs de template personnalisés à indenter, par exemple toc pour {% toc %}...{% endtoc %}.

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

custom_html

depuis 0.7.0formatter

Noms des balises HTML personnalisées à indenter, par exemple mjml ou simple-greeting. Un nom peut être une expression régulière, comme 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

depuis 0.4.0linterformatter

Remplacer les chemins exclus par défaut.

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

extend_exclude

depuis 0.4.0linterformatter

Ajouter des chemins supplémentaires aux exclusions par défaut.

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

extension

depuis 0.0.5linterformatter

Extension des fichiers à rechercher dans les dossiers. Par défaut html.

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

files

depuis 1.14.0linterformatter

Une liste de chemins à utiliser comme source pour djlint. Quand cette option est indiquée, la source passée en ligne de commande doit être -, comme pour stdin. Avec --stdin-filename, - désigne stdin dans tous les cas.

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

format_attribute_js_json

depuis 1.37.0formatter

Formater le code JavaScript et JSON à l’intérieur des attributs HTML. Cela formate les littéraux d’objet et le code JavaScript dans des attributs comme onclick, x-* et d’autres attributs liés à JavaScript. Les objets ayant moins de propriétés que format_attribute_js_json_min_props ne sont pas formatés.

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

depuis 1.37.0formatter

Nombre minimal de propriétés qu’un objet JavaScript/JSON doit avoir pour être formaté. La valeur par défaut est 2. Les objets qui en ont moins restent sur une seule ligne.

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

depuis 1.37.0formatter

Expression régulière personnalisée pour repérer les attributs JavaScript à formater. Le motif par défaut reconnaît les attributs JavaScript courants comme onclick, x-*, les directives Vue.js, Alpine.js et Angular, et d’autres encore.

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

depuis 0.6.7formatter

Formater la syntaxe de template à l’intérieur des attributs des balises. Désactivé par défaut.

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

format_css

depuis 1.9.0formatter

Formater le contenu des balises style avec css-beautify. Consultez css-beautify pour toutes les options de configuration. La syntaxe de template n’est pas entièrement prise en charge.

[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

depuis 1.9.0formatter

Formater le contenu des balises script avec js-beautify. Consultez js-beautify pour toutes les options de configuration. La syntaxe de template n’est pas entièrement prise en charge. Un script dont le type n’est ni JavaScript ni JSON, comme un template côté client dans text/template, est laissé tel quel.

[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

depuis 0.1.5linter

Codes du linter à ignorer.

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

ignore_blocks

depuis 1.24.0formatter

Blocs de template qui n’indentent pas leur contenu. Leurs enfants sont traités comme des frères du bloc et indentés en conséquence.

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

ignore_case

depuis 1.23.0formatterlinter

Ne pas tenter de corriger la casse des balises html connues. H009 et H010 ne sont pas signalées avec cette option.

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

include

depuis 1.20.0linter

Codes du linter, désactivés par défaut, à activer.

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

indent

depuis 0.3.5formatter

Nombre d’espaces par niveau d’indentation. La valeur par défaut est 4, ou l’indent_size d’un .editorconfig situé à la racine du projet.

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

keep_br_inline

depuis 1.45.0formatter

Garder <br> sur la ligne du texte qu’il coupe, plutôt que de lui donner une ligne à part. <hr>, qui s’affiche comme un filet sous le contenu qui le précède, n’est pas concerné.

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

line_break_after_multiline_tag

depuis 1.27.0formatter

Quand les attributs d’une balise sont répartis sur plusieurs lignes, commencer son contenu sur une nouvelle ligne.

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

depuis 0.6.7linter

Personnalise l’ordre du message de sortie. Par défaut : “{code} {line} {message} {match}”. Si {filename} ne figure pas dans le message, la sortie est regroupée par fichier et un en-tête est automatiquement ajouté à chaque groupe.

Variables disponibles :

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

depuis 0.5.8formatter

Quand les attributs d’une balise dépassent cette longueur, le formateur les répartit sur plusieurs lignes. La valeur par défaut est 70.

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

max_blank_lines

depuis 1.31.0formatter

Garder au plus ce nombre de lignes vides consécutives. La valeur par défaut est 0, qui supprime les lignes vides. Sans effet avec preserve_blank_lines.

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

max_line_length

depuis 0.5.7formatter

Le formateur ne regroupe certaines balises HTML et de template sur une seule ligne que si la ligne tient dans cette longueur. La valeur par défaut est 120, ou le max_line_length d’un .editorconfig situé à la racine du projet.

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

name_endblocks

depuis 1.45.0formatter

Écrire le nom du bloc dans le {% endblock %} qui le ferme, quand le bloc est écrit sur plusieurs lignes. C’est ce que demande T003.

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

no_entity_formatting

depuis 1.45.0formatter

Ne pas réécrire une référence d’entité sous la forme du caractère qu’elle désigne : &copy; reste tel qu’il est écrit au lieu de devenir ©. Les entités porteuses de syntaxe, et les entités invisibles, ne sont de toute façon jamais réécrites. H023 signale tout de même une entité avec cette option ; ajoutez H023 à ignore pour conserver les entités.

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

no_function_formatting

depuis 1.30.2formatter

Ne pas tenter de formater les arguments des appels de fonction à l’intérieur des expressions {{ }}.

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

no_indent_inner_html

depuis 1.45.0formatter

Ne pas indenter <head> et <body> sous <html>, comme le fait le formateur html par défaut de VS Code pour mettre en page un document.

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

no_line_after_yaml

depuis 1.29.0formatter

Ne pas ajouter de ligne vide après le 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

depuis 1.30.2formatter

Ne pas tenter de formater le contenu des balises {% set %}.

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

per_file_ignores

depuis 1.7.0linter

Ignorer des règles du linter fichier par fichier.

[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

depuis 1.45.0formatterlinter

Laisser le fichier désigné par configuration l’emporter sur le fichier de configuration du projet lui-même. configuration désigne un fichier global : par défaut, un pyproject.toml ou un .djlintrc situé à côté des templates l’emporte quand les deux définissent la même chose. Uniquement en ligne de commande, puisque cette option détermine la façon dont les fichiers de configuration eux-mêmes sont lus.

--prefer-configuration

preserve_blank_lines

depuis 1.3.0formatter

Préserver les lignes vides quand c’est possible. Idéal pour les fichiers de templates non html dont les lignes vides sont intentionnelles.

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

preserve_class_newlines

depuis 1.39.0formatter

Préserver les sauts de ligne à l’intérieur des attributs class multilignes.

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

preserve_leading_space

depuis 1.2.0formatter

Préserver les espaces en début de texte, quand c’est possible. Idéal pour les fichiers de templates non html dont l’indentation du texte est intentionnelle.

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

profile

depuis 0.4.5linterformatter

Définit un profil pour le langage de templates. Le profil active les règles du linter qui s’appliquent à votre langage de templates, et peut aussi modifier le reformatage. Par exemple, en handlebars, il n’y a pas d’espaces à l’intérieur des balises {{#if}}.

Options :

  • html (par défaut)
  • django
  • jinja
  • nunjucks (pour nunjucks et twig)
  • handlebars (pour handlebars et mustache)
  • liquid (shopify, jekyll, eleventy)
  • golang (templates go ; hugo, helm)
  • angular
  • tera (aussi pour zola ; utilisez jinja pour minijinja)
  • askama (templates de style jinja en rust ; les expressions rust ne sont jamais reformatées)
  • mako (les lignes de contrôle et les commentaires ## restent tels quels)
  • all (tous les langages de templates à la fois)
profile="django"
profile="django"
"profile": "django"
--profile "django"

quiet

depuis 0.0.9formatterlinter

Ne pas afficher les diffs, la barre de progression ni le résumé.

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

quote_style

depuis 1.45.0formatterlinter

Guillemets à utiliser pour les chaînes à l’intérieur des balises de template : double (par défaut) ou single. T002 exige les mêmes guillemets. Le formateur les utilise aussi dans une condition, comme {% if x == "a" %}, pour qu’un même fichier n’écrive pas la même chaîne des deux façons. Les guillemets des attributs HTML relèvent de H008.

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

require_pragma

depuis 0.5.8formatter

Ne formater ou linter que les fichiers qui commencent par un commentaire contenant uniquement le texte ‘djlint:on’. Le commentaire peut être un commentaire HTML ou un commentaire dans le langage de templates défini par le réglage profile. Si aucun profil n’est indiqué, un commentaire dans n’importe lequel des langages de templates est accepté.

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

depuis 1.40.0formatter

Quand une balise ouvrante est répartie sur plusieurs lignes, placer le nom de la balise, chaque attribut et le chevron fermant sur des lignes séparées. Désactivé par défaut.

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

sort_attributes

depuis 1.45.0formatter

Trier les attributs par nom, avec id en premier et class en second. Une balise dont les attributs sont soumis à une balise de template garde l’ordre dans lequel elle a été écrite, puisque sortir un attribut de sa branche modifierait la page.

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

sort_load_tags

depuis 1.47.0formatter

Trier les bibliothèques d’une balise django {% load %} et supprimer celles qui sont écrites deux fois : {% load static i18n %} devient ainsi {% load i18n static %}. Dans {% load a b from library %}, ce sont les noms placés avant from qui sont triés. Quand deux bibliothèques définissent une balise ou un filtre du même nom, c’est la dernière chargée qui l’emporte : le tri peut donc changer celle qu’utilise le template.

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

stdin_filename

depuis 1.43.0formatterlinter

Chemin qui représente stdin dans les messages et pour la comparaison avec les exclusions et per-file-ignores. Par défaut “-”.

--stdin-filename templates/index.html

use_gitignore

depuis 0.5.9linterformatter

Ajouter les exclusions de .gitignore aux exclusions par défaut. Désactivé par défaut.

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

version

depuis 0.3.9formatterlinter

Afficher la version et quitter.

--version

warn

depuis 0.7.6formatterlinter

Quitter avec 0 au lieu de 1 quand le linter trouve des erreurs ou que des fichiers sont à reformater.

--warn