当LESS不编译时,强制django-pipeline上的异常

时间:2013-05-01 20:49:33

标签: django django-pipeline

我安装了django-pipeline并使用它将LESS文件编译成css文件。大多数时候,当我运行collectstatic时,它按预期工作:

  • stylesheet.less - > stylesheet.css - > stylesheet.min.css

但是,如果LESS文件有语法错误,django-pipeline将忽略它并使用旧版本的stylesheet.css而不告诉我:

  • stylesheet.less 悄然放弃
  • stylesheet.css - > stylesheet.min.css

删除stylesheet.css文件会强制django-pipeline在出现错误时通知我,但我更愿意,只是告诉我。是否存在强制django-pipeline告诉我何时出现语法错误或者这只是一个错误/缺少功能的设置?

我的设置非常简单。以下是相关设置:

STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE = True
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor'
PIPELINE_LESS_BINARY = '/usr/bin/lessc'
PIPELINE_COMPILERS = (
    'pipeline.compilers.less.LessCompiler',
    )
PIPELINE_CSS = {
    'min' : {
        'source_filenames': (
            'scripts/stylesheet.less',
            ),
        'output_filename': 'scripts/stylesheet.min.css'
        },
    }

1 个答案:

答案 0 :(得分:1)

据我所知,只发送两个信号,请参阅:http://django-pipeline.readthedocs.org/en/1.3.16/signals.html。一个在处理CSS之后,一个在处理Javascript之后。

您可以尝试在管道/编译器/ less.py中添加失败信号:

 less_failure = django.dispatch.Signal()
 CSScode = self.execute_command(command, cwd=dirname(infile))
 if "Error:" in CSScode: less_failure.send(sender=self.__class__);
 return CSScode;

有关信号的更多信息,请访问:https://docs.djangoproject.com/en/dev/topics/signals/