如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?
Posted
技术标签:
【中文标题】如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?【英文标题】:How can I get Assetic to compile SCSS on Zend Framework on Windows? 【发布时间】:2012-06-18 18:17:34 【问题描述】:我的网站在 Zend Framework 上,使用 Assetic 编译 SCSS 并缩小它。
当我在 Ubuntu 上开发时,它工作得非常好。
有时我需要在 Windows (WAMP) 而不是 Ubuntu 上进行开发。
我无法让 Assetic 在 Windows 上工作。
我发现了很多关于它的问答,但似乎没有适用于我的答案。例如。我认为我在任何地方都没有 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】:我认为我已经成功了,但我不能 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。
我将 C:\wamp\bin\php\php5.3.10\PEAR\pear\Symfony\Component\Process\Process.php 中的文件替换为 https://raw.github.com/symfony/Process/master/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));
。
【讨论】:
以上是关于如何让 Assetic 在 Windows 上的 Zend Framework 上编译 SCSS?的主要内容,如果未能解决你的问题,请参考以下文章
rbenv 权限在 Ubuntu 上被 Assetic 拒绝