2 Stimmen

Wie benutzt man SCSS-Filter in Symfony2 unter Windows?

Eigentlich sind es zwei Fragen:

  1. Was ist der richtige Weg, um den SCSS-Filter in meinem Symfony-Projekt in Windows (in Twig-Vorlagen) zu verwenden? Ich meine, wie verwende ich das scss-Binary in Windows?

  2. Muss ich unbedingt Compass verwenden? und WIE kann ich Compass verwenden, wenn ich es installiert habe?

Erweiterung : Hier ist eine Konfiguration, die ich vorgenommen habe:

Unter 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" 

In meiner Twig-Datei:

{% 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 %}

Aber wenn ich die Seite lade, erhalte ich folgenden Fehler (innerhalb der css-Datei)

[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:\wamp\www\Symfony\vendor\assetic\src\Assetic\Filter\Sass\SassFilter.php line 162

at Assetic\Filter\Sass\SassFilter-&gt;filterLoad(object(Assetic\Asset\FileAsset))
in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Filter\FilterCollection.php line 62

at Assetic\Filter\FilterCollection-&gt;filterLoad(object(Assetic\Asset\FileAsset))
in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Asset\BaseAsset.php line 83

at Assetic\Asset\BaseAsset-&gt;doLoad(&#039

4voto

leek Punkte 11253

Ich kann nur für Compass sprechen, da es das ist, was ich benutze, aber die gleichen Fragen/Probleme beziehen sich höchstwahrscheinlich auch auf die SASS/SCSS-Filter.

Es gibt viele bekannte Dateipfad-Probleme mit Compass auf Windows-Systemen:

... und auch Festlegungen, die Assetic vorgeschlagen hat, um mit ihnen umzugehen:

Ich habe festgestellt, dass die folgenden Schritte notwendig waren, damit alles funktioniert...

#1. Vergewissern Sie sich %ruby%\bin in Ihrer Umgebung ist PATH variabel:

Ejemplo: PATH = "...;C:\Ruby\1.9.2\bin"

#2. bearbeiten %ruby%\bin\compass.bat um absolute Pfade zu verwenden:

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

#3. 539f206 manuell rückgängig machen in compiler.rb @ Zeile ~10:

Anmerkung: Dieser Schritt ist bei den neuesten Ruby/Compass-Versionen möglicherweise nicht erforderlich. ( Referenz )

Pfad: %ruby%\lib\ruby\gems\1.9.1\gems\compass-*\lib\compass\compiler.rb

#      self.from, self.to = from.gsub('./', ''), to
      self.from, self.to = File.expand_path(from), to

#4. Stellen Sie sicher, dass Assetic richtig konfiguriert ist:

Beispiel ( 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

Utilizo %compass.bin% in meiner Parameterdatei, damit ich den Übergang der Codebasis zwischen Windows- und *nix-Systemen erleichtern kann. parameters.yml sieht so aus:

# Assetic
compass.bin: C:\Ruby\1.9.2\bin\compass.bat

#5. (Optional) Aktualisieren Sie Assetic und AsseticBundle:

Ich habe Assetic und AsseticBundle bis zum allerletzten möglichen Commit getaggt, der mit Symfony 2.0.x in meinem deps Datei:

[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

Stellen Sie sicher, dass Sie die %ruby% in allen obigen Pfaden mit Ihrem tatsächlichen Pfad zu ruby.exe wobei meine C:\Ruby\1.9.2 .

Die Schritte 2 und 4 können erforderlich sein oder auch nicht, aber im Laufe der Zeit, in der ich mit diesem Problem zu kämpfen hatte, habe ich es so hinbekommen, und meine Einrichtung funktioniert (das ist alles, was mir wichtig ist!).

Viel Glück!


Nebenfrage: Ist Ihr Pfad zu den SCSS/Compass-Binärdateien wirklich in %kernel.root_dir%/Resources/libs ?

1voto

Cerad Punkte 46915
  1. Leider ist die Twig-Scss-Erweiterung unter Windows kaputt. Das ist ein bekanntes Problem. Ich habe einige Zeit damit verbracht, eine Lösung zu finden, aber es war nicht möglich. Ich habe herausgefunden, dass es am besten ist, einfach die scss-Erweiterung mit dem Parameter --watch zu verwenden, um die css-Dateien zu erstellen und sie im Verzeichnis Resource/public zu speichern. Das kann auch einige Probleme bei der Bereitstellung vereinfachen, da man sich nicht darum kümmern muss, scss auf den Servern zu haben.

  2. Die Verwendung von compass ist für scss nicht erforderlich. Betrachten Sie es als eine Bibliothek von nützlichen Bits von css. Wenn Sie zum Beispiel jemals den Drang verspüren, abgerundete Css-Kanten zu erstellen, wird ein Compass-Mixin alle herstellerspezifischen benutzerdefinierten Tags erzeugen. Einzelheiten zur Verwendung von Compass finden Sie in der Dokumentation.

-1voto

Ideal Designer Punkte 1

In meinem Fall hat das nach stundenlangem Suchen und Ausprobieren vieler Lösungen funktioniert:

In 'app/config/config.yml' hinzufügen:

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

D:/Ruby193/bin/compass ist abhängig von Ihrem Ruby-Pfad.

Siehe Bildschirmfoto: http://s23.postimg.org/3n2oc5wh7/MY_SOLUTION_THAT_I_FOUND.jpg

Mein System: Windows 7 ultimativ, Ruby 1.9.3, Symfony 2.4.3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X