【问题标题】:Force exception on django-pipeline when LESS does not compile当 LESS 不编译时,在 django-pipeline 上强制异常
【发布时间】:2013-05-01 20:49:32
【问题描述】:

我已经安装了 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'
        },
    }

【问题讨论】:

    标签: django django-pipeline


    【解决方案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/

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 2012-05-27
      • 1970-01-01
      • 2012-10-14
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2011-01-16
      相关资源
      最近更新 更多