2013-02-22 23 views
6

LESS, diğer LESS dosyalarını gönderme yetkisine sahiptir. Bu soru, bir Symfony projesi olanSymfony 2 Başka bir paketten LESS dosyalarını alma

başka bir Paket uygulamasındaki LESS dosyalarındaki LESS dosyalarını içe aktarmak için bir çözüm bulmayı amaçlamaktadır. Symfony2 projesi üzerinde çalışıyorum, değişiklikleri izlemek için LESS ve Assetic'i kullanıyorum. LESS dosyalarım, diğer LESS dosyalarını içe aktarabilmektedir, ancak yalnızca aynı pakette bulunuyorlarsa.

Başka bir gruptan içe aktarmaya çalışırsam Assetic watch, "değişken tanımsız" hatasıyla durur, çünkü içe aktarma başarısız olur. Başka paket içinde bir AZ dosyasında

:

ben ithalattaki yolları her türlü denedim

@import "../../../../MainBundle/Resources/public/less/colors.less"; 

@import "../../../../../../src/website/MainBundle/Resources/public/less/colors.less"; 

@import '/bundles/main/less/colors.less' 

@import url('/bundles/main/less/colors.less'); 

Ben birkaç doğru yolları denedim eminim ama onlar asla Dosya başka bir pakette olduğundan ve Assetic watch/LESS derleme işlemlerinden dolayı bu paketler arasında iyi çalışmadığından

Herhangi bir fikir var mı?

+0

o bunları ithal etmek yerine daha az dosyaları birleştirmek için assetic kullanmak için bir seçenek birbirine içinde ffrom da var mı? –

+1

Oldukça muhtemel .. Gelişirken diğerlerinin davranışlarını genişletmek için diğer LESS dosyalarını içe aktarma olasılığına ihtiyacım var. –

+1

Filtre tanımına bakınca, herhangi bir özel yolun (dahil edilmek üzere) https://github.com/symfony/AsseticBundle/blob/master/Resources/config/filters/less.xml adresinden geçmesinin bir yolu yoktur. Bu çağrı yöntemidir: https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php#L59 – gremo

cevap

5

Web/bundles dizinindeki yolları kullanmanız gerektiğini düşünüyorum. i dosyaları bu şekilde aktarıyorum

:

  • src/Acme/FirstBundle/Resources/public/less/style1.less
  • src/Acme/SecondBundle/Resources/public/less/style2.less

Ben style2.less içine style1.less ithal etmek istiyorum:

i 2 daha az dosyaları var

style2.less:

@import "../../acmefirst/less/style1"; 

kullanarak: cssrewrite filer, ayrıca

lessphp gerçek, genel olarak erişilebilen yolu kullanarak AZ dosyaları bakın unutmayın: En az Symfony 2.8 üzerinde İşte http://symfony.com/doc/current/cookbook/assetic/asset_management.html#including-css-stylesheets

+0

Stylus filtresi (stil dosyaları) için de çalışır. –

1

tam çalışma örneğidir . Bu örnek Assetic kullanarak ve css gömülü dosya ile çalışmak gerekiyordu. İşte

arborescence

/app 
/src 
---/Acme 
------/MyBundle 
---------/Ressources 
------------/public 
---------------/css 
------/MyOtherBundle 
---------/Ressources 
------------/public 
---------------/css 
/web 
---/bundles 
------/acmemybundle 
------/acmemyotherbundle 
---/css 
------/built 

Yani içinde en /src/Acme/MyBundle/Ressources/public/css/main.scss ı almak istediğiniz tüm bildiri ile dosyasıdır diyelim benim diğer paket (benim durumumda sass kullanıyorum ama daha azıyla aynı).

/src/Acme/MyOtherBundle/Ressources/public/css/mycss.scss ben yapacağım:

@import "../../../../MyBundle/Resources/public/css/main"; 

Bu dosyanın klasik fiziksel konumu bakın, bu nedenle IDE olacak bul onu.

Şimdi ilginç bölüm.Tüm scss dosyasını tek bir css dosyasına derlemek, küçültmek ve yeniden adlandırmak istiyoruz. Bunu Assetics ile yapabiliriz.

Css'inizi yüklediğiniz bir dosyada (benim durumumda /app/Ressources/views/css.html.twig).

{% stylesheets 
    filter='compass' 
    filter='?uglifycss' 
    filter='cssrewrite' 
    output='css/built/myMinifiedAndCompiledSass.css' 
    'bundles/mybundle/css/*.scss' 
    'bundles/myotherbundle/css/*.scss' 
    %} 
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}"> 
    {% endstylesheets %} 

==> Burada o kadar kullanarak/web dizininde (dosya başvurmak zorunda 'desteler/acmemybundle ..' sözdizimi. Sen Sembolik bağ modunda varlığı yüklemeniz gerekir. (Php app/konsol varlık : ==> Eğer web dizininde kalmak beri çıkış ismindeki ve yerde istediğini koyabilir)

--symlink yüklemek nihayet

ve conf.yml içinde

# Assetic Configuration 
assetic: 
    filters: 
     cssrewrite: ~ 
     sass: ~ 
     compass: 
      load_paths: 
        - "/usr/bin/compass" 
        - "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/" 
     uglifycss: 
      bin: %kernel.root_dir%/../node_modules/.bin/uglifycss 
     uglifyjs2: 
      bin: %kernel.root_dir%/../node_modules/.bin/uglifyjs 

.Buradaki önemli kısım, pusula içindeki load_paths. yukarı temel setinde pusula var: ~ Sen için değiştirmek gerekir :

compass: 
       load_paths: 
         - "/usr/bin/compass" 
         - "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/" 
İlgili konular