Компрессор symfony2 assets yui для windows (синтаксис пути)

Я пытаюсь запустить ассеты с компрессором yui и, если он работает, sass. Сейчас оба не работают. При удалении всех фильтров из config.yml и шаблона ветки это работает, и php app/console assetic:dump копирует файлы css и js.

Теперь я хочу добавить компрессор yui, и мой config.yml выглядит так:

assetic:
  debug: %kernel.debug%
  use_controller: false
  filters:
    yui_js:
      jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar

Добавление фильтра в шаблон и повторный запуск assets:dump заканчивается следующей ошибкой (перевод сообщения мой):

[RuntimeException]
The syntax for filename, directory name or drive name is wrong

Я нашел статью, в которой мне указать путь к java.exe, поэтому я добавляю это в config.yml:

assetic:
  ..
  java: C:/Program Files (x86)/Java/jre6/bin/java.exe
  ..

Теперь актив: дамп говорит мне:

[RuntimeException]
The COMMAND "C:/Program" is either written wrong or

Я пробовал играть с обеими переменными (используя \ или \ вместо /, добавляя одинарные или двойные кавычки, работая с коротким псевдонимом Progra~1 или Progra~2) в конфигурации, но ничего не добился. Обе ошибки вылезают постоянно. Может быть, кто-то может указать мне в правильном направлении.


person Sgoettschkes    schedule 19.11.2011    source источник
comment
Вы пробовали использовать двойные кавычки, одинарные кавычки, заменять пробелы на \ ?   -  person greg0ire    schedule 19.11.2011
comment
Извините, не имел в виду скобки, имел в виду кавычки, так что да, пробовал их комбинации. Также пробовал писать Program\Files\ (x86) и еще что-то. Если бы кто-нибудь мог подсказать мне, где найти интеграцию assets в symfony2, возможно, я смог бы разобраться сам, но я просто не нашел (где определяется команда, где читается конфигурация и т. д.).   -  person Sgoettschkes    schedule 19.11.2011
comment
Если Program\ Files\ выводит точное сообщение, попробуйте Program\\ Files\\   -  person greg0ire    schedule 19.11.2011
comment
Ничего не меняет. Единственное, что, кажется, немного меняет его, это использование C:\Progra~2\Java\jre6\bin\java.exe, но затем я снова получаю первое сообщение.   -  person Sgoettschkes    schedule 19.11.2011
comment
Вау, кажется, у меня наконец-то что-то получилось: я нашел ссылку, а затем изменил строку 95 на if (defined('PHP_WINDOWS_VERSION_MAJOR')) { и теперь я получаю сообщение об ошибке при создании выходного файла. Я посмотрю, как далеко я смогу зайти с этим.   -  person Sgoettschkes    schedule 19.11.2011


Ответы (3)


Хорошо, я понял это. Мужик, это было жестоко.

Начнем с простых вещей. Рабочая версия config.yml может выглядеть так:

assetic:
  debug: false
  use_controller: false
  java: C:\Program Files (x86)\Java\jre6\bin\java.exe
  sass: C:\Program Files (x86)\Ruby192\bin\sass.bat
  filters:
    scss: ~
    yui_js:
      jar: %kernel.root_dir%\Resources\java\yuicompressor-2.4.6.jar

По какой-то причине актив всегда импортирует весь каталог для scss, поэтому мне пришлось создать файл combo.scss, который импортирует другие файлы scss в правильном порядке.

И теперь это становится уродливым, так как нужно изменить ядро ​​активов, чтобы это заработало. Разработчики assets знают об этой ошибке, и я думаю, что она исправлена ​​в какой-то ветке/ветви разработки, но не в стабильной.

Необходимо изменить Assetic\Util\ProcessBuilder в строке 95.

if (defined('PHP_WINDOWS_VERSION_MAJOR')) {

, строка 103

$script .= ' '.implode(' ', array_map('escapeshellarg', $args));

и строка 110

return new Process($script, $this->cwd, null, $this->stdin, $this->timeout, $options);

Я надеюсь, что эта ошибка скоро будет исправлена, а до тех пор любой, кто пытается заставить ее работать, найдет эту ветку... У меня ушло около 8 часов на отладку, чтение и пробу различных подходов.

person Sgoettschkes    schedule 19.11.2011
comment
Текущая версия Symfony2 (версия 2.0.5) имеет Assetic версии 1.0.2, которая не работает в Windows. Текущий мастер исправляет проблему, о которой вы упоминаете. Проверьте эту фиксацию для версии с исправлением. Также обратите внимание, что compass прямо сейчас не работает в текущем мастере Assetic, если вы попытаетесь запустить его в Windows. Эта проблема и эта one рассказать о проблеме с compass. - person Matt; 21.11.2011
comment
эта ошибка все еще присутствует в symfony 2.0.9, который связан с assets 1.0.2. - person c33s; 05.02.2012
comment
Это было исправлено? У меня такая же проблема, но только с SASS? - person tftd; 12.04.2014

Ответ Бу 19 ноября в 22:53 у меня сработало, изменив все, что он упомянул в Assetic\Util\ProcessBuilder (я проигнорировал строку 95, так как она выглядит так же, как в моем файле)

Теперь работает на винде. Спасибо!

Просто для подтверждения. Я использую Symfony 2.0.7 и yuicompressor-2.4.7

person TroodoN-Mike    schedule 21.12.2011

Для других пользователей, использующих Windows Server 2008 R2:

  1. Возможно, вам следует изменить свойство папки C:\windows\Temp на 777 (чтение/запись) для пользователя IIS/или обычного пользователя машины.

  2. пожалуйста, распакуйте ruby.7z с rubyinstaller.org и перейдите в C:\_ruby193\bin, в этой позиции распаковки вы должны выполнить командную строку CMD, введите:

    ruby -S gem install sass
    

    так что вы получите sass.bat в этой позиции

  3. Пришло время использовать лучший ответ Бу, и, пожалуйста, обратите внимание, что в symfony2 dev env, возможно, нет необходимости менять use_controller на false (в config.yml), потому что в config_dev.yml есть еще один use_controller (установлено значение true), а в routing_dev.yml также есть _assetic router , они, возможно, связаны.

person user1182824    schedule 01.02.2012