Configuration

Configuration is done either through your projects pyproject.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 .djlintrc is json.

{
"option": "value"
}

ignore

Ignore linter codes.

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

extension

Use to only find files with a specific extension.

extension="html.dj"
"extension": "html.dj"

custom_blocks

Use to indent custom code blocks. For example {% toc %}...{% endtoc %}

custom_blocks="toc,example"
"custom_blocks": "toc,example"

custom_html

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+"

indent

Use to change the code indentation. Default is 4 (four spaces).

indent=3
"indent": "3"

exclude

Override the default exclude paths.

exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."

extend_exclude

Add additional paths to the default exclude.

extend_exclude=".custom"
"extend_exclude": ".custom"

blank_line_after_tag

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_before_tag

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"

profile

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:

  • html (default)
  • django
  • jinja
  • nunjucks (for nunjucks and twig)
  • handlebars (for handlebars and mustache)
  • golang
  • angular

profile="django"
"profile": "django"

require_pragma

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"

max_line_length

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_attribute_length

Formatter will attempt to wrap tag attributes if the attribute length exceeds this value.

max_attribute_length=10
"max_attribute_length": "10"

use_gitignore

Add .gitignore excludes to the default exclude.

use_gitignore=True
"use_gitignore": "True"

format_attribute_template_tags

Formatter will attempt to format template syntax inside of tag attributes. Disabled by default.

format_attribute_template_tags=true
"format_attribute_template_tags": "true"

linter_output_format

Customize order of output message. Default=“{code} {line} {message} {match}”. If {filename} is not include 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}"

preserve_leading_space

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_blank_lines

Preserve blank where possible. Ideal for non-html template files where blank lines are intentional.

preserve_blank_lines=true
"preserve_blank_lines": true

per_file_ignores

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"
}

format_js

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_css

Format contents of script 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
}

files

A list of paths to use as djlint’s source. When this option is specfied, the command line souce must be - as if using stdin.

[tool.djlint]
files=["index.html"]
"files": [
"index.html"
}
Edit this page Updated Mar 6, 2023