在Windows下如何在Symfony2中使用SCSSfilter?

其实这是两个问题:

  1. 在我的Symfony项目中(在树枝模板中)使用SCSSfilter的正确方法是什么? 我的意思是,我如何在Windows中使用scss二进制文件?

  2. 另外,我是否需要使用指南针? 如果我安装了“如何”使用指南针?

扩展 :这是我做的一些configuration:

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" 

在我的树枝文件中:

 {% 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-&gt;filterLoad(object(Assetic\Asset\FileAsset)) in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Filter\FilterCollection.php line 62 at Assetic\Filter\FilterCollection-&gt;filterLoad(object(Assetic\Asset\FileAsset)) in C:\wamp\www\Symfony\vendor\assetic\src\Assetic\Asset\BaseAsset.php line 83 at Assetic\Asset\BaseAsset-&gt;doLoad(&#039 

Solutions Collecting From Web of "在Windows下如何在Symfony2中使用SCSSfilter?"

我只能说Compass,因为这是我使用的,但是同样的问题很可能与SASS / SCSS过滤器有关。

Compass在Windows系统上有许多已知的文件路径问题:

  • 问题#748: 文件路径规范化,以支持Windows系统
  • 合并请求#554: 修复Windows系统上的错误
  • 提交539f206的评论

…并且修正了提议Assetic处理它们的问题:

  • 拉请求#154: Windows上的罗盘问题,找不到ruby.exe
  • 合并请求#152: 直到指南针问题554未被更正
  • 问题#131: 您必须从项目目录中编译单个样式表。

我发现做一切工作是必要的

#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中手动恢复539f206:

注意:最新的Ruby / Compass版本可能不需要此步骤。 ( 参考 )

路径: %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的实际路径, ruby.exe C:\Ruby\1.9.2

步骤#2和#4可能需要,也可能不需要,但是在这个问题上,我经历了一段时间,最终导致了我的设置工作(这是我所关心的!)。

祝你好运!


方面的问题:你的路径SCSS / Compass二进制文件是否在%kernel.root_dir%/Resources/libs

  1. 不幸的是,树枝scss扩展名是在Windows上打破。 这是一个已知的问题。 我花了一些时间试图找出一个工作,但没有可用。 我发现最好只使用带有–watch参数的scss可执行文件来简单地创建css文件并将它们存储在Resource / public目录中。 这也可以简化一些部署问题,因为您不必担心在服务器上安装scss。

  2. scss不需要使用指南针。 把它想象成一个有用的css库。 例如,如果您曾经想要做css圆边,Compass mixin会生成所有供应商特定的自定义标签。 有关使用它的详细信息,请参阅文档。

在我的情况下,经过几个小时的搜索和尝试许多解决方案,这对我工作:

在'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