設定

設定は、プロジェクトの pyproject.toml ファイル、djlint.toml または .djlint.toml ファイル、あるいは .djlintrc ファイルで行います。コマンドライン引数は、設定ファイルのどの設定よりも常に優先されます。--prefer-configuration を指定しない限り、プロジェクトのローカル設定は --configuration で指定したグローバル設定ファイルよりも優先されます。

pyproject.toml の形式は toml です。

[tool.djlint]
<config options>

djlint.toml と .djlint.toml の形式は toml です。

<config options>

.djlintrc の形式は json です。

{ "option": "value" }

オプション


allow_empty_input

導入バージョン 1.44.0formatterlinter

指定したパスに一致するファイルがまったくない場合に、2 ではなく 0 で終了します。見つかったうえで exclude、extend_exclude、use_gitignore、require_pragma によってスキップされたファイルは、もともと 0 で終了します。デフォルトでは無効です。

allow_empty_input=true
allow_empty_input=true
"allow_empty_input": true
--allow-empty-input

blank_line_after_tag

導入バージョン 0.4.2formatter

{% <tag> ... %} タグのまとまりの後に空行を追加します。ブロックの末尾に空行が追加されることはありません。

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

導入バージョン 1.8.0formatter

{% <tag> ... %} タグのまとまりの前に空行を追加します。ファイルやブロックの先頭、または似たタグのあいだに空行が追加されることはありません。

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

導入バージョン 1.26.0formatterlinter

既知の空要素のタグに閉じ記号を追加し、<img> を <img /> にします。このオプションを指定すると、逆を求める H018 は報告されません。

close_void_tags=true
close_void_tags=true
"close_void_tags": true
--close-void-tags

custom_blocks

導入バージョン 0.3.5formatter

カスタムのコードブロックをインデントするために使います。例:{% toc %}...{% endtoc %}。

custom_blocks="toc,example"
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"

custom_html

導入バージョン 0.7.0formatter

カスタムの 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+"
--custom-html "mjml,simple-greeting,mj-\\w+"

exclude

導入バージョン 0.4.0linterformatter

デフォルトの除外パスを上書きします。

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

extend_exclude

導入バージョン 0.4.0linterformatter

デフォルトの除外パスにパスを追加します。

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

extension

導入バージョン 0.0.5linterformatter

特定の拡張子を持つファイルだけを探すために使います。

extension="html.dj"
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"

files

導入バージョン 1.14.0linterformatter

djlint のソースとして使うパスのリスト。このオプションを指定した場合、コマンドラインのソースは、標準入力を使う場合と同じく - にする必要があります。--stdin-filename を指定すると、- はどの場合でも標準入力を意味します。

[tool.djlint]
files=["index.html"]
files=["index.html"]
"files": [
    "index.html"
]
index.html

format_attribute_js_json

導入バージョン 1.37.0formatter

HTML 属性内の JavaScript と JSON のコードをフォーマットします。onclick、x-* などの JavaScript 関連の属性にあるオブジェクトリテラルや JavaScript のコードがフォーマットされます。プロパティの数が format_attribute_js_json_min_props より少ないオブジェクトはフォーマットされません。

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

導入バージョン 1.37.0formatter

JavaScript/JSON オブジェクトをフォーマットするのに必要なプロパティの最小数。デフォルトは 2 です。プロパティがこれより少ないオブジェクトは 1 行のまま残ります。

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

導入バージョン 1.37.0formatter

フォーマット対象の JavaScript 属性に一致させる、カスタムの正規表現パターン。デフォルトのパターンは、onclick、x-*、Vue.js のディレクティブ、Alpine.js のディレクティブ、Angular のディレクティブなど、一般的な JavaScript 属性に一致します。

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

導入バージョン 0.6.7formatter

フォーマッターは、タグの属性内のテンプレート構文をフォーマットしようとします。デフォルトでは無効です。

format_attribute_template_tags=true
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags

format_css

導入バージョン 1.9.0formatter

css-beautify を使って style タグの中身をフォーマットします。すべての設定オプションについては css-beautify を参照してください。テンプレート構文は完全にはサポートされていません。

