【问题标题】:Configure Assetic, Sass, Compass in Symfony 2.3.0-DEV (Windows)在 Symfony 2.3.0-DEV (Windows) 中配置 Assetic、Sass、Compass
【发布时间】:2013-03-18 15:54:56
【问题描述】:

我在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 用于在 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.

我看到了这些(以及其他):

【问题讨论】:

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


    【解决方案1】:

    你的 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 并附加一些数字到最后以确保如果有更新,浏览器会强制下载新版本。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 大声笑 在我的用户名中添加符号绝对是愚蠢的(我认为 W8 将用户名的 LiveID 配置文件中的名称)。之前没有时间在用户名中没有符号的本地用户中测试它。我现在会尝试并报告。 您知道是否可以更改临时文件夹 (../AppData/Local/Temp/foo.tmp) 吗?
      • 正确拼写你的名字绝对不傻。应该向供应商报告需要 ASCII 用户名的软件错误(我建议您停止使用该供应商的产品,因为他们显然是白痴)
      猜你喜欢
      • 2016-04-15
      • 2012-07-04
      • 2014-07-27
      • 2013-09-10
      • 2012-03-26
      • 2012-07-29
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多