Я пытаюсь заставить Assetic работать в Symfony 2.0.11, чтобы использовать sass для css-файлов.
Я часами возился с этой проблемой, и из того, что я понялСборочная версия (1.0.2) испорчена и просто не может работать в Windows.
Я попытался обновить сборку и сборку Bugle до последней версии Master с github, но для этого требуется Symfony 2.1, которая приносит многоизменяется и не имеет обратной совместимости (не говоря уже о том, что он также официально не выпущен), так что это не вариант.
Этот пост symfony2 сборка yui компрессор на Windows (синтаксис пути) дает некоторые хорошиепонимание этого вопроса, но, к сожалению, изменений в сборочной библиотеке, которые он рекомендует, недостаточно, чтобы заставить его работать должным образом в моей среде.
Я нашел некоторые интересные моменты также в https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c и https://github.com/kriswallsmith/assetic/issues/25
В конце я знаю, что мне нужно изменить vendor /assetic / src / Assetic / Util / ProcessBuilder.php, возможно, некоторые другие файлы впакет, и, возможно, добавить некоторую информацию в мой файл config.yml (кажется, может помочь добавление пути к java или sass).
Что мне нужно, чтобы кто-то смог получить рабочую конфигурацию, чтобы дать мнеуказатели на то, что мне не хватает, или в идеале шаги, необходимые для того, чтобы эта чертова штука сработала.
Кто-нибудь готов к выполнению задачи?
_____ Обновление: Все еще копаете, прошло всего 3 дня:/
Новые элементы:
1 / php5.3.8 может иметь проблему с proc_open и данными> 2048 байт согласно https://bugs.php.net/bug.php?id=60120 Эта проблема может иметь значение при получении Symfony отGit репозиторий (https://github.com/symfony/symfony/issues/3216).Выполнение «git config --global core.autocrlf input» и повторное получение всего из git позволило мне использовать php5.3.10 без сбоев.
2 / https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246c выглядит как достойная основа.Я сделал несколько небольших изменений в путях в Process.php (см. https://github.com/kriswallsmith/assetic/issues/92), но я не совсем уверен, что это актуально.В любом случае, командная строка, которую я получаю от Assetic, на данный момент работает в оболочке и выдает ожидаемый css.
3 / sass.bat (находится в Ruby193 \ bin) должен иметь абсолютный путь к ruby.exe вчтобы пойти немного дальше (я узнал, что трудный путь, вы увидите сообщение об ошибке, только если var_dump и убьете скрипт в нужном месте!)
Теперь все выглядит немного лучше, но все же нетработая с sass (я думаю, что он будет работать нормально с некоторыми другими фильтрами) мне удалось выделить проблему в Process.php (около строки 172) в «$ data = fread ($ pipe, 8192);»: Второй раз, когда скрипт проходит в этом месте, с $ pipe, указывающим на второй ресурс, он никогда не возвращается ... и php застревает и у него действительно тяжелые времена (мне нужно убить / перезапустить wamp по крайней мере два раза, чтобыбыть в состоянии сделать еще один тест)
Я действительно не знаком с proc_open и потоками, и мне трудно понять, что код пытается там делать ...
Я надеюсь, что этоможет помочь следующему, пытающемуся заставить вещи работать, и в конечном итоге помочь моему делу.Все еще ищите поддержку в этом вопросе!
_____ Обновление:
Дальнейшее тестирование дало мне понять, что у меня может получиться "php app / consoleassetic: dump", когда файл sass будет достаточно маленьким.Мне кажется, что фактические правила CSS (исключая определения переменных и миксины) должны быть меньше 4096 байт с php5.3.10, и даже меньше с php 5.3.8.Это указывает на ошибку proc_open, описанную в https://bugs.php.net/bug.php?id=60120 и https://bugs.php.net/bug.php?id=51800
_____ Обновление:
Я попытался установить php5.4, чтобы проверить, устраняет ли он проблему.Мне потребовалось некоторое время, чтобы понять причину, по которой эта версия не работала на моем компьютере, потому что пока нет сборки x64.Затем я установил 32-битную версию wamp и запустил php5.4.Конечный результат: proc_open по-прежнему зависает :( Я начинаю терять идеи ...
Пошаговое руководство:
Итак, в конце концов я заставил это сработать и подумал, что постараюсь подвести итог наиболее важных шагов для последующих зрителей:
1.Установите Ruby 1.9.3 и компас 0.12
check http://rubyinstaller.org/downloads/
Обновите компас до 0.12 с помощью
"gem update --system"
, а затем
"gem install compass"
2.Измените compiler.rb в компасе
Перейдите в Ruby193 \ lib \ ruby \ gems \ 1.9.1 \ gems \ compass-0.12.0 \ lib \ compass в строке 10, замените
self.from, self.to = File.expand_path(from), to
с
self.from, self.to = from.gsub('./', ''), to
/! \ с некоторыми настройками, это может быть наоборот, но с настройкой, которую я пытаюсь описать, это происходит следующим образом.
3.point Assetic до последней версии, которая работает с symfony 2.0.11
, отредактируйте файл deps следующим образом:
[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
/! \ вам нужно будет удалить ссылки на определенную версиюв файле deps.lock тоже!
и выполните "php bin / vendors install".
4.Измените свой config.yml
вот как выглядит мой сейчас:
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
# java: /usr/bin/java
filters:
compass:
bin: e:\outils\Ruby193\bin\compass.bat
5.Используйте абсолютный путь в compass.bat / sass.bat
Перейдите в каталог Ruby193 \ bin и отредактируйте compass.bat, чтобы установить абсолютный путь к ruby.exe (проделайте то же самое с sass.bat, пока вына это)
6.Измените вызов в шаблоне
Вот как сейчас выглядит мой:
{% stylesheets filter='compass' output='css/*.css'
'@LndBimBundle/Resources/public/css/main.scss'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
Тестирование:
Для тестирования вы можете использовать
php app/console assetic:dump --verbose --no-debug
Таким образом, если вы попадете в бесконечный цикл, как я, вы можете просто нажать Ctrl + C, что делает тестирование более эффективным, чем в браузере
/! \ Вам абсолютно необходимо использовать --no-debug,или в результате вы получите кучу нежелательных строк в вашем css, которые выглядят так:
@media -sass-debug-info{filename{font-family:file\:\/\/C\:\/Users\/Mattso\/AppData\/Local\/Temp\/ass9DBF\.tmp\.scss}line{font-family:\0000359}}
Вы можете использовать
die($this->commandline);
в методе запуска
vendor\assetic\src\Assetic\Util\Process.php
, чтобы показать вам текущую командную строку и протестировать ее.
Мой в настоящее время выглядит следующим образом:
cmd /V:ON /E:ON /C ""e:\outils\Ruby193\bin\compass.bat" "compile" "C:\Users\Mattso\AppData\Local\Temp" "--config" "C:\Users\Mattso\AppData\Local\Temp\ass59BB.tmp" "--sass-dir" "" "--css-dir" "" "C:\Users\Mattso\AppData\Local\Temp\ass59BC.tmp.scss""
Тогда вам просто нужно набрать "php app / console:00":дамп --no-debug "в вашем cli для создания css-файлов в web \ css и обновления страницы вашего сайта.И вуаля!(надеюсь!)
Примечание: Как вы могли заметить, я использую CompassFilter вместо SassFilter.Это потому, что он делает то же самое (и больше), и его можно заставить делать то, что мы от него ожидаем.Если кто-нибудь сможет узнать, как починить SassFilter, это будет здорово.Между тем я уже потратил слишком много времени на это.
Я несколько дней тянул себя за это безумие, надеюсь, этот пост будет полезен для психического здоровья других людей;)