{filename}{line}{code}{message}{match}
Configuration is done either through your projects pyproject.toml file, a djlint.toml or .djlint.toml file, or a .djlintrc file. Command line args will always override any settings in pyproject.toml. Local project settings will always override global configuration files.
The format for pyproject.toml is toml.
[tool.djlint]
<config options>
The format for djlint.toml and .djlint.toml is toml.
<config options>
The format for .djlintrc is json.
{ "option": "value" }
Add an additional blank line after {% <tag> ... %} tag groups.
blank_line_after_tag="load,extends,include"
"blank_line_after_tag": "load,extends,include"
--blank-line-after-tag "load,extends,include"
Add an additional blank line before {% <tag> ... %} tag groups. Blank lines will never be added to start of file or between similar tags.
blank_line_before_tag="load,extends,include"
"blank_line_before_tag": "load,extends,include"
--blank-line-before-tag "load,extends,include"
Use to indent custom code blocks. For example {% toc %}...{% endtoc %}.
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"
Use to indent custom HTML tags. For example <mjml> or <simple-greeting> or <mj-\\w+>
custom_html="mjml,simple-greeting,mj-\w+"
"custom_html": "mjml,simple-greeting,mj-\w+"
--custom-html "mjml,simple-greeting,mj-\\w+"
Override the default exclude paths.
exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."
--exclude ".venv,venv,.tox,.eggs,..."
Add additional paths to the default exclude.
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
Use to only find files with a specific extension.
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"
A list of paths to use as djlint’s source. When this option is specified, the command line source must be - as if using stdin.
[tool.djlint]
files=["index.html"]
"files": [
"index.html"
]
index.html
Format JavaScript and JSON code inside HTML attributes. This will format object literals and JavaScript code in attributes like onclick, x-*, and other JavaScript-related attributes. Objects with fewer properties than format_attribute_js_json_min_props will not be formatted.
format_attribute_js_json=true
"format_attribute_js_json": true
--format-attribute-js-json
Minimum number of properties required in a JavaScript/JSON object for it to be formatted. Default is 2. Objects with fewer properties will remain on a single line.
format_attribute_js_json_min_props=3
"format_attribute_js_json_min_props": 3
--format-attribute-js-json-min-props 3
Custom regex pattern to match JavaScript attributes for formatting. Default pattern matches common JavaScript attributes like onclick, x-*, Vue.js directives, Alpine.js directives, Angular directives, and more.
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-]+)$"
Formatter will attempt to format template syntax inside of tag attributes. Disabled by default.
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags
Format contents of style tags using css-beautify. See css-beautify for all configuration options. Template syntax is not fully supported in supported.
[tool.djlint]
format_css=true
[tool.djlint.css]
indent_size=5
"format_css": true
"css": {
"indent_size": 5
}
--format-css --indent-css 5
Format contents of script tags using js-beautify. See js-beautify for all configuration options. Template syntax is not fully supported in supported.
[tool.djlint]
format_js=true
[tool.djlint.js]
indent_size=5
"format_js": true
"js": {
"indent_size": 5
}
--format-js --indent-js 5
Used to skip indentation on children of template tags. Children will be treated as siblings and indented accordingly.
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"
Do not attempt to fix the case of known html tags.
[tool.djlint]
ignore_case=true
"ignore_case": true
--ignore-case
Use to change the code indentation. Default is 4 (four spaces).
indent=3
"indent": "3"
--indent 3
Do not condense the content of multi-line tags into the line of the last attribute.
line_break_after_multiline_tag=true
"line_break_after_multiline_tag": "true"
--line-break-after-multiline-tag
Customize order of output message. Default=“{code} {line} {message} {match}”. If {filename} is not included in message, then the output will be grouped by file and a header will automatically be added to each group.
Optional variables:
{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}"
Formatter will attempt to wrap tag attributes if the attribute length exceeds this value.
max_attribute_length=10
"max_attribute_length": "10"
--max-attribute-length 10
Consolidate blank lines down to x lines. Default is 0 meaning blank lines will be removed.
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5
Formatter will attempt to put some html and template tags on a single line instead of wrapping them if the line length will not exceed this value.
max_line_length=120
"max_line_length": "120"
--max-line-length 120
Do not attempt to format function contents. ** If you use this option please open a gh issue explaining what caused you to use it.
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting
Do not add a blank line after yaml front matter.
no_line_after_yaml=true
"no_line_after_yaml": true
--no-line-after-yaml
Do not attempt to format set contents. ** If you use this option please open a gh issue explaining what caused you to use it.
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting
Ignore linter rules on a per-file basis.
[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" --per-file-ignores "file_two.html" "H001"
Preserve blank where possible. Ideal for non-html template files where blank lines are intentional.
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines
Preserve line breaks inside multiline class attributes.
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines
Preserve leading space on text, where possible. Ideal for non-html template files where text indent is intentional.
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space
Set a profile for the template language. The profile will enable linter rules that apply to your template language, and may also change reformatting. For example, in handlebars there are no spaces inside {{#if}} tags.
Options:
profile="django"
"profile": "django"
--profile "django"
Only format or lint files that starts with a comment with only the text ‘djlint:on’. The comment can be a HTML comment or a comment in the template language defined by the profile setting. If no profile is specified, a comment in any of the template languages is accepted.
<!-- djlint:on -->
{# djlint:on #}
{% comment %} djlint:on {% endcomment %}
{{ /* djlint:on */ }}
{{!-- djlint:on --}}
require_pragma=true
"require_pragma": true
--require-pragma
Add .gitignore excludes to the default exclude.
use_gitignore=true
"use_gitignore": true
--use-gitignore