Интеграции
Существует несколько интеграций редакторов для djLint.
GitHub Actions
В workflow GitHub Actions djLint выводит каждую находку как аннотацию, поэтому она видна прямо в диффе пул-реквеста. Настраивать ничего не нужно: djLint сам определяет workflow и переключает вывод.
- run: pip install djlint
- run: djlint . --lint --profile django
--no-github-output возвращает обычный консольный вывод, а --github-output включает аннотации за пределами Actions.
Аннотации привязаны к одному пул-реквесту. Чтобы хранить находки во вкладке Security репозитория вместе с историей по запускам, запишите их в формате SARIF и загрузите файл:
- run: djlint . --lint --sarif > djlint.sarif
continue-on-error: true
- uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: djlint.sarif
Для загрузки у задачи или всего workflow должно быть разрешение security-events: write.
--sarif выводит в stdout документ SARIF 2.1.0 и больше ничего, поэтому вывод можно перенаправить в файл, как выше. В нём перечислены все включённые правила со ссылками на их документацию, у каждой находки указаны строка и столбец, а с --check файл, который был бы переформатирован, попадает в отчёт под правилом formatting. Тот же формат читают Azure DevOps, GitLab и большинство редакторов.
Pre-Commit
djLint можно использовать как pre-commit хук в качестве как линтера, так и форматировщика.
Репозиторий предоставляет несколько предварительно настроенных хуков для определенных профилей djLint (он просто задает аргумент --profile и указывает pre-commit, какие расширения файлов искать):
djlintдля линтинга иdjlint-reformatдля форматирования
Будет искать файлы, соответствующие*.html, без установки--profile.djlint-djangoиdjlint-reformat-django
Будет искать файлы, соответствующие*.html, и устанавливать--profile=django.djlint-jinjaиdjlint-reformat-jinja
Будет искать файлы, соответствующие*.j2,*.jinjaили*.jinja2, и устанавливать--profile=jinja.djlint-nunjucksиdjlint-reformat-nunjucks
Будет искать файлы, соответствующие*.njk, и устанавливать--profile=nunjucks.djlint-handlebarsиdjlint-reformat-handlebars
Будет искать файлы, соответствующие*.hbs, и устанавливать--profile=handlebars.djlint-liquidиdjlint-reformat-liquid
Будет искать файлы, соответствующие*.html, и устанавливать--profile=liquid.djlint-golangиdjlint-reformat-golang
Будет искать файлы, соответствующие*.gotmpl, и устанавливать--profile=golang.djlint-teraиdjlint-reformat-tera
Будет искать файлы, соответствующие*.html, и устанавливать--profile=tera.djlint-askamaиdjlint-reformat-askama
Будет искать файлы, соответствующие*.html, и устанавливать--profile=askama.
Обратите внимание, что эти предопределенные хуки иногда слишком консервативны в принимаемых ими входных данных (ваши шаблоны могут использовать другое расширение), поэтому pre-commit явно позволяет вам переопределять любые из этих предопределенных опций. См. pre-commit документы для дополнительной настройки.
Пример Django по умолчанию
repos:
- repo: https://github.com/djlint/djLint
rev: v1.47.1
hooks:
- id: djlint-reformat-django
- id: djlint-django
Handlebars с расширением .html вместо .hbs
repos:
- repo: https://github.com/djlint/djLint
rev: v1.47.1
hooks:
- id: djlint-reformat-handlebars
files: "\\.html"
types_or: ["html"]
- id: djlint-handlebars
files: "\\.html"
types_or: ["html"]
Вы можете использовать параметры files или exclude, чтобы ограничить каждый хук своим каталогом, что позволит вам поддерживать несколько языков шаблонов в одном репозитории.
SublimeText Linter
djLint можно использовать в качестве плагина SublimeText Linter. Его можно установить через package-control.
cmd + shift + p- Install SublimeLinter
- Install SublimeLinter-contrib-djlint
Убедитесь, что djLint установлен в вашем глобальном python или в вашем PATH.
Visual Studio Code
neovim
djLint можно использовать как линтер и форматер в neovim.
С помощью плагина none-ls.
С помощью coc.nvim.
С помощью efm-langserver.
- Установите efm-langserver и djLint через Mason:
:MasonInstall efm djlint - Добавьте
htmldjangoвfiletypes. - Создайте конфигурацию форматирования:
local djlint = {
formatCommand = "djlint --reformat --quiet --warn -",
formatStdin = true,
}
- Свяжите язык с форматировщиком через
htmldjango = { djlint }.
Пример конфигурации:
local djlint = {
formatCommand = "djlint --reformat --quiet --warn -",
formatStdin = true,
}
require("lspconfig").efm.setup({
filetypes = { "htmldjango" },
init_options = { documentFormatting = true },
settings = {
rootMarkers = { ".git/" },
languages = {
htmldjango = { djlint },
},
},
})
MegaLinter
djLint встроен в MegaLinter вместе с более чем сотней других линтеров.
Чтобы установить его, запустите npx mega-linter-runner --install и следуйте инструкциям.