[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

導入バージョン 1.9.0formatter

js-beautify を使って script タグの中身をフォーマットします。すべての設定オプションについては js-beautify を参照してください。テンプレート構文は完全にはサポートされていません。

[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

導入バージョン 0.1.5linter

リンターのコードを無視します。

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

ignore_blocks

導入バージョン 1.24.0formatter

テンプレートタグの子要素のインデントをスキップするために使います。子要素は兄弟要素として扱われ、それに応じてインデントされます。

ignore_blocks="raw,example"
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"

ignore_case

導入バージョン 1.23.0formatterlinter

既知の html タグの大文字・小文字を修正しません。このオプションを指定すると、H009 と H010 は報告されません。

[tool.djlint]
ignore_case=true
ignore_case=true
"ignore_case": true
--ignore-case

include

導入バージョン 1.20.0linter

リンターのコードを含めます。

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

indent

導入バージョン 0.3.5formatter

コードのインデントを変更するために使います。デフォルトは 4(スペース 4 つ)、またはプロジェクトのルートにある .editorconfig の indent_size です。

indent=3
indent=3
"indent": 3
--indent 3

keep_br_inline

導入バージョン 1.45.0formatter

<br> を独立した行に置かず、改行するテキストと同じ行に残します。直前のコンテンツの下に罫線として表示される <hr> には影響しません。

keep_br_inline=true
keep_br_inline=true
"keep_br_inline": true
--keep-br-inline

line_break_after_multiline_tag

導入バージョン 1.27.0formatter

複数行にわたるタグの中身を、最後の属性の行に詰めないようにします。

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

導入バージョン 0.6.7linter

出力メッセージの順序をカスタマイズします。デフォルトは “{code} {line} {message} {match}” です。メッセージに {filename} が含まれていない場合、出力はファイルごとにグループ化され、各グループには自動的にヘッダーが追加されます。

使用できる変数:

  • {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

導入バージョン 0.5.8formatter

属性の長さがこの値を超える場合、フォーマッターはタグの属性を折り返そうとします。デフォルトは 70 です。

max_attribute_length=10
max_attribute_length=10
"max_attribute_length": 10
--max-attribute-length 10

max_blank_lines

導入バージョン 1.31.0formatter

連続した空行を x 行までにまとめます。デフォルトは 0 で、空行は削除されます。

max_blank_lines=5
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5

max_line_length

導入バージョン 0.5.7formatter

行の長さがこの値を超えない場合、フォーマッターは一部の html タグとテンプレートタグを折り返さずに 1 行に収めようとします。デフォルトは 120、またはプロジェクトのルートにある .editorconfig の max_line_length です。

max_line_length=120
max_line_length=120
"max_line_length": 120
--max-line-length 120

name_endblocks

導入バージョン 1.45.0formatter

複数行にわたって書かれたブロックについて、それを閉じる {% endblock %} にブロックの名前を書き込みます。これは T003 が求めていることです。

name_endblocks=true
name_endblocks=true
"name_endblocks": true
--name-endblocks

no_entity_formatting

導入バージョン 1.45.0formatter

実体参照を、それが表す文字に書き換えません。たとえば &copy; は © にならず、書かれたまま残ります。構文上の意味を持つ実体参照と目に見えない文字の実体参照は、どちらにしても書き換えられません。このオプションを指定しても H023 は実体参照を報告します。実体参照を残すには、H023 を ignore に追加してください。

no_entity_formatting=true
no_entity_formatting=true
"no_entity_formatting": true
--no-entity-formatting

no_function_formatting

導入バージョン 1.30.2formatter

{{ }} 式の中にある関数呼び出しの引数をフォーマットしません。

no_function_formatting=true
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting

no_indent_inner_html

導入バージョン 1.45.0formatter

<head> と <body> を <html> の下でインデントしません。VS Code のデフォルトの html フォーマッターは、文書をこのようにレイアウトします。

no_indent_inner_html=true
no_indent_inner_html=true
"no_indent_inner_html": true
--no-indent-inner-html

no_line_after_yaml

導入バージョン 1.29.0formatter

yaml のフロントマターの後に空行を追加しません。

no_line_after_yaml=true
no_line_after_yaml=true
"no_line_after_yaml": true
--no-line-after-yaml

no_set_formatting

導入バージョン 1.30.2formatter

{% set %} タグの中身をフォーマットしません。

no_set_formatting=true
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting

per_file_ignores

導入バージョン 1.7.0linter

ファイルごとにリンターのルールを無視します。

[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

導入バージョン 1.45.0formatterlinter

configuration で指定したファイルが、プロジェクト自身の設定ファイルを上書きするようにします。configuration はグローバルなファイルを指定するものなので、デフォルトでは、両者が同じ項目を設定している場合、テンプレートの横にある pyproject.toml や .djlintrc が優先されます。設定ファイル自体の読み込み方を決めるものなので、コマンドラインでのみ指定できます。

--prefer-configuration

preserve_blank_lines

導入バージョン 1.3.0formatter

可能な場合、空行を保持します。空行が意図的な、html 以外のテンプレートファイルに最適です。

preserve_blank_lines=true
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines

preserve_class_newlines

導入バージョン 1.39.0formatter

複数行にわたる class 属性の中の改行を保持します。

preserve_class_newlines=true
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines

preserve_leading_space

導入バージョン 1.2.0formatter

可能な場合、テキストの先頭のスペースを保持します。テキストのインデントが意図的な、html 以外のテンプレートファイルに最適です。

preserve_leading_space=true
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space

profile

導入バージョン 0.4.5linterformatter

テンプレート言語のプロファイルを設定します。プロファイルは、そのテンプレート言語に当てはまるリンターのルールを有効にし、再フォーマットの方法も変えることがあります。たとえば handlebars では、{{#if}} タグの内側にスペースを入れません。

選択肢:

  • html(デフォルト)
  • django
  • jinja
  • nunjucks(nunjucks と twig 用)
  • handlebars(handlebars と mustache 用)
  • liquid(shopify、jekyll、eleventy)
  • golang(go テンプレート。hugo、helm)
  • angular
  • tera(zola にも対応。minijinja には jinja を使用)
  • askama(rust の jinja 形式のテンプレート。rust の式は再フォーマットされません)
profile="django"
profile="django"
"profile": "django"
--profile "django"

quiet

導入バージョン 0.0.9formatterlinter

再フォーマット時に差分を表示しません。

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

quote_style

導入バージョン 1.45.0formatterlinter

テンプレートタグ内の文字列に使う引用符で、double(デフォルト)または single のいずれかです。T002 も同じ引用符を求めます。フォーマッターは {% if x == "a" %} のような条件の中でもこの引用符を使うため、1 つのファイルで同じ文字列が 2 通りの書き方になることはありません。HTML 属性の引用符は H008 に任されます。

quote_style="single"
quote_style="single"
"quote_style": "single"
--quote-style single

require_pragma

導入バージョン 0.5.8formatter

‘djlint:on’ というテキストだけを含むコメントで始まるファイルだけをフォーマットまたはリントします。コメントは、HTML コメントか、profile 設定で指定したテンプレート言語のコメントにできます。プロファイルが指定されていない場合は、どのテンプレート言語のコメントでも受け付けます。

<!-- 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

導入バージョン 1.40.0formatter

開始タグが折り返されるとき、タグ名、各属性、閉じかっこをそれぞれ別の行に置きます。デフォルトでは無効です。

single_attribute_per_line=true
single_attribute_per_line=true
"single_attribute_per_line": true
--single-attribute-per-line

sort_attributes

導入バージョン 1.45.0formatter

属性を名前順に並べ替え、id を最初に、class を 2 番目に置きます。属性がテンプレートタグで制御されているタグは、書かれた順序のままになります。属性を分岐の外に移すとページが変わってしまうためです。

sort_attributes=true
sort_attributes=true
"sort_attributes": true
--sort-attributes

sort_load_tags

導入バージョン 1.47.0formatter

django の {% load %} タグ内のライブラリを並べ替え、2 回書かれたものを削除します。たとえば {% load static i18n %} は {% load i18n static %} になります。{% load a b from library %} では、from の前の名前が並べ替えられます。2 つのライブラリが同じ名前のタグやフィルターを定義している場合は最後に読み込まれたものが優先されるため、並べ替えによってテンプレートが使うものが変わることがあります。

sort_load_tags=true
sort_load_tags=true
"sort_load_tags": true
--sort-load-tags

stdin_filename

導入バージョン 1.43.0formatterlinter

標準入力から読み込むときに、per-file-ignores とメッセージに使うファイル名。デフォルトは “-” です。

--stdin-filename templates/index.html

use_gitignore

導入バージョン 0.5.9linterformatter

.gitignore の除外設定をデフォルトの除外パスに追加します。デフォルトでは無効です。

use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore

version

導入バージョン 0.3.9formatterlinter

バージョンを表示して終了します。

--version

warn

導入バージョン 0.7.6formatterlinter

エラーを警告として返します。

--warn