Django: автоматическое свертывание файлов css/js перед выпуском
У меня есть следующий случай: я хочу использовать несжатые файлы js/css во время разработки (например, для отладки js), но на производстве я хочу автоматически переключаться на минимизированные версии этих файлов.
какое-то простое решение заключается в том, чтобы вставить в ваш шаблон:
<script src="some_js.{% if not debug %}min.{% endif %}js"....
но для этого требуется вручную при условии, что такой файл существует, и выполнять мини-разбивку после изменения исходного файла.
Как вы делаете это в своих проектах? Есть ли инструмент для этого?
6 ответов
Вы пробовали http://code.google.com/p/django-compress/?
Смотрите http://djangopackages.com/grids/g/asset-managers/ для довольно полного списка доступных менеджеров активов для Django...
Если вы уже используете django-compress, вам стоит взглянуть на обновление до django-pipel, который является хорошо поддерживаемым форком, с множеством новых функций. Я призываю всех, кто использует django-compress, переключиться на django-pipe вместо: * документация django-pipeline
Джанго-компресс больше не поддерживается. Попробуйте использовать https://github.com/cyberdelia/django-pipeline.
Я использую webassets и до сих пор я очень доволен. Что мне действительно нравится в этом, так это то, что вы по-прежнему можете определять свои файлы CSS и JS внутри своих шаблонов, а не в конфигурации проекта.
Документацию можно найти по адресу: http://elsdoerfer.name/docs/webassets/
По состоянию на конец 2016 года эти ответы в основном устарели.
Проверьте здесь несколько вариантов: https://gitlab.com/rosarior/awesome-django
На данный момент django-compressor - хороший выбор, но есть альтернативы в зависимости от того, что вы хотите сделать. Я считаю, что веб-пакет становится популярным и в наши дни.
Я написал этот Makefile для минимизации и объединения моих файлов JS и CSS. Это зависит от компрессора YUI. После обновления файла вам все равно нужно запустить 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.
Только что выпустили проект с открытым исходным кодом, который следит за изменениями в каталогах и автоматически минимизирует JS, автоматически компилирует SASS / SCSS, запускает операции командной строки и т. Д.
Проверьте это на http://devwatchr.com/
Он работает с использованием python
а также pyinotify
на вашей системе во время разработки.