1

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

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

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

  • stylesheet.less被悄悄丢弃
  • 样式表.css -> 样式表.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'
        },
    }
4

1 回答 1

1

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

你可以尝试在你的 pipeline/compilers/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/

于 2014-10-07T22:49:26.363 回答