symfony2 сборка yui компрессор на windows (синтаксис пути) - PullRequest
3 голосов
/ 19 ноября 2011

Я пытаюсь запустить сборку с компрессором 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

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

[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
  ..

Теперь сборка: dump говорит мне:

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

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

Ответы [ 3 ]

6 голосов
/ 20 ноября 2011

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

Давайте начнем с простых вещей.Рабочая версия 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, поэтому мне пришлось создать объединение .scss, которое импортирует другую scss.файлы в правильном порядке.

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

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 часов на отладку, чтение и пробу разных подходов.

0 голосов
/ 01 февраля 2012

Для других пользователей, которые используют 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 (установленном в true) есть другой use_controller, а в routing_dev.yml есть также маршрутизатор _assetic, возможно, онисвязанный

0 голосов
/ 21 декабря 2011

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

Теперь этоработает на окнах.Спасибо!

Просто чтобы подтвердить.Я использую Symfony 2.0.7 и yuicompressor-2.4.7

...