实际上,这是两个问题:
在Windows的Symfony项目中使用SCSS过滤器的正确方法是什么(在Twig模板中)? 我的意思是,我如何在Windows中使用scss二进制文件?
另外,我是否一定需要使用指南针?如果安装了指南针,我会用“指南针”吗?
扩展程序:以下是我所做的一些配置:
在 app / config / config.yml
中assetic:
debug: %kernel.debug%
use_controller: false
filters:
scss:
bin: "%kernel.root_dir%/Resources/libs/scss"
compass:
bin: "%kernel.root_dir%/Resources/libs/compass"
在我的twig文件中:
{% stylesheets
'@PlaylyfeBaseBundle/Resources/public/css/base.scss'
'@PlaylyfeBaseBundle/Resources/public/css/another.scss'
filter='scss'
output='css/compiled/total.css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
但是,当我加载页面时,我收到以下错误(在css文件中)
[exception] 500 | Internal Server Error | RuntimeException
[message] The filename, directory name, or volume label syntax is incorrect.
[1] RuntimeException: The filename, directory name, or volume label syntax is incorrect.
at n/a
in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Filter\Sass\SassFilter.php line 162
at Assetic\Filter\Sass\SassFilter->filterLoad(object(Assetic\Asset\FileAsset))
in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Filter\FilterCollection.php line 62
at Assetic\Filter\FilterCollection->filterLoad(object(Assetic\Asset\FileAsset))
in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Asset\BaseAsset.php line 83
at Assetic\Asset\BaseAsset->doLoad('
答案 0 :(得分:4)
我只能说Compass,因为我使用的是同样的问题/问题也很可能与SASS / SCSS过滤器有关。
Windows系统上Compass有许多已知的文件路径问题:
...还修复了Assetic处理它们的问题:
我发现做以下事情对于一起工作是必要的......
<强>#1。确保%ruby%\bin
位于您的环境PATH
变量中
实施例:
PATH = "...;C:\Ruby\1.9.2\bin"
<强>#2。修改%ruby%\bin\compass.bat
以使用绝对路径:
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"C:\Ruby\1.9.2\bin\ruby.exe" "C:/Ruby/1.9.2/bin/compass" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"C:\Ruby\1.9.2\bin\ruby.exe" "%~dpn0" %*
<强>#3。在compiler.rb
@ line~10:
注意:最新的Ruby / Compass版本可能不需要此步骤。 (Reference)
路径:%ruby%\lib\ruby\gems\1.9.1\gems\compass-*\lib\compass\compiler.rb
# self.from, self.to = from.gsub('./', ''), to
self.from, self.to = File.expand_path(from), to
<强>#4。确保正确配置了Assetic:
示例(config.yml
):
assetic:
debug: %kernel.debug%
use_controller: false
filters:
cssrewrite: ~
compass:
bin: %compass.bin%
yui_js:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
yui_css:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
我在参数文件中使用%compass.bin%
,以便我可以简化Windows和* nix系统之间代码库的转换,因此我的parameters.yml
看起来像这样:
# Assetic
compass.bin: C:\Ruby\1.9.2\bin\compass.bat
<强>#5。 (可选)升级Assetic和AsseticBundle:
我将Assetic和AsseticBundle标记为在我的deps
文件中与Symfony 2.0.x一起使用的最后一次提交:
[assetic]
git=http://github.com/kriswallsmith/assetic.git
version=ac71449e46bed22c276da26bf54ab2f733b3801d
[AsseticBundle]
git=http://github.com/symfony/AsseticBundle.git
target=bundles/Symfony/Bundle/AsseticBundle
version=da4a46ce37557dcf3068b8493b12bdbbe47455e2
请务必将上述所有路径中的%ruby%
替换为ruby.exe
的实际路径,我的C:\Ruby\1.9.2
。
步骤#2和#4可能需要也可能不需要,但是在我解决这个问题的过程中,这是我最终的结果,我的设置正常工作(这就是我所关心的!)。
祝你好运! 附带问题:您通往%kernel.root_dir%/Resources/libs
的SCSS / Compass二进制文件的路径是什么?
答案 1 :(得分:1)
不幸的是,twig scss扩展在Windows上被破坏了。这是一个众所周知的问题。我花了一些时间试图想出一个工作但没有可用。我发现最好只使用带有--watch参数的scss可执行文件来创建css文件并将它们存储在Resource / public目录中。这也可以简化一些部署问题,因为您不必担心服务器上有scss。
scss不需要使用指南针。可以把它想象成一个有用的css库。例如,如果你想要做css圆形边缘,Compass mixin将生成所有供应商特定的自定义标签。有关使用它的详细信息,请参阅文档。
答案 2 :(得分:-1)
在我的案例中经过数小时的搜索并尝试了许多解决方案,这对我有用:
在'app / config / config.yml'中添加:
parameters:
# Assetic
assetic.filter.compass.bin: D:/Ruby193/bin/compass
D:/ Ruby193 / bin / compass将取决于您的Ruby路径。
查看截图: http://s23.postimg.org/3n2oc5wh7/MY_SOLUTION_THAT_I_FOUND.jpg
我的系统: Windows 7旗舰版, Ruby 1.9.3, Symfony 2.4.3