symfony - Hvordan har Assetic + sass arbejde med Symfony2 i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at få Assetic til at køre inden for Symfony 2.0.11 for at kunne bruge sass til css-filer.


Jeg har fiddling omkring dette spørgsmål i flere timer, og fra hvad jeg samler den nuværende assetiske version (1.0.2) er skruet op og bare ikke kan fungere i Windows.


Jeg forsøgte at opdatere assetisk og assetiskBundle til den nyeste Master version fra github, men de kræver Symfony 2.1, der medfører mange ændringer og er ikke bagudkompatible (for ikke at nævne det er ikke officielt udgivet heller), så det ikke er en mulighed.


Denne post symfony2 assetics yui kompressor på windows (path syntax) giver et godt indblik i sagen, men desværre er ændringerne på den assetiske lib det anbefales ikke nok til at gøre det fungere ordentligt i mit miljø.


Jeg fandt også nogle interessante bits på https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c og https://github.com/kriswallsmith/assetic/issues/25[17][18]


I sidste ende er det jeg ved, at jeg skal ændre leverandør/assetisk/src/Assetic/Util/ProcessBuilder.php, måske nogle andre filer i pakken, og måske tilføje nogle informationer i min config.yml-fil (det synes at tilføje stien til java eller sass kan hjælpe).


Det, jeg har brug for, er for en person, der kunne få en arbejdskonfiguration for at give mig pointers på, hvad jeg mangler, eller ideelt set de skridt, der kræves for at få den forfærdelige ting til at fungere.


Nogen op til opgaven?


\_\_\_\_\_Update:
Stadig graver, det har kun været 3 dage nu:/


Nye elementer:


