구성
구성은 프로젝트의 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
지정한 경로에 일치하는 파일이 하나도 없을 때 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
{% <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
{% <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
알려진 빈 요소 태그에 닫는 표시를 추가해 <img>를 <img />로 바꿉니다. 이 옵션을 사용하면 반대를 요구하는 H018은 보고하지 않습니다.
close_void_tags=true
close_void_tags=true
"close_void_tags": true
--close-void-tags
custom_blocks
사용자 정의 코드 블록을 들여쓸 때 사용합니다. 예: {% toc %}...{% endtoc %}.
custom_blocks="toc,example"
custom_blocks="toc,example"
"custom_blocks": "toc,example"
--custom-blocks "toc,example"
custom_html
사용자 정의 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
기본 제외 경로를 재정의합니다.
exclude=".venv,venv,.tox,.eggs,..."
exclude=".venv,venv,.tox,.eggs,..."
"exclude": ".venv,venv,.tox,.eggs,..."
--exclude ".venv,venv,.tox,.eggs,..."
extend_exclude
기본 제외 경로에 경로를 추가합니다.
extend_exclude=".custom"
extend_exclude=".custom"
"extend_exclude": ".custom"
--extend-exclude ".custom"
extension
특정 확장자를 가진 파일만 찾을 때 사용합니다.
extension="html.dj"
extension="html.dj"
"extension": "html.dj"
--extension "html.dj"
# or
-e "html.dj"
files
djlint의 소스로 사용할 경로 목록입니다. 이 옵션을 지정하면 stdin을 사용할 때처럼 명령줄의 소스는 -여야 합니다. --stdin-filename을 사용하면 -는 어느 경우든 stdin을 뜻합니다.
[tool.djlint]
files=["index.html"]
files=["index.html"]
"files": [
"index.html"
]
index.html
format_attribute_js_json
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
JavaScript/JSON 객체를 포맷하는 데 필요한 최소 속성 개수입니다. 기본값은 2입니다. 속성이 이보다 적은 객체는 한 줄로 유지됩니다.
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
포맷할 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
포맷터가 태그 속성 안의 템플릿 구문을 포맷하려고 합니다. 기본으로 꺼져 있습니다.
format_attribute_template_tags=true
format_attribute_template_tags=true
"format_attribute_template_tags": true
--format-attribute-template-tags
format_css
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
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
무시할 린터 코드입니다.
ignore="H014,H015"
ignore="H014,H015"
"ignore": "H014,H015"
--ignore "H014,H015"
ignore_blocks
템플릿 태그의 자식에 들여쓰기를 적용하지 않을 때 사용합니다. 자식은 형제로 취급되어 그에 맞게 들여쓰기됩니다.
ignore_blocks="raw,example"
ignore_blocks="raw,example"
"ignore_blocks": "raw,example"
--ignore-blocks "raw,example"
ignore_case
알려진 HTML 태그의 대소문자를 고치지 않습니다. 이 옵션을 사용하면 H009와 H010은 보고하지 않습니다.
[tool.djlint]
ignore_case=true
ignore_case=true
"ignore_case": true
--ignore-case
include
포함할 린터 코드입니다.
include="H014,H015"
include="H014,H015"
"include": "H014,H015"
--include "H014,H015"
indent
코드 들여쓰기를 바꿀 때 사용합니다. 기본값은 4(공백 네 칸)이며, 프로젝트 루트에 .editorconfig가 있으면 그 파일의 indent_size를 사용합니다.
indent=3
indent=3
"indent": 3
--indent 3
keep_br_inline
<br>을 별도의 줄로 옮기지 않고, 줄을 바꾸는 텍스트와 같은 줄에 둡니다. 앞의 내용 아래에 가로줄로 렌더링되는 <hr>에는 영향을 주지 않습니다.
keep_br_inline=true
keep_br_inline=true
"keep_br_inline": true
--keep-br-inline
line_break_after_multiline_tag
여러 줄에 걸친 태그의 내용을 마지막 속성의 줄로 합치지 않습니다.
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
출력 메시지의 순서를 바꿉니다. 기본값=“{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
속성 길이가 이 값을 넘으면 포맷터가 태그 속성을 줄바꿈하려고 합니다. 기본값은 70입니다.
max_attribute_length=10
max_attribute_length=10
"max_attribute_length": 10
--max-attribute-length 10
max_blank_lines
연속된 빈 줄을 최대 x줄로 줄입니다. 기본값은 0이며, 빈 줄을 모두 제거한다는 뜻입니다.
max_blank_lines=5
max_blank_lines=5
"max_blank_lines": 5
--max-blank-lines 5
max_line_length
줄 길이가 이 값을 넘지 않는다면, 포맷터는 일부 HTML 태그와 템플릿 태그를 여러 줄로 나누지 않고 한 줄에 두려고 합니다. 기본값은 120이며, 프로젝트 루트에 .editorconfig가 있으면 그 파일의 max_line_length를 사용합니다.
max_line_length=120
max_line_length=120
"max_line_length": 120
--max-line-length 120
name_endblocks
여러 줄에 걸쳐 쓴 블록을 닫는 {% endblock %}에 블록의 이름을 씁니다. T003이 요구하는 동작입니다.
name_endblocks=true
name_endblocks=true
"name_endblocks": true
--name-endblocks
no_entity_formatting
엔티티 참조를 그것이 나타내는 문자로 바꾸지 않으므로, ©는 ©가 되지 않고 쓴 그대로 남습니다. 구문을 담당하는 엔티티와 보이지 않는 문자의 엔티티는 어느 쪽이든 바꾸지 않습니다. 이 옵션을 사용해도 H023은 엔티티를 계속 보고하므로, 엔티티를 유지하려면 ignore에 H023을 추가하세요.
no_entity_formatting=true
no_entity_formatting=true
"no_entity_formatting": true
--no-entity-formatting
no_function_formatting
{{ }} 표현식 안에 있는 함수 호출의 인수를 포맷하지 않습니다.
no_function_formatting=true
no_function_formatting=true
"no_function_formatting": true
--no-function-formatting
no_indent_inner_html
<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
yaml 프런트 매터 뒤에 빈 줄을 추가하지 않습니다.
no_line_after_yaml=true
no_line_after_yaml=true
"no_line_after_yaml": true
--no-line-after-yaml
no_set_formatting
{% set %} 태그의 내용을 포맷하지 않습니다.
no_set_formatting=true
no_set_formatting=true
"no_set_formatting": true
--no-set-formatting
per_file_ignores
파일별로 린터 규칙을 무시합니다.
[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
configuration으로 지정한 파일이 프로젝트 자체의 구성 파일보다 우선하게 합니다. configuration은 전역 파일을 지정하므로, 기본적으로는 둘이 같은 항목을 설정할 때 템플릿 옆에 있는 pyproject.toml이나 .djlintrc가 우선합니다. 구성 파일 자체를 읽는 방식을 정하는 옵션이므로 명령줄에서만 쓸 수 있습니다.
--prefer-configuration
preserve_blank_lines
가능한 한 빈 줄을 유지합니다. 빈 줄이 의도적인, HTML이 아닌 템플릿 파일에 적합합니다.
preserve_blank_lines=true
preserve_blank_lines=true
"preserve_blank_lines": true
--preserve-blank-lines
preserve_class_newlines
여러 줄에 걸친 class 속성 안의 줄바꿈을 유지합니다.
preserve_class_newlines=true
preserve_class_newlines=true
"preserve_class_newlines": true
--preserve-class-newlines
preserve_leading_space
가능한 한 텍스트 앞쪽의 공백을 유지합니다. 텍스트 들여쓰기가 의도적인, HTML이 아닌 템플릿 파일에 적합합니다.
preserve_leading_space=true
preserve_leading_space=true
"preserve_leading_space": true
--preserve-leading-space
profile
템플릿 언어의 프로필을 설정합니다. 프로필은 해당 템플릿 언어에 적용되는 린터 규칙을 켜며, 다시 포맷하는 방식을 바꿀 수도 있습니다. 예를 들어 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
다시 포맷할 때 diff를 출력하지 않습니다.
quiet=true
quiet=true
"quiet": true
--quiet
quote_style
템플릿 태그 안의 문자열에 사용할 따옴표로, double(기본값)이나 single 중 하나입니다. T002도 같은 따옴표를 요구합니다. 포맷터는 {% if x == "a" %} 같은 조건에서도 이 따옴표를 사용하므로, 한 파일 안에서 같은 문자열을 두 가지 방식으로 쓰지 않게 됩니다. HTML 속성의 따옴표는 H008이 담당합니다.
quote_style="single"
quote_style="single"
"quote_style": "single"
--quote-style single
require_pragma
'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
여는 태그를 줄바꿈할 때 태그 이름, 각 속성, 닫는 꺾쇠괄호를 각각 별도의 줄에 둡니다. 기본으로 꺼져 있습니다.
single_attribute_per_line=true
single_attribute_per_line=true
"single_attribute_per_line": true
--single-attribute-per-line
sort_attributes
속성을 이름순으로 정렬하되 id를 첫 번째, class를 두 번째에 둡니다. 템플릿 태그로 감싼 속성이 있는 태그는 쓴 순서를 유지합니다. 속성을 분기 밖으로 옮기면 페이지가 바뀌기 때문입니다.
sort_attributes=true
sort_attributes=true
"sort_attributes": true
--sort-attributes
sort_load_tags
django {% load %} 태그의 라이브러리를 정렬하고 두 번 쓴 라이브러리를 제거하므로, {% load static i18n %}은 {% load i18n static %}이 됩니다. {% load a b from library %}에서는 from 앞의 이름을 정렬합니다. 두 라이브러리가 같은 이름의 태그나 필터를 정의하면 마지막에 불러온 것이 우선하므로, 정렬하면 템플릿이 사용하는 쪽이 바뀔 수 있습니다.
sort_load_tags=true
sort_load_tags=true
"sort_load_tags": true
--sort-load-tags
stdin_filename
stdin에서 읽을 때 per-file-ignores와 메시지에 사용할 파일 이름입니다. 기본값은 "-"입니다.
--stdin-filename templates/index.html
use_gitignore
.gitignore의 제외 항목을 기본 제외 경로에 추가합니다. 기본으로 꺼져 있습니다.
use_gitignore=true
use_gitignore=true
"use_gitignore": true
--use-gitignore