我的网站在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.
思想?
答案 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));
。