Windows 上的 symfony2 assetics yui 压缩器(路径语法)

问题描述 投票:0回答:3

我正在尝试让 assetics 与 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),但我没有得到任何结果。这两个错误总是出现。也许有人可以指出我正确的方向。

php windows symfony assetic yui-compressor
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 的整个目录,因此我必须制作一个 merge.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 个小时的时间进行调试、阅读和尝试不同的方法。


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

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

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


0
投票
对于使用window server 2008 r2的其他用户:

  1. 也许您应该将 IIS 用户/或计算机的普通用户的 C:\windows\Temp 文件夹属性更改为 777(读/写)

  2. 请从 rubyinstaller.org 解压 ruby.7z,然后进入 C:\_ruby193 中,在这个解压位置你应该执行 CMD 提示符,输入:

    ruby -S gem install sass
    
    
    这样您就会在该位置得到

    sass.bat

  3. 是时候使用Boo的最佳答案了,请注意,在

    symfony2 dev env

    中,也许没有必要将use_controller更改为false(在
    config.yml
    中),因为
    config_dev.yml
    中还有另一个use_controller(设置为true) ,并且在 
    routing_dev.yml
     中还有一个 
    _assetic
     路由器,它们可能是关联的。

© www.soinside.com 2019 - 2024. All rights reserved.