在Symfony 2.3.0-DEV中配置Assetic,Sass,Compass(Windows)

时间:2013-03-28 09:13:45

标签: symfony sass compass-sass assetic symfony-2.3

我在C:\Ruby200-x64中安装了Ruby,PATH设置为C:\Ruby200-x64\bin并运行:

gem update --system
gem install sass
gem install compass

然后我在app/config/config.yml中配置了Assetic:

ruby:           C:\Ruby200-x64\bin\ruby.exe
sass:           C:\Ruby200-x64\bin\sass.bat
filters:
    compass:
        bin: C:\Ruby200-x64\bin\compass.bat

app/Resources/views/base.html.twig中,我添加了样式表块:

{% stylesheets
    'css/main.scss' filter="compass" %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

scss文件指向/web/css/main.scss进行测试,我将使用bundles/bundlename/...路径。

然后,当我尝试安装和转储资产时:

php app/console assets:install
php app/console assetic:dump

在使用.bat:

结束路径时出现此错误
  [Assetic\Exception\FilterException]
  An error occurred while running:
  "C:\Ruby200-x64\bin\ruby.EXE" "C:\Ruby200-x64\bin\compass.bat" "compile" "C:\Users\Jes·s\AppData\Local\Temp" "--config" "C:\Users\Jes·s\AppData\Local\Temp\assC7D6.tmp" "--sass-dir" "" "--css-dir" "" "C:/Users/Jes·s/AppData/Local/Temp/assC7D7.tmp.scss"

  Error Output:
  C:/Ruby200-x64/bin/compass.bat:1: syntax error, unexpected tCONSTANT, expecting end-of-input

这不使用.bat扩展名:

[Assetic\Exception\FilterException]
An error occurred while running:
"C:\Ruby200-x64\bin\ruby.exe" "C:\Ruby200-x64\bin\compass" "compile" "C:\Users\Jes·s\AppData\Local\Temp" "--config" "C:\Users\Jes·s\AppData\Local\Temp\ass52DB.tmp" "--sass-dir" "" "--css-dir" "" "C:/Users/Jes·s/AppData/Local/Temp/ass52DC.tmp.scss"

Error Output:
Configuration file, C:\Users\Jes·s\AppData\Local\Temp\ass52DB.tmp, not found or not readable.

我看到了这些(和其他人):

2 个答案:

答案 0 :(得分:3)

没有.bat的版本是正确的,但看起来像“Jes·s”文件夹名称导致问题(应该有你的重音?)。

答案 1 :(得分:2)

你的config.yml看起来应该是这样的

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    bundles:        [ AJWPageBundle ]
#    compass.bin: W:\Ruby\1.9.2\bin\compass.bat
    java: /usr/bin/java
    ruby:           'W:\Ruby\bin\ruby.exe'
    sass:           'W:\Ruby\bin\sass.bat'
    filters:
        cssrewrite: ~
        sass:
          bin: %sass.bin%
          apply_to: "\.scss$"
        compass:
            bin: %compass.bin%
        closure:
            jar: "%kernel.root_dir%/Resources/java/compiler.jar"
        yui_css:
            jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
parameters:
     assetic.ruby.bin: 'W:\Ruby\bin\ruby'
     compass.bin: 'W:\Ruby\bin\compass'
     sass.bin:  'W:\Ruby\bin\sass'

确保修改路径以匹配文件系统。 请注意,有些人的末尾有.exe或.bat,有些不是

接下来在控制台执行“php app / console assets:install” 这应该在web / bundles中创建与src / bundles目录匹配的目录。

从那里你应该找到你将在下面的例子中调用的scss文件的路径:bundles / mybundle / css / bootstrap.scss

在您看来:

{% stylesheets
'bundles/mybundle/css/bootstrap.scss' output='css/*.css' filter="compass" %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

最后在控制台执行“php app / console assetic:dump”

这应该是您在2014年2月1日这个特定时间点所要做的所有事情 - 我不需要为ruby修改任何批处理文件

您会发现资产将找到文件web / bundles / mybundle / css / bootstrap.css以及您可能添加的任何其他css文件,将它们组合,然后将它们保存到web / css / nameoffile_123456.css并附加一些数字最后确保如果有更新,浏览器将被迫下载新版本。