1/php5.3.8 kan have et problem med proc\_open og data> 2048 bytes pr. Https://bugs.php.net/bug.php?id=60120
Dette problem kan have konsekvenser, når du får symfoni fra git-depotet (https://github.com/symfony/symfony/issues/3216).
udstedelse af 'git config -global core.autocrlf input' og genoptagelse af alt fra git tillod mig at bruge php5.3.10 uden crash. [19] [20]


2/https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c ligner et anstændigt grundlag.
Jeg har forvirret nogle mindre ændringer på stierne i Process.php (cf https://github.com/kriswallsmith/assetic/issues/92), men jeg er ikke rigtig sikker på, at det er relevant.
Under alle omstændigheder fungerer kommandolinjen fra Assetic på dette tidspunkt i en shell og udsender det forventede css. [21] [22]


3/sass.bat (placeret i Ruby193 \ bin) skal have den absolutte vej til ruby.exe for at kunne gå lidt længere (jeg lærte den svære måde, du ser kun fejlmeddelelsen, hvis du var\_dump og dræb scriptet på det rigtige sted!)


Nu virker tingene lidt bedre, men arbejder stadig ikke med sass (jeg tror det fungerer fint med nogle andre filtre)
Det lykkedes mig at isolere problemet i Process.php (omkring linje 172) på '$ data=fread ($ pipe, 8192);' : Anden gang scriptet passerer på dette sted, med $ pipe peger på den anden ressource, returnerer det aldrig ... og php bliver fast og har virkelig hårde tider på vej ud (jeg skal dræbe/genstarte wamp mindst to gange til kunne lave en anden test)


Jeg er virkelig ikke bekendt med proc\_open og vandløb, og jeg har svært ved at forstå, hvad koden forsøger at gøre derinde ...


Jeg håber det kan hjælpe den næste, der forsøger at få tingene til at fungere, og til sidst hjælper min sag også.
Stadig på udkig efter noget support i sagen!


\_\_\_\_\_Update:


Yderligere test gjorde mig indse, at jeg kunne have 'php app/console assetic: dump' arbejde, da sass filen var lille nok. Det forekommer mig, at de faktiske css-regler (eksklusive variable definitioner og mixins) har brug for mig mindre end 4096 bytes med php5.3.10, endnu mindre med php 5.3.8.
Det peger på proc\_open fejlen beskrevet i https://bugs.php.net/bug.php?id=60120 og https://bugs.php.net/bug.php?id=51800 [23] [[[24]


\_\_\_\_\_Update:


Jeg forsøgte at installere php5.4 for at kontrollere, om det var at løse problemet.
Det tog mig tid at indse, hvorfor denne version ikke fungerede på min computer, fordi der ikke er nogen x64-konstruktion endnu.
Jeg installerede da 32bits versionen af ​​wamp, og fik php5.4 nemt med det.
Slutresultat: proc\_open hænger stadig :(
Jeg er begyndt at være ude af ideer her ...





Walkthrough:



Så til sidst fik jeg det til at fungere, og jeg troede, at jeg ville forsøge at opsummere de vigtigste trin for senere seere:


1. Har Ruby 1.9.3 og kompas 0,12 installeret



tjek http://rubyinstaller.org/downloads/[25]


Opdater kompas til 0,12 med


"gem update --system"


og så


"gem install compass"


2. Ændre compiler.rb i kompas



Gå til Ruby193 \ lib \ ruby ​​\ gems \ 1.9.1 \ gems \ compass-0.12.0 \ lib \ kompas
i linje 10 erstattes


self.from, self.to = File.expand\_path(from), to


med


self.from, self.to = from.gsub('./', ''), to


/! \ med nogle opsætninger, kan det være omvendt, men med det setup, jeg forsøger at beskrive, går det på denne måde.


3. peg Assetic til den seneste version, der virker med symfony 2.0.11



rediger deps-filen som sådan:


[assetic]
    git=http://github.com/kriswallsmith/assetic.git
    ;version=v1.0.2
    version=ac71449e46bed22c276da26bf54ab2f733b3801d
[AsseticBundle]
    git=http://github.com/symfony/AsseticBundle.git
    target=/bundles/Symfony/Bundle/AsseticBundle
    ;version=v1.0.1
    version=da4a46ce37557dcf3068b8493b12bdbbe47455e2


/! \ du skal fjerne referencerne til en bestemt version i deps.lock filen også!


og udstede en 'php bin/vendors installer'.


4. Skift din config.yml



her er hvad min ser ud nu:


# Assetic Configuration
assetic:
    debug:          \%kernel.debug\%
    use\_controller: false
    # java: /usr/bin/java
    filters:
        compass:
            bin: e:outilsRuby193incompass.bat


5. Brug absolut vej i compass.bat/sass.bat



Gå til din Ruby193 \ bin-mappe og rediger compass.bat for at angive en absolut sti til ruby.exe (gør det samme med sass.bat, mens du er her)


6. Skift opkaldet i skabelonen



Her er hvad min ser ud nu:


{\% stylesheets filter='compass' output='css/*.css'
        '@LndBimBundle/Resources/public/css/main.scss'
    \%}
        <link href="{{ asset\_url }}" type="text/css" rel="stylesheet" />
    {\% endstylesheets \%}


Testning:



Til test kan du bruge


php app/console assetic:dump --verbose --no-debug


På den måde, hvis du kommer ind i en endeløs sløjfe som jeg gjorde, kan du bare ctrl + C, hvilket gør testningen mere effektiv end i en browser


/! \ Du skal absolut bruge - ingen fejlfinding, eller du vil ende med en masse uønskede linjer i din css, der ligner:


@media -sass-debug-info{filename{font-family:file://C:/Users/Mattso/AppData/Local/Temp/ass9DBF.tmp.scss}line{font-family:000359}}


Du kan bruge


die($this->commandline);


i løbet af


vendorasseticsrcAsseticUtilProcess.php


for at vise dig den aktuelle kommandolinje og teste den.


Mine ser for øjeblikket ud:


cmd /V:ON /E:ON /C ""e:outilsRuby193incompass.bat" "compile" "C:UsersMattsoAppDataLocalTemp" "--config" "C:UsersMattsoAppDataLocalTempass59BB.tmp" "--sass-dir" "" "--css-dir" "" "C:UsersMattsoAppDataLocalTempass59BC.tmp.scss""


Så skal du bare skrive 'php app/console assetic: dump - no-debug' i din cli for at oprette css-filer i web \ css og opdatere dit websteds side. Et ... voila! (Forhåbentlig!)


Bemærk: Som du måske har bemærket, bruger jeg CompassFilter i stedet for SassFilter. Det skyldes, at det gør det samme (og mere) og kan faktisk laves til at gøre, hvad vi forventer af det. Hvis nogen kan finde ud af hvordan at fixe SassFilter, det ville være svulme. I mellemtiden har jeg allerede brugt alt for meget tid på dette.


Jeg har i dag trukket mit hår på den kræsne, jeg håber, at dette indlæg vil være nyttigt for nogle andres psykiske sundhed;)

Bedste reference


Se venligst mit svar på spørgsmålet Sådan bruger du SCSS-filter i Symfony2 under Windows ?: https://stackoverflow.com/a/9658410/3765


Det er en temmelig omfattende dækning af min tid, der bruges til at få Assetic til at arbejde på Windows.





Baseret på dit eksempel - du behøver ikke at tilføje filteret cssrewrite. Sådan bruger jeg Compass from Twig: [27]


{\% stylesheets filter='compass' output='css/compiled/*.css' 'css/example.scss' \%}
    <link rel="stylesheet" href="{{ asset\_url }}">
{\% endstylesheets \%}

Andre referencer 1


Ligesom en opdatering til dette spørgsmål (eller for alle, der kun bruger sass ikke kompas), hvis nogen kommer her på udkig efter svaret. Alt hvad der skal bruges nu er:


assetic:
    filters:
        cssrewrite: ~
        sass: 
          bin: "<pathtosass>"
          apply\_to: ".scss$"

parameters:
     assetic.ruby.bin: '<pathtoyourrubyhere>'


Dette bruger PHP 5.4