symfony - Sådan bruger du SCSS-filter i Symfony2 under Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Faktisk er det to spørgsmål:



  1. Hvad er den rigtige måde at bruge SCSS-filteret på i mit Symfony-projekt i Windows (i Twig-skabeloner)?
    Jeg mener, hvordan bruger jeg scss binær i Windows?

  2. Også, skal jeg nødvendigvis bruge kompas? og 'HOW' bruger jeg kompas, hvis jeg har installeret det?



Udvidelse : Her er nogle konfigurationer jeg har gjort:


I app/config/config.yml


assetic:
debug:          \%kernel.debug\%
use\_controller: false
filters:
    scss:
        bin: "\%kernel.root\_dir\%/Resources/libs/scss"
    compass:
        bin: "\%kernel.root\_dir\%/Resources/libs/compass" 





I min kvistfil:


{\% stylesheets 
      '@PlaylyfeBaseBundle/Resources/public/css/base.scss'
      '@PlaylyfeBaseBundle/Resources/public/css/another.scss'
   filter='scss'
   output='css/compiled/total.css'
\%}
<link rel="stylesheet" href="{{ asset\_url }}" />
{\% endstylesheets \%}





Men når jeg indlæser siden, får jeg følgende fejl (inde i css-filen)


[exception] 500 | Internal Server Error | RuntimeException
[message] The filename, directory name, or volume label syntax is incorrect.

[1] RuntimeException: The filename, directory name, or volume label syntax is incorrect.
at n/a
in C:wampwwwSymfonyvendorasseticsrcAsseticFilterSassSassFilter.php line 162

at AsseticFilterSassSassFilter-&gt;filterLoad(object(AsseticAssetFileAsset))
in C:wampwwwSymfonyvendorasseticsrcAsseticFilterFilterCollection.php line 62

at AsseticFilterFilterCollection-&gt;filterLoad(object(AsseticAssetFileAsset))
in C:wampwwwSymfonyvendorasseticsrcAsseticAssetBaseAsset.php line 83

at AsseticAssetBaseAsset-&gt;doLoad(&#039

Bedste reference


Jeg kan kun tale for Compass, da det er det, jeg bruger, men de samme problemer/problemer er sandsynligvis også relateret til SASS/SCSS filtre.


Der er mange kendte filvejsproblemer med Compass on Windows-systemer:



  • Issue # 748: Normalisering af filsti til understøttelse af Windows-systemer

  • Træk anmodning nr. 554: Løser en fejl på Windows-systemer

  • Kommentarer til tilsagn 539f206



... og også rettelser foreslået til Assetic at håndtere dem: [24] [25] [26]



  • Træk anmodning nr. 154: Kompasproblem på Windows, Ruby.exe blev ikke fundet

  • Træk anmodning nr. 152: Indtil Compass-udgave 554 ikke korrigeres

  • Issue # 131: Du skal kompilere individuelle stylesheets fra projektmappen.



Jeg har fundet ud af, at det var nødvendigt for alt at arbejde sammen ... [27] [28] [29]


# 1. Sørg for at \%ruby\%in er i dit miljø PATH variabel:


Eksempel:
PATH = "...;C:Ruby1.9.2in"


# 2. Rediger \%ruby\%incompass.bat for at bruge absolutte stier:


@ECHO OFF
IF NOT "\%~f0" == "~f0" GOTO :WinNT
@"C:Ruby1.9.2in
uby.exe" "C:/Ruby/1.9.2/bin/compass" \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9
GOTO :EOF
:WinNT
@"C:Ruby1.9.2in
uby.exe" "\%~dpn0" \%*


# 3. Gendan 539f206 manuelt i compiler.rb @ linje ~ 10:



   Bemærk: Dette trin er muligvis ikke påkrævet på de seneste Ruby/Compass versioner. (Reference)



Sti: \%ruby\%lib ubygems1.9.1gemscompass-*libcompasscompiler.rb


#      self.from, self.to = from.gsub('./', ''), to
      self.from, self.to = File.expand\_path(from), to


# 4. Sørg for, at Assetic er konfigureret korrekt:


Eksempel (config.yml):


assetic:
    debug:          \%kernel.debug\%
    use\_controller: false
    filters:
        cssrewrite: ~
        compass:
            bin: \%compass.bin\%
        yui\_js:
            jar: \%kernel.root\_dir\%/Resources/java/yuicompressor-2.4.7.jar
        yui\_css:
            jar: \%kernel.root\_dir\%/Resources/java/yuicompressor-2.4.7.jar


Jeg bruger \%compass.bin\% i min parametrefil, så jeg kan lette overgangen af ​​codebase mellem Windows og * nix-systemer, så min parameters.yml ser sådan ud:


# Assetic
compass.bin: C:Ruby1.9.2incompass.bat


# 5. (Valgfrit) Opgrader Assetic og AsseticBundle:


Jeg har Assetic og AsseticBundle mærket til den allerførste mulige commit, der virker sammen med Symfony 2.0.x i min deps fil:


[assetic]
    git=http://github.com/kriswallsmith/assetic.git
    version=ac71449e46bed22c276da26bf54ab2f733b3801d

[AsseticBundle]
    git=http://github.com/symfony/AsseticBundle.git
    target=bundles/Symfony/Bundle/AsseticBundle
    version=da4a46ce37557dcf3068b8493b12bdbbe47455e2


Sørg for at erstatte \%ruby\% i alle de ovennævnte stier med din faktiske vej til ruby.exe, min er C:Ruby1.9.2.


Trin # 2 og # 4 kan eller måske ikke være påkrævet, men i løbet af min tid med at kæmpe med dette problem er det her, jeg har endt og mit setup fungerer (hvilket er alt jeg bryr mig om!).


Held og lykke!





Side spørgsmål: Er din vej til SCSS/Compass binærerne virkelig i \%kernel.root\_dir\%/Resources/libs?

Andre referencer 1



  1. Desværre er udvidelsen af ​​twig scss brudt på vinduer. Det er et kendt problem. Jeg har brugt lidt tid på at komme på arbejde, men ikke til rådighed. Jeg fandt det bedst at bare bruge scss eksekverbar med parameteren --watch til blot at oprette css-filer og gemme dem i Ressource/public-biblioteket. Det kan også forenkle nogle implementeringsproblemer, da du ikke behøver at bekymre dig om at have scss på dine servere.

  2. Brug af kompas er ikke påkrævet for scss. Tænk på det som et bibliotek med nyttige bits af css. For eksempel, hvis du nogensinde får en trang til at gøre css afrundede kanter, vil en Compass mixin generere alle de leverandørspecifikke brugerdefinerede tags. Se i dokumentationen for detaljer om brug af den.


Andre referencer 2


I mit tilfælde efter timer med at søge og prøve mange løsninger fungerede dette for mig:


I 'app/config/config.yml' tilføj:


parameters:
# Assetic
assetic.filter.compass.bin: D:/Ruby193/bin/compass


D:/Ruby193/bin/kompass vil afhænge af din Ruby-sti.


Se skærmbillede:
http://s23.postimg.org/3n2oc5wh7/MY\_SOLUTION\_THAT\_I\_FOUND.jpg[31]


Mit system:
Windows 7 ultimative,
Ruby 1.9.3,
Symfony 2.4.3