django-compressor:使用预编译器禁用缓存

时间:2013-05-30 07:27:57

标签: django django-compressor

我正在使用django-compressor来编译scss文件。 每次修改scss文件时,django-compressor都会在/static/CACHE/css/123456.css中构建一个css文件。

这对于pruduction模式是好的,但是当我在本地开发时,我会对每次更改进行修订。

因此,在开发模式下,如何强制输出到具有相同名称的文件?

这不是一个重新控制的问题......

COMPRESS_PRECOMPILERS = (
    ('text/x-sass', 'sass --compass "{infile}" "{outfile}"'),
    ('text/x-scss', 'sass --scss --compass "{infile}" "{outfile}"'),
)

3 个答案:

答案 0 :(得分:0)

在获得静态资产的输出输出之前,您的SCSS文件仍需要经过matching precompiler

在正确配置的开发环境中,您会认为静态输出目录未与您的应用程序源一起定位/分发,并且生成的CSS文件将隐藏在未受版本控制的路径上某处的源中。

编辑:

是的,所以我错过了正确的问题。唯一的解决方案是在开发中禁用压缩器,包括清除预编译器MIME映射,并在主模板中有条件地包括客户端编译器。

这样就可以在开发中引用原始的,未经过分析的LESSCoffeeScript来源,但遗憾的是我找不到客户端SASS编译器。

答案 1 :(得分:0)

缓存文件的文件名实际上是基于它的内容。来自Django Compressor的文档:

  

根据需要生成合并文件

     

如有必要,会生成文件。所有预编译器都被调用   执行所有过滤器,并根据内容确定散列。   这反过来有助于确定文件名,只有在保存时才会保存   已经不存在了。然后返回HTML输出(并保存   在缓存中)。就是这样!

http://django-compressor.readthedocs.org/en/latest/behind-the-scenes/#third-step-generating-the-combined-file-if-needed

我认为没有办法让Django Compressor在不更改代码的情况下使用指定的名称。

答案 2 :(得分:0)

这可以实现,但它涉及一些定制。我有这个确切的设置工作。我在dev和生产(heroku)离线压缩中使用本地开发模式。

请参阅此问题的底部以获取代码。 https://github.com/django-compressor/django-compressor/issues/226