2015-07-21 1 views
8

В моих настройках для компрессора я использую SlimIt для большинства моих JavaScript:Могу ли я использовать фильтр для всех блоков сжатия, кроме одного?

COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.SlimItFilter', ]

Некоторые из моих JS-файлов не должен пройти через SlimIt хотя, потому что файл уже минимизирован, или Javascript броски некоторая ошибка, когда ее минимизируют с другими файлами. Мой шаблон блок заканчивает тем, как это:

{# code that I minify #} 
{% block compressed_libs %} 
    {% compress js %} 
     <script src="/static/js/compress_this.js"></script> 
     <script src="/static/js/also_compress_this.js"></script> 
     ... 
    {% endcompress %} 
{% endblock %} 

{# code that shouldn't minify #} 
{% block non-compressible_libs %} 
    <script src="/static/js/already.min.js"></script> 
    <script src="/static/js/breaks-everything.js"></script> 
{% endblock %} 

Могу ли я установить различные правила компресс фильтра для различных блоков/файлов, так что мои «несжимаемых» файлы могут быть объединены вместе компрессором, пропуская SlimIt?

+2

Я не вижу никакого способа сделать это в 1.5. Правила для принятия решения о том, какой блок/файл должны быть обработаны, должны быть добавлены [здесь] (https://github.com/django-compressor/django-compressor/blob/1.5/compressor/base.py#L180). Вы должны подать запрос на функцию. – approxiblue

ответ

1

Как указано approxiblue, он не считает, что есть способ указать, какие фильтры использовать для каждого блока сжатия в шаблоне (в компрессоре 1.5).

Я обновлю этот ответ, кто-то что-то придумает.

Похоже, это может быть решено путем добавления параметра в compresstemplate tag, чтобы позволить ему return a CompressorNode с флагом, чтобы пропустить filter in base.py hunks()

Я посмотрю, что компрессор сообщество думает об этом, но позвольте мне знаете, есть ли у вас какие-либо идеи.