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
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
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
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
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
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
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
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
Ajouter des chemins supplémentaires aux exclusions par défaut.
extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
extension
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
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
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
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
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
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
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
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
Codes du linter à ignorer.
ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"
ignore_blocks
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
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
Codes du linter, désactivés par défaut, à activer.
include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"
indent
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
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
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
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
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
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
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
É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
Ne pas réécrire une référence d’entité sous la forme du caractère qu’elle désigne : © 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
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
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
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
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
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
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
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
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
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
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
Ne pas afficher les diffs, la barre de progression ni le résumé.
quiet=true
quiet=true
"quiet": true
--quiet
quote_style
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
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
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
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
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
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
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
warn
Quitter avec 0 au lieu de 1 quand le linter trouve des erreurs ou que des fichiers sont à reformater.
--warn