Configuración
La configuración se hace a través del archivo pyproject.toml de tu proyecto, de un archivo djlint.toml o .djlint.toml, o de un archivo .djlintrc. Los argumentos de la línea de comandos siempre prevalecen sobre cualquier ajuste de los archivos de configuración. Los ajustes locales del proyecto prevalecen sobre un archivo de configuración global indicado con --configuration, salvo que se use --prefer-configuration.
El formato de pyproject.toml es toml.
[tool.djlint]
<config options>
El formato de djlint.toml y .djlint.toml es toml.
<config options>
El formato de .djlintrc es json.
{ "option": "value" }
Opciones
allow_empty_input
Sale con 0 en lugar de 2 cuando las rutas indicadas no coinciden con ningún archivo. Los archivos que se encontraron y luego se omitieron por exclude, extend_exclude, use_gitignore o require_pragma ya salen con 0. Desactivado por defecto.
allow_empty_input=true
allow_empty_input=true
"allow_empty_input": true
--allow-empty-input
blank_line_after_tag
Añade una línea en blanco adicional después de los grupos de etiquetas {% <tag> ... %}. Nunca se añaden líneas en blanco al final de un bloque.
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
Añade una línea en blanco adicional antes de los grupos de etiquetas {% <tag> ... %}. Nunca se añaden líneas en blanco al principio de un archivo o de un bloque, ni entre etiquetas similares.
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
Añade una marca de cierre a las etiquetas vacías conocidas, de modo que <img> se convierte en <img />. H018, que pide lo contrario, no se notifica con esta opción.
close_void_tags=true
close_void_tags=true
"close_void_tags": true
--close-void-tags
custom_blocks
Sirve para indentar bloques de código personalizados. Por ejemplo, {% toc %}...{% endtoc %}.
custom_blocks="toc,example"
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"
custom_html
Sirve para indentar etiquetas HTML personalizadas. Por ejemplo, <mjml>, <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
Sobrescribe las rutas excluidas por defecto.
exclude=".venv,venv,.tox,.eggs,..."
exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."
--exclude ".venv,venv,.tox,.eggs,..."
extend_exclude
Añade rutas adicionales a las excluidas por defecto.
extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
extension
Sirve para buscar solo archivos con una extensión concreta.
extension="html.dj"
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"
files
Una lista de rutas que djlint usa como origen. Cuando se indica esta opción, el origen en la línea de comandos debe ser -, como si se usara stdin. --stdin-filename hace que - signifique stdin en cualquier caso.
[tool.djlint]
files=["index.html"]
files=["index.html"]
"files": [
"index.html"
]
index.html
format_attribute_js_json
Formatea el código JavaScript y JSON dentro de los atributos HTML. Formatea los literales de objeto y el código JavaScript de atributos como onclick, x-* y otros atributos relacionados con JavaScript. Los objetos con menos propiedades que format_attribute_js_json_min_props no se formatean.
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
Número mínimo de propiedades que debe tener un objeto JavaScript/JSON para formatearse. El valor por defecto es 2. Los objetos con menos propiedades se quedan en una sola línea.
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
Patrón de expresión regular personalizado para detectar los atributos JavaScript que se formatean. El patrón por defecto detecta atributos JavaScript habituales como onclick, x-*, las directivas de Vue.js, las de Alpine.js, las de Angular y más.
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
El formateador intentará formatear la sintaxis de plantilla dentro de los atributos de las etiquetas. Desactivado por defecto.
format_attribute_template_tags=true
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags
format_css
Formatea el contenido de las etiquetas style con css-beautify. Consulta css-beautify para ver todas las opciones de configuración. La sintaxis de plantillas no es totalmente compatible.
[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
Formatea el contenido de las etiquetas script con js-beautify. Consulta js-beautify para ver todas las opciones de configuración. La sintaxis de plantillas no es totalmente compatible.
[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 códigos del linter.
ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"
ignore_blocks
Sirve para omitir la indentación de los hijos de las etiquetas de plantilla. Los hijos se tratan como hermanos y se indentan en consecuencia.
ignore_blocks="raw,example"
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"
ignore_case
No intenta corregir las mayúsculas y minúsculas de las etiquetas html conocidas. H009 y H010 no se notifican con esta opción.
[tool.djlint]
ignore_case=true
ignore_case=true
"ignore_case": true
--ignore-case
include
Incluye códigos del linter.
include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"
indent
Sirve para cambiar la indentación del código. El valor por defecto es 4 (cuatro espacios), o el indent_size de un .editorconfig en la raíz del proyecto.
indent=3
indent=3
"indent": 3
--indent 3
keep_br_inline
Mantiene <br> en la línea del texto que corta, en lugar de darle una línea propia. <hr>, que se renderiza como una línea horizontal bajo el contenido anterior, no se ve afectado.
keep_br_inline=true
keep_br_inline=true
"keep_br_inline": true
--keep-br-inline
line_break_after_multiline_tag
No condensa el contenido de las etiquetas de varias líneas en la línea del último atributo.
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
Personaliza el orden del mensaje de salida. Por defecto=“{code} {line} {message} {match}”. Si {filename} no se incluye en el mensaje, la salida se agrupa por archivo y se añade automáticamente una cabecera a cada grupo.
Variables opcionales:
{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
El formateador intentará partir los atributos de una etiqueta si su longitud supera este valor. El valor por defecto es 70.
max_attribute_length=10
max_attribute_length=10
"max_attribute_length": 10
--max-attribute-length 10
max_blank_lines
Reduce las líneas en blanco consecutivas a x líneas. El valor por defecto es 0, lo que significa que se eliminan las líneas en blanco.
max_blank_lines=5
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5
max_line_length
El formateador intentará poner algunas etiquetas html y de plantilla en una sola línea en lugar de partirlas, si la longitud de la línea no supera este valor. El valor por defecto es 120, o el max_line_length de un .editorconfig en la raíz del proyecto.
max_line_length=120
max_line_length=120
"max_line_length": 120
--max-line-length 120
name_endblocks
Escribe el nombre del bloque en el {% endblock %} que lo cierra, cuando el bloque ocupa varias líneas. Es lo que pide T003.
name_endblocks=true
name_endblocks=true
"name_endblocks": true
--name-endblocks
no_entity_formatting
No reescribe una referencia de entidad como el carácter que nombra, así que © se deja tal como está escrito en lugar de convertirse en ©. Las entidades con función sintáctica, y las invisibles, nunca se reescriben en ningún caso. H023 sigue notificando las entidades con esta opción; añade H023 a ignore para conservarlas.
no_entity_formatting=true
no_entity_formatting=true
"no_entity_formatting": true
--no-entity-formatting
no_function_formatting
No intenta formatear los argumentos de las llamadas a funciones dentro de las expresiones {{ }}.
no_function_formatting=true
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting
no_indent_inner_html
No indenta <head> ni <body> bajo <html>, que es como el formateador html por defecto de VS Code organiza 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
No añade una línea en blanco después del front matter de yaml.
no_line_after_yaml=true
no_line_after_yaml=true
"no_line_after_yaml": true
--no-line-after-yaml
no_set_formatting
No intenta formatear el contenido de las etiquetas {% set %}.
no_set_formatting=true
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting
per_file_ignores
Ignora reglas del linter archivo por archivo.
[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
Hace que el archivo indicado por configuration prevalezca sobre el propio archivo de configuración del proyecto. configuration indica un archivo global, así que por defecto un pyproject.toml o .djlintrc junto a las plantillas prevalece cuando ambos definen lo mismo. Solo en la línea de comandos, ya que decide cómo se leen los propios archivos de configuración.
--prefer-configuration
preserve_blank_lines
Conserva las líneas en blanco cuando es posible. Ideal para archivos de plantilla que no son html, donde las líneas en blanco son intencionadas.
preserve_blank_lines=true
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines
preserve_class_newlines
Conserva los saltos de línea dentro de los atributos class de varias líneas.
preserve_class_newlines=true
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines
preserve_leading_space
Conserva el espacio inicial del texto, cuando es posible. Ideal para archivos de plantilla que no son html, donde la sangría del texto es intencionada.
preserve_leading_space=true
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space
profile
Define un perfil para el lenguaje de plantillas. El perfil activa las reglas del linter que se aplican a tu lenguaje de plantillas, y también puede cambiar el reformateo. Por ejemplo, en handlebars no hay espacios dentro de las etiquetas {{#if}}.
Opciones:
- html (por defecto)
- django
- jinja
- nunjucks (para nunjucks y twig)
- handlebars (para handlebars y mustache)
- liquid (shopify, jekyll, eleventy)
- golang (plantillas de go; hugo, helm)
- angular
- tera (también para zola; usa jinja para minijinja)
- askama (plantillas de estilo jinja en rust; las expresiones de rust nunca se reformatean)
profile="django"
profile="django"
"profile": "django"
--profile "django"
quiet
No imprime el diff al reformatear.
quiet=true
quiet=true
"quiet": true
--quiet
quote_style
Comillas que se usan en las cadenas dentro de las etiquetas de plantilla: double (el valor por defecto) o single. T002 exige las mismas comillas. El formateador también las usa en una condición, como {% if x == "a" %}, para que un mismo archivo no escriba la misma cadena de dos formas. El entrecomillado de los atributos HTML se deja a H008.
quote_style="single"
quote_style="single"
"quote_style": "single"
--quote-style single
require_pragma
Solo formatea o analiza los archivos que empiezan con un comentario cuyo único texto es ‘djlint:on’. El comentario puede ser un comentario HTML o un comentario del lenguaje de plantillas definido en el ajuste profile. Si no se indica ningún perfil, se acepta un comentario de cualquiera de los lenguajes de plantillas.
<!-- 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
Cuando una etiqueta de apertura se parte en varias líneas, pone el nombre de la etiqueta, cada atributo y el corchete angular de cierre en líneas separadas. Desactivado por defecto.
single_attribute_per_line=true
single_attribute_per_line=true
"single_attribute_per_line": true
--single-attribute-per-line
sort_attributes
Ordena los atributos por nombre, con id primero y class segundo. Una etiqueta cuyos atributos están condicionados por una etiqueta de plantilla conserva el orden en que se escribió, ya que sacar un atributo de su rama cambiaría la página.
sort_attributes=true
sort_attributes=true
"sort_attributes": true
--sort-attributes
sort_load_tags
Ordena las bibliotecas de una etiqueta {% load %} de django y quita las que están escritas dos veces, de modo que {% load static i18n %} se convierte en {% load i18n static %}. En {% load a b from library %} se ordenan los nombres que van antes de from. Cuando dos bibliotecas definen una etiqueta o un filtro con el mismo nombre, prevalece la que se carga en último lugar, así que ordenarlas puede cambiar cuál usa la plantilla.
sort_load_tags=true
sort_load_tags=true
"sort_load_tags": true
--sort-load-tags
stdin_filename
Nombre de archivo que se usa para per-file-ignores y en los mensajes al leer de stdin. Por defecto es “-”.
--stdin-filename templates/index.html
use_gitignore
Añade las exclusiones de .gitignore a las exclusiones por defecto. Desactivado por defecto.
use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore