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

desde 1.44.0formatterlinter

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

desde 0.4.2formatter

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

desde 1.8.0formatter

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

desde 1.26.0formatterlinter

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

desde 0.3.5formatter

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

desde 0.7.0formatter

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

desde 0.4.0linterformatter

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

desde 0.4.0linterformatter

Añade rutas adicionales a las excluidas por defecto.

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

extension

desde 0.0.5linterformatter

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

desde 1.14.0linterformatter

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

desde 1.37.0formatter

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

desde 1.37.0formatter

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

desde 1.37.0formatter

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

desde 0.6.7formatter

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

desde 1.9.0formatter

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

desde 1.9.0formatter

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

desde 0.1.5linter

Ignora códigos del linter.

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

ignore_blocks

desde 1.24.0formatter

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

desde 1.23.0formatterlinter

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

desde 1.20.0linter

Incluye códigos del linter.

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

indent

desde 0.3.5formatter

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

desde 1.45.0formatter

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

desde 1.27.0formatter

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

desde 0.6.7linter

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

desde 0.5.8formatter

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

desde 1.31.0formatter

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

desde 0.5.7formatter

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

desde 1.45.0formatter

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

desde 1.45.0formatter

No reescribe una referencia de entidad como el carácter que nombra, así que &copy; 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

desde 1.30.2formatter

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

desde 1.45.0formatter

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

desde 1.29.0formatter

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

desde 1.30.2formatter

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

desde 1.7.0linter

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

desde 1.45.0formatterlinter

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

desde 1.3.0formatter

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

desde 1.39.0formatter

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

desde 1.2.0formatter

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

desde 0.4.5linterformatter

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

desde 0.0.9formatterlinter

No imprime el diff al reformatear.

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

quote_style

desde 1.45.0formatterlinter

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

desde 0.5.8formatter

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

desde 1.40.0formatter

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

desde 1.45.0formatter

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

desde 1.47.0formatter

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

desde 1.43.0formatterlinter

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

desde 0.5.9linterformatter

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

version

desde 0.3.9formatterlinter

Muestra la versión y sale.

--version

warn

desde 0.7.6formatterlinter

Devuelve los errores como advertencias.

--warn