Awesome
jinjalint
A prototype linter which checks the indentation and the correctness of Jinja-like/HTML templates. Can fix issues.
It works with Django’s templates too, it should work with Twig and similar template languages. It should work fine with any kind of HTML 4 and 5, however XHTML is not supported.
This linter parses both HTML and Jinja tags and will report mismatched tags and indentation errors:
<div>
{% if something %}
</div>
{% endif %}
<div>
<span>
</div>
</span>
{% if something %}
<div> not indented properly
</div>
{% endif %}
{% if something %}<a href="somewhere">{% endif %}
<p>something</p>
{% if not something %}</a>{% endif %}
Usage
You need Python 3. Jinjalint doesn’t work with Python 2. Install it with
pip install jinjalint
(or pip3 install jinjalint
depending on how pip
is
called on your system), then run it with:
$ jinjalint template-directory/
…or:
$ jinjalint some-file.html some-other-file.html
This is a work in progress. Feel free to contribute :upside_down_face:
Usage with pre-commit git hooks framework
Add to your .pre-commit-config.yaml
:
- repo: https://github.com/motet-a/jinjalint
rev: '' # select a tag / sha to point at
hooks:
- id: jinjalint
Make sure to fill in the rev
with a valid revision.
Note: by default this configuration will only match .jinja
and .jinja2
files. To match by regex pattern instead, override types
and files
as
follows:
- id: jinjalint
types: [file] # restore the default `types` matching
files: \.(html|sls)$
Hacking
Jinjalint is powered by Parsy. Parsy is an extremely powerful
library and Jinjalint’s parser relies heavily on it. You have to read
Parsy’s documentation in order to understand what’s going on in
parse.py
.