Как использовать фильтр SCSS в Symfony2 под Windows? - PullRequest
2 голосов
/ 08 марта 2012

На самом деле это два вопроса:

  1. Как правильно использовать фильтр SCSS в моем проекте Symfony в Windows (в шаблонах Twig)?Я имею в виду, как мне использовать бинарный файл scss в Windows?

  2. Кроме того, мне обязательно нужно использовать Compass?и "КАК" использовать компас, если я его установил?

Расширение : Вот некоторые настройки, которые я сделал:

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

В моем файле ветки:

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

Но когда я загружаю страницу, яполучить следующую ошибку (внутри файла CSS)

[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

Ответы [ 3 ]

4 голосов
/ 12 марта 2012

Я могу говорить только за Compass, так как это то, что я использую, но те же проблемы / проблемы, скорее всего, также связаны с фильтрами SASS / SCSS.

Существует много известных проблем с путями к файлам с Compass в системах Windows:

... а также исправления, предложенные Assetic для их устранения:

Я обнаружил, что для того, чтобы все работало вместе, было необходимо выполнить следующее ...

# 1.Убедитесь, что %ruby%\bin находится в вашей среде PATH переменная:

Пример: PATH = "...;C:\Ruby\1.9.2\bin"

# 2.Отредактируйте %ruby%\bin\compass.bat, чтобы использовать абсолютные пути:

@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 вручную в compiler.rb @ line ~ 10:

Примечание: Этот шаг может не требоваться в последних версиях Ruby / Compass.( Ссылка )

Путь: %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.Убедитесь, что Assetic настроен правильно:

Пример (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

Я использую %compass.bin% в моем файле параметров, чтобы я мог облегчить переходкодовая база между Windows и * nix системами, поэтому мой parameters.yml выглядит так:

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

# 5.(Необязательно) Обновите Assetic и AsseticBundle:

У меня есть Assetic и AsseticBundle, помеченный как самый последний возможный коммит, который работает с Symfony 2.0.x, в моем файле deps:

[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

Обязательно замените %ruby% во всех указанных выше путях фактическим путем к ruby.exe, мой - C:\Ruby\1.9.2.

Шаги № 2 и № 4 могут или не могут потребоваться, нов течение моего времени, борющегося с этой проблемой, именно там я и закончил, и мои настройки работают (это все, что меня волнует!).

Удачи!


Дополнительный вопрос: Действительно ли ваш путь к двоичным файлам SCSS / Compass находится в %kernel.root_dir%/Resources/libs?

1 голос
/ 08 марта 2012
  1. К сожалению расширение ветки scss нарушено на окнах.Это известная проблема.Я потратил некоторое время, пытаясь придумать работу вокруг, но безрезультатно.Я нашел, что лучше всего использовать исполняемый файл scss с параметром --watch, чтобы просто создавать файлы css и сохранять их в каталоге Resource / public.Это также может упростить некоторые проблемы развертывания, поскольку вам не нужно беспокоиться о наличии scss на ваших серверах.

  2. Использование компаса для scss не требуется.Думайте об этом как о библиотеке полезных битов CSS.Например, если вы когда-нибудь захотите сделать css с закругленными краями, миксин Compass сгенерирует все специальные пользовательские теги производителя.Подробнее об использовании см. В документации.

0 голосов
/ 27 апреля 2014

В моем случае после нескольких часов поиска и опробования многих решений это сработало для меня:

В 'app / config / config.yml' добавьте:

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

D: / Ruby193 / bin / compass будет зависеть от вашего пути в Ruby.

Смотрите скриншот: http://s23.postimg.org/3n2oc5wh7/MY_SOLUTION_THAT_I_FOUND.jpg

Моя система: Windows 7 Ultimate, Руби 1.9.3, Symfony 2.4.3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...