2012-05-02 13 views
5

Ben şeyler doğru yapıyorum emin değilim, ama burada konu:django-kompresör: DEBUG modunda lessc kullanma

  • Ben lessc önişlemcisine
  • bazıları ile django-compressor kullanıyorum LESS dosyalarının göreli resim URL'leri vardır. Bazıları 3. parti kütüphaneleri (örn Bootstrap) COMPRESS_ENABLEDTrue olduğunda, tüm göreli resim URL'leri tutulur, yani
  • COMPRESS_ENABLED False olduğunu
  • , CssAbsoluteFilter artık çalışmadığı iyi çalışıyor
  • olan benimsin göreli yollar bunlarkaynaklanan bakılmaksızın aynı dosyaya gidermek nerede

Ben bir "akıllı" dizin yapısı ile gelebilir (onlar CACHE dizinden göreli değiliz beri) göreli ve bu nedenle kırık 210 dizin veya LESS dosyaları dizininden, ancak bu kırılgan bir çözüm gibi görünüyor.

Genellikle LESS + django-compressor söz konusu olduğunda nasıl çalışıyorsunuz?

COMPRESS_PRECOMPILERS = (
    ('text/less', 'path.to.precompilers.LessFilter'), 
) 

precompilers.py:

from compressor.filters.base import CompilerFilter 
from compressor.filters.css_default import CssAbsoluteFilter 

class LessFilter(CompilerFilter): 
    def __init__(self, content, attrs, **kwargs): 
     super(LessFilter, self).__init__(content, command='lessc {infile} {outfile}', **kwargs) 

    def input(self, **kwargs): 
     content = super(LessFilter, self).input(**kwargs) 
     return CssAbsoluteFilter(content).input(**kwargs) 

bu COMPRESS_ENABLED = True ve False ikisi ile çalışır unutmayın

+0

Bana django_compressor'da bir hata gibi görünüyor - precompilers her zaman aranıyor, ancak filtreler sadece sıkıştırma yaparken gerçekleşir. – Greg

+0

Evet, tam olarak ne oluyor - yani bir hata değil, belgelendiği gibi çalışıyor. Ama * istenen * olmadığı için, IMHO, bir şeyi mi özlediğimi ya da yanlış kullanıp kullanmadığımı merak ediyorum. – Ludovic

+0

Sadece django_compressor devs tarafından düşünülmemiş bir durum gibi görünüyor ... bir hata değilse kesinlikle bir sorun. URL'lerinizi dönüştürmek için bir precompiler betiği yazmayı denediniz mi? – Greg

cevap

7

Basit bir geçici çözümü kullanabilirsiniz. Bu django-kompresörünün 1.6 giderilmiştir

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'path.to.PatchedSCSSCompiler'), 
) 
0

Eğer django-libsass filtre kodunu kullanıyor şuna benzer .

Apply CssAbsoluteFilter to precompiled css even when compression is disabled 

yani mutlak filtre bile DEBUG ile daha az dosyalarda çalıştırılır = Doğru: changelog itibaren.

1

: ayarlarınız dosyasında sonra

from compressor.filters.css_default import CssAbsoluteFilter 
from django_libsass import SassCompiler 


class PatchedSCSSCompiler(SassCompiler): 
    def input(self, **kwargs): 
     content = super(PatchedSCSSCompiler, self).input(**kwargs) 
     return CssAbsoluteFilter(content).input(**kwargs) 

Ve:

durumda
İlgili konular