3

我试图让资产与 yui 压缩器一起运行,如果它正在运行,sass。目前,两者都不起作用。从 config.yml 和 twig 模板中删除所有过滤器时,它会起作用并且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

将过滤器添加到模板并再次运行assetic: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
  ..

现在assetic:dump 告诉我:

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

我尝试在配置中使用这两个变量(使用 \ 或 \ 而不是 /,添加单引号或双引号,使用短别名 Progra~1 或 Progra~2),但我没有得到任何结果。这两个错误一直在出现。也许有人可以指出我正确的方向。

4

3 回答 3

6

好的,我想通了。伙计,这一次太残忍了。

让我们从简单的东西开始。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

出于某种原因,assetic 总是为 scss 导入整个目录,所以我必须创建一个 combine.scss 以正确顺序导入其他 scss 文件。

现在它变得丑陋了,因为必须更改资产核心才能使其正常工作。Assetic 的开发人员知道这个错误,我认为它已在某些开发主干/分支中修复,但不是稳定的。

必须在第95 行更改Assetic\Util\ProcessBuilder

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 个小时的时间来调试、阅读和尝试不同的方法。

于 2011-11-19T22:53:52.240 回答
0

Boo 11 月 19 日 22:53 的回答通过更改他在 Assetic\Util\ProcessBuilder 中提到的所有内容对我有用(我忽略了第 95 行,因为它看起来与我的文件中的相同)

现在它可以在 Windows 上运行。谢谢!

只是为了确认。我正在使用 Symfony 2.0.7 和 yuicompressor-2.4.7

于 2011-12-21T18:46:40.617 回答
0

For other users who use window server 2008 r2 :

  1. Maybe you should change the C:\windows\Temp folder property to 777 (read/write) for the IIS user / or the machine's normal user

  2. please unpack the ruby.7z from rubyinstaller.org , and go to C:\_ruby193\bin , in this unpack position you should exec the CMD prompt , type :

    ruby -S gem install sass
    

    so that you will get the sass.bat in that position

  3. It's time to use Boo's best answer , and please notice that in symfony2 dev env maybe it's not necessary to change the use_controller to false (in the config.yml) , because there's another use_controller in the config_dev.yml (set to true) , and in routing_dev.yml there's also a _assetic router , they're perhaps associated.

于 2012-02-01T16:28:24.090 回答