Django:在发布之前自动缩小css / js文件

时间:2010-06-17 14:15:38

标签: html django release minify

我有以下情况:我想在开发期间使用未压缩的js / css文件(例如调试js)但是在生产时我想自动切换到该文件的缩小版本。

一些简单的解决方案就是放入你的模板:

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

但这需要manully提供这样的文件存在并在原始文件更改后进行minifaction manullay。

您如何在项目中实现这一目标?有没有这方面的工具?

6 个答案:

答案 0 :(得分:17)

您是否尝试过http://code.google.com/p/django-compress/

  

有关Django的可用资产管理器的完整列表,请参阅http://djangopackages.com/grids/g/asset-managers/

     

如果您已经在使用django-compress,那么您应该看看升级到django-pipeline,这是一个维护良好的fork,具有许多新功能。我鼓励所有使用django-compress的人转而使用django-pipeline:* django-pipeline documentation

答案 1 :(得分:17)

不再维护Django-compress。请改为https://github.com/cyberdelia/django-pipeline

答案 2 :(得分:8)

我一直在使用webassets,到目前为止我非常满意。我真正喜欢它的是,您仍然可以在模板中定义CSS和JS文件,而不是在项目配置中。

可在以下网址找到文档:http://elsdoerfer.name/docs/webassets/

答案 3 :(得分:3)

截至2016年底,这些答案大多已过时。

点击此处查看以下几个选项: https://gitlab.com/rosarior/awesome-django#asset-management

目前,django-compressor是一个不错的选择,但根据您的目的,还有其他选择。我相信webpack现在也越来越流行。

答案 4 :(得分:0)

我写了this Makefile来缩小和连接我的JS和CSS文件。这取决于YUI Compressor JAR。 更新文件后,您仍然必须运行make。不过,您可以在服务器启动和/或重新加载时运行它,或者在SCM上设置commit-hook。

当然你还需要{% if not debug %},但支付国际海事组织的价格很低。

显示简单用法:

$ 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.

答案 5 :(得分:-2)

刚刚发布了一个开源项目,它监视目录的变化并自动缩小JS,自动编译SASS / SCSS,运行命令行操作等。

http://devWatchr.com/

上查看

在开发过程中,它会在您的系统上使用pythonpyinotify运行。