2013-05-01 58 views
1

我安裝了django-pipeline並使用它將LESS文件編譯爲一個css文件。大多數時候,當我運行collectstatic,它按預期工作:當LESS不編譯時強制執行django-pipeline上的異常

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

但是,如果LESS文件有語法錯誤,Django的管道會忽略它,並用老版本的stylesheet.css中沒有告訴我:

  • stylesheet.less 悄悄丟棄
  • styleshee t.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

據我才明白髮送兩個信號,請參閱:http://django-pipeline.readthedocs.org/en/1.3.16/signals.html。一個在處理CSS之後,另一個在處理完Javascript之後。

你可以嘗試在你的管道/編譯器/ less.py添加故障信號:https://docs.djangoproject.com/en/dev/topics/signals/

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; 

更多的信號可以被發現