2

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

gem update --system
gem install sass
gem install compass

然后我在以下位置配置了 Assetic app/config/config.yml

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在 prod 中进行测试,我将使用这些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.

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

4

2 回答 2

3

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

于 2013-03-28T11:24:08.377 回答
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/consoleassetic:dump”

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

您会发现assetic 会找到文件 web/bundles/mybundle/css/bootstrap.css 和您可能添加的任何其他 css 文件,将它们组合起来,然后将它们保存到 web/css/nameofile_123456.css 并在末尾附加一些数字确保如果有更新,浏览器会被强制下载新版本。

于 2014-02-02T02:01:52.313 回答