如何让 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?的主要内容,如果未能解决你的问题,请参考以下文章

Assetic 未创建组合链接

rbenv 权限在 Ubuntu 上被 Assetic 拒绝

Symfony2 - Assetic - css 字体图标

如何让代码在 Windows 10 上的 GPU 上运行?

Symfony 2 Assetic 致命错误:在资产转储中找不到类“Assetic\Util\PathUtils”

Assetic - 路线“_assetic_001d5b7_0”不存在