如何让Assetic在Windows上的Zend Framework上编译SCSS?

时间:2012-06-15 16:27:33

标签: zend-framework wamp sass assetic

我的网站在Zend Framework上,使用Assetic编译SCSS并缩小它。

当我在Ubuntu上开发时,它非常有效。

有时我需要在Windows(WAMP)而不是Ubuntu上进行开发。

我无法让Assetic在Windows上运行。

我发现了许多Q&关于它,但似乎没有答案适用于我。例如。我认为我在任何地方都没有config.yml文件。

How to have Assetic + sass work with Symfony2 in Windows?

How to use SCSS filter in Symfony2 under Windows?

这是一个错误: Assetic\Exception\FilterException: An error occurred while running: "C:\Ruby193\bin\sass.bat" "--load-path" "C:\code\branches\signup-and-login\scss" "--scss" "--cache-location" "C:\Windows\Temp" "C:\Windows\Temp\assCCF2.tmp" Error Output: The filename, directory name, or volume label syntax is incorrect.

思想?

1 个答案:

答案 0 :(得分:0)

我认为我的工作正常,但我不能100%确定我可以重现修复它的步骤。

如果您想出更好的细节,请添加新的答案。

我在C:\Ruby193\安装了Ruby。我需要将'bin'文件夹中的sass.bat文件编辑为:

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe" "C:/Ruby193/bin/sass" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:/Ruby193/bin/ruby.exe" "%~dpn0" %*

我看了https://github.com/symfony/AsseticBundle/issues/81

我用https://raw.github.com/symfony/Process/master/Process.php替换了C:\ wamp \ bin \ php \ php5.3.10 \ PEAR \ pear \ Symfony \ Component \ Process \ Process.php中的文件。

我不知道这是否重要,但是Assetic使用正斜杠而不是名为DIRECTORY_SEPARATOR的PHP常量,所以:

在Assetic \ Filter \ Sass \ SassFilter.php中,我补充说     $root = str_replace('/', DIRECTORY_SEPARATOR, $root);//fix for Windows$root = $asset->getSourceRoot();

略低于此,我将一行更改为$pb->add('--load-path')->add(dirname($root.DIRECTORY_SEPARATOR.$path));