Configurazione
La configurazione si imposta nel file pyproject.toml del progetto, in un file djlint.toml o .djlint.toml, oppure in un file .djlintrc. Gli argomenti della riga di comando hanno sempre la precedenza su qualsiasi impostazione dei file di configurazione. Le impostazioni locali del progetto hanno la precedenza su un file di configurazione globale indicato con --configuration, a meno che non sia impostato --prefer-configuration.
Il formato di pyproject.toml è toml.
[tool.djlint]
<config options>
Il formato di djlint.toml e .djlint.toml è toml.
<config options>
Il formato di .djlintrc è json.
{ "option": "value" }
Opzioni
allow_empty_input
Esce con 0 invece di 2 quando i percorsi indicati non corrispondono ad alcun file. I file trovati e poi esclusi da exclude, extend_exclude, use_gitignore o require_pragma escono già con 0. Disattivata per impostazione predefinita.
allow_empty_input=true
allow_empty_input=true
"allow_empty_input": true
--allow-empty-input
blank_line_after_tag
Aggiunge una riga vuota dopo i gruppi di tag {% <tag> ... %}. Le righe vuote non vengono mai aggiunte alla fine di un blocco.
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
Aggiunge una riga vuota prima dei gruppi di tag {% <tag> ... %}. Le righe vuote non vengono mai aggiunte all’inizio di un file o di un blocco, né tra tag simili.
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
Aggiunge un segno di chiusura ai tag void noti, così <img> diventa <img />. Con questa opzione non viene segnalata H018, che chiede il contrario.
close_void_tags=true
close_void_tags=true
"close_void_tags": true
--close-void-tags
custom_blocks
Serve a indentare blocchi di codice personalizzati. Ad esempio {% toc %}...{% endtoc %}.
custom_blocks="toc,example"
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"
custom_html
Serve a indentare tag HTML personalizzati. Ad esempio <mjml> o <simple-greeting> o <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
Sovrascrive i percorsi esclusi predefiniti.
exclude=".venv,venv,.tox,.eggs,..."
exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."
--exclude ".venv,venv,.tox,.eggs,..."
extend_exclude
Aggiunge altri percorsi a quelli esclusi per impostazione predefinita.
extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
extension
Serve a cercare solo i file con una specifica estensione.
extension="html.dj"
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"
files
Una lista di percorsi da usare come sorgente di djlint. Quando questa opzione è specificata, la sorgente sulla riga di comando deve essere -, come quando si usa stdin. --stdin-filename fa sì che - indichi comunque stdin.
[tool.djlint]
files=["index.html"]
files=["index.html"]
"files": [
"index.html"
]
index.html
format_attribute_js_json
Formatta il codice JavaScript e JSON all’interno degli attributi HTML. Vengono formattati gli oggetti letterali e il codice JavaScript in attributi come onclick, x-* e altri attributi legati a JavaScript. Gli oggetti con meno proprietà di format_attribute_js_json_min_props non vengono formattati.
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
Numero minimo di proprietà che un oggetto JavaScript/JSON deve avere per essere formattato. Il valore predefinito è 2. Gli oggetti con meno proprietà restano su una sola riga.
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
Pattern regex personalizzato per individuare gli attributi JavaScript da formattare. Il pattern predefinito corrisponde agli attributi JavaScript più comuni, come onclick, x-*, le direttive di Vue.js, di Alpine.js, di Angular e altro ancora.
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
Il formattatore cerca di formattare la sintassi di template all’interno degli attributi dei tag. Disattivata per impostazione predefinita.
format_attribute_template_tags=true
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags
format_css
Formatta il contenuto dei tag style con css-beautify. Consulta css-beautify per tutte le opzioni di configurazione. La sintassi di template non è pienamente supportata.
[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
Formatta il contenuto dei tag script con js-beautify. Consulta js-beautify per tutte le opzioni di configurazione. La sintassi di template non è pienamente supportata.
[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
Ignora i codici del linter.
ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"
ignore_blocks
Serve a saltare l’indentazione dei figli dei tag di template. I figli vengono trattati come fratelli e indentati di conseguenza.
ignore_blocks="raw,example"
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"
ignore_case
Non tenta di correggere maiuscole e minuscole dei tag html noti. Con questa opzione H009 e H010 non vengono segnalate.
[tool.djlint]
ignore_case=true
ignore_case=true
"ignore_case": true
--ignore-case
include
Include i codici del linter.
include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"
indent
Serve a cambiare l’indentazione del codice. Il valore predefinito è 4 (quattro spazi), oppure l’indent_size di un .editorconfig nella radice del progetto.
indent=3
indent=3
"indent": 3
--indent 3
keep_br_inline
Mantiene <br> sulla riga del testo che interrompe, invece di metterlo su una riga a sé. <hr>, che viene reso come una linea sotto il contenuto che lo precede, non è interessato.
keep_br_inline=true
keep_br_inline=true
"keep_br_inline": true
--keep-br-inline
line_break_after_multiline_tag
Non condensa il contenuto dei tag su più righe nella riga dell’ultimo attributo.
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
Personalizza l’ordine del messaggio di output. Predefinito=“{code} {line} {message} {match}”. Se {filename} non è incluso nel messaggio, l’output viene raggruppato per file e a ogni gruppo viene aggiunta automaticamente un’intestazione.
Variabili opzionali:
{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
Il formattatore cerca di mandare a capo gli attributi dei tag se la loro lunghezza supera questo valore. Il valore predefinito è 70.
max_attribute_length=10
max_attribute_length=10
"max_attribute_length": 10
--max-attribute-length 10
max_blank_lines
Riduce le righe vuote consecutive a x righe. Il valore predefinito è 0, il che significa che le righe vuote vengono rimosse.
max_blank_lines=5
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5
max_line_length
Il formattatore cerca di mettere alcuni tag html e di template su una sola riga invece di mandarli a capo, se la lunghezza della riga non supera questo valore. Il valore predefinito è 120, oppure il max_line_length di un .editorconfig nella radice del progetto.
max_line_length=120
max_line_length=120
"max_line_length": 120
--max-line-length 120
name_endblocks
Scrive il nome del blocco nell’{% endblock %} che lo chiude, quando il blocco è scritto su più righe. È ciò che richiede T003.
name_endblocks=true
name_endblocks=true
"name_endblocks": true
--name-endblocks
no_entity_formatting
Non riscrive un riferimento a entità come il carattere che indica, quindi © resta com’è scritto invece di diventare ©. Le entità con un ruolo sintattico e quelle invisibili non vengono mai riscritte in nessun caso. Con questa opzione H023 continua a segnalare le entità; aggiungi H023 a ignore per mantenere le entità.
no_entity_formatting=true
no_entity_formatting=true
"no_entity_formatting": true
--no-entity-formatting
no_function_formatting
Non tenta di formattare gli argomenti delle chiamate di funzione all’interno delle espressioni {{ }}.
no_function_formatting=true
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting
no_indent_inner_html
Non indenta <head> e <body> sotto <html>, che è il modo in cui il formattatore html predefinito di VS Code dispone un documento.
no_indent_inner_html=true
no_indent_inner_html=true
"no_indent_inner_html": true
--no-indent-inner-html
no_line_after_yaml
Non aggiunge una riga vuota dopo il 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
Non tenta di formattare il contenuto dei tag {% set %}.
no_set_formatting=true
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting
per_file_ignores
Ignora le regole del linter file per file.
[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
Fa sì che il file indicato da configuration abbia la precedenza sul file di configurazione del progetto. configuration indica un file globale, quindi per impostazione predefinita, quando i due impostano la stessa cosa, prevale un pyproject.toml o un .djlintrc accanto ai template. Solo da riga di comando, perché decide come vengono letti i file di configurazione stessi.
--prefer-configuration
preserve_blank_lines
Conserva, dove possibile, le righe vuote. Ideale per file di template non html in cui le righe vuote sono intenzionali.
preserve_blank_lines=true
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines
preserve_class_newlines
Conserva gli a capo all’interno degli attributi class su più righe.
preserve_class_newlines=true
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines
preserve_leading_space
Conserva, dove possibile, gli spazi iniziali del testo. Ideale per file di template non html in cui l’indentazione del testo è intenzionale.
preserve_leading_space=true
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space
profile
Imposta un profilo per il linguaggio di template. Il profilo attiva le regole del linter che si applicano al tuo linguaggio di template e può anche modificare la riformattazione. Ad esempio, in handlebars non ci sono spazi all’interno dei tag {{#if}}.
Opzioni:
- html (predefinito)
- django
- jinja
- nunjucks (per nunjucks e twig)
- handlebars (per handlebars e mustache)
- liquid (shopify, jekyll, eleventy)
- golang (template go; hugo, helm)
- angular
- tera (anche per zola; usa jinja per minijinja)
- askama (template in stile jinja in rust; le espressioni rust non vengono mai riformattate)
profile="django"
profile="django"
"profile": "django"
--profile "django"
quiet
Non stampa il diff durante la riformattazione.
quiet=true
quiet=true
"quiet": true
--quiet
quote_style
Virgolette da usare per le stringhe all’interno dei tag di template: double (il valore predefinito) o single. T002 richiede le stesse virgolette. Il formattatore le usa anche in una condizione, come {% if x == "a" %}, così in uno stesso file la stessa stringa non viene scritta in due modi. Le virgolette degli attributi HTML sono lasciate a H008.
quote_style="single"
quote_style="single"
"quote_style": "single"
--quote-style single
require_pragma
Formatta o analizza solo i file che iniziano con un commento contenente soltanto il testo ‘djlint:on’. Il commento può essere un commento HTML o un commento nel linguaggio di template definito dall’impostazione del profilo. Se non è specificato alcun profilo, è accettato un commento in uno qualsiasi dei linguaggi di template.
<!-- 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
Quando un tag di apertura va a capo, mette il nome del tag, ogni attributo e la parentesi di chiusura su righe separate. Disattivata per impostazione predefinita.
single_attribute_per_line=true
single_attribute_per_line=true
"single_attribute_per_line": true
--single-attribute-per-line
sort_attributes
Ordina gli attributi per nome, con id per primo e class per secondo. Un tag i cui attributi sono condizionati da un tag di template mantiene l’ordine in cui è stato scritto, perché spostarne uno fuori dal suo ramo cambierebbe la pagina.
sort_attributes=true
sort_attributes=true
"sort_attributes": true
--sort-attributes
sort_load_tags
Ordina le librerie in un tag {% load %} di django ed elimina quelle scritte due volte, così {% load static i18n %} diventa {% load i18n static %}. In {% load a b from library %} vengono ordinati i nomi prima di from. Quando due librerie definiscono un tag o un filtro con lo stesso nome, prevale quella caricata per ultima, quindi l’ordinamento può cambiare quale dei due usa il template.
sort_load_tags=true
sort_load_tags=true
"sort_load_tags": true
--sort-load-tags
stdin_filename
Nome di file da usare per per-file-ignores e per i messaggi quando si legge da stdin. Il valore predefinito è “-”.
--stdin-filename templates/index.html
use_gitignore
Aggiunge le esclusioni di .gitignore a quelle predefinite. Disattivata per impostazione predefinita.
use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore