Django: автоматическое минитирование файлов css/js перед выпуском
У меня следующий случай: я хочу использовать несжатые файлы js/css во время разработки (например, для отладки js), но при производстве я хочу автоматически переключиться на мини-версии этих файлов.
какое-то простое решение заключается в том, чтобы вставить ваш шаблон:
<script src="some_js.{% if not debug %}min.{% endif %}js"....
но для этого требуется, чтобы этот файл существовал и выполнял миниатюрный manullay после первоначального изменения файла.
Как вы это делаете в своих проектах? Есть ли для этого инструмент?
Ответы
Ответ 1
Вы пробовали http://code.google.com/p/django-compress/?
См. http://djangopackages.com/grids/g/asset-managers/ для довольно полного списка доступных менеджеров активов для Django...
Если вы уже используете django-compress, вы должны взглянуть на обновление до django-конвейера, который является хорошо поддержанной fork, с множеством новых функций. Я рекомендую всем, кто использует django-compress, вместо этого переключиться на django-конвейер: * документация django-pipe
Ответ 2
Django-compress больше не поддерживается. Вместо этого попробуйте https://github.com/cyberdelia/django-pipeline.
Ответ 3
Я использовал webassets, и до сих пор я очень доволен. Мне действительно нравится, что вы все еще можете определить свои CSS и JS файлы внутри своих шаблонов, а не в конфигурации проекта.
Документацию можно найти по адресу: http://elsdoerfer.name/docs/webassets/
Ответ 4
По состоянию на конец 2016 года эти ответы в основном устарели.
Проверьте здесь несколько вариантов:
https://gitlab.com/rosarior/awesome-django#asset-management
На данный момент, django-compressor - хороший выбор, но есть альтернативы в зависимости от того, что вы хотите сделать. Я считаю, что webpack становится популярным и в наши дни.
Ответ 5
Я написал этот Makefile, чтобы минимизировать и объединить мои файлы JS и CSS. Это зависит от YUI Compressor JAR.
После обновления файла вам все равно придется запускать make
. Тем не менее, вы можете запустить его при запуске и/или перезагрузке сервера или настроить фиксацию на вашем SCM.
Конечно, вам все равно нужен {% if not debug %}
, но это небольшая цена для оплаты IMO.
Отображение простого использования:
$ make
[css] static/css/first.css
[css] static/css/second.css
[css] static/css/third.css
[css] static/css/and_so_on.css
[tag] @import url("static/css/all.css");
[js] static/js/first.js
[js] static/js/second.js
[js] static/js/third.js
[js] static/js/and_so_on.js
[tag] <script type="text/javascript" src="static/js/all.js"></script>
Done.
Ответ 6
Только что выпустил проект с открытым исходным кодом, который отслеживает каталоги изменений и автоматизирует мини-JS, автоматически компилирует SASS/SCSS, запускает операции с командной строкой и т.д.
Проверьте это на http://devWatchr.com/
Он запускается с использованием python
и pyinotify
в вашей системе во время разработки.