Подтвердить что ты не робот

Django: автоматическое минитирование файлов css/js перед выпуском

У меня следующий случай: я хочу использовать несжатые файлы js/css во время разработки (например, для отладки js), но при производстве я хочу автоматически переключиться на мини-версии этих файлов.

какое-то простое решение заключается в том, чтобы вставить ваш шаблон:

<script src="some_js.{% if not debug %}min.{% endif %}js"....

но для этого требуется, чтобы этот файл существовал и выполнял миниатюрный manullay после первоначального изменения файла.

Как вы это делаете в своих проектах? Есть ли для этого инструмент?

4b9b3361

Ответ 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

Ответ 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 в вашей системе во время разработки.