【问题标题】:How do I set the compass in Symfony2 on Windows?如何在 Windows 上的 Symfony2 中设置指南针?
【发布时间】:2015-05-13 05:01:08
【问题描述】:

我一直使用Linux操作系统,但我需要检查其他人在Windows下的操作。我已经建立了一个 xampp 包和一个 symfony2 框架。

config.yml:

# Assetic Configuration
assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    write_to:       %kernel.root_dir%/../../html/
    #bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite  : ~
        sass        :
            bin: "C:\Ruby\bin\sass"
        compass     :
            bin: "C:\Ruby\bin\compass"
        yui_css:
            jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.8.jar"
        yui_js:
            jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.8.jar"
        closure:
            jar: "%kernel.root_dir%/Resources/java/compiler.jar"

错误信息:

[exception] 500 | Internal Server Error | Assetic\Exception\FilterException
[message] An error occurred while running:
"C:\Ruby\bin\ruby.EXE" "C:\Ruby\bin\compass" "compile" "C:\Users\user\AppData\Local\Temp" "--boring" "--config" "C:\Users\user\AppData\Local\Temp\ass1047.tmp" "--sass-dir" "" "--css-dir" "" "C:/Users/user/AppData/Local/Temp/ass1048.tmp.sass"

Error Output:
Individual stylesheets must be in the sass directory.

我无法理解“单个样式表必须在 sass 目录中”。错误。

如何在 Windows 上的 Symfony2 中设置指南针?

版本信息:

  • 窗口:7
  • 红宝石:2.1.5
  • 萨斯:3.4.10
  • 指南针:1.0.3

【问题讨论】:

标签: php ruby symfony sass compass


【解决方案1】:

这对我来说在进行assetic:dump 时有用——但是,在开发服务器(Windows)中打开站点时,我仍然遇到这个错误——即使在清理缓存之后也是如此。我修补了 CompassFilter.php 以保留临时文件。这导致两个文件都正确创建,但没有编译的 CSS。将整个命令粘贴到 Shell 中创建了 CSS。所以这不起作用的唯一原因一定是用户权限或环境变量的问题。

仔细查看 FilterCompass.php 第 341 - 345 行,发现一个奇怪的补丁将 HOME-Directory 设置为 Windows Temp-Dir。我删除了整个块

if ($this->homeEnv) {
    // it's not really usefull but... https://github.com/chriseppstein/compass/issues/376
    $pb->setEnv('HOME', FilesystemUtils::getTemporaryDirectory());
    $this->mergeEnv($pb);
}

一切正常。

【讨论】:

    【解决方案2】:

    编辑:kriswallsmith/assetic/src/Assetic/Filter/CompassFilter.php

    312线左右

    $pb->add('--sass-dir')->add('')->add('--css-dir')->add('');
    

    $pb->add('--sass-dir')->add($tempDir)->add('--css-dir')->add($tempDir);
    

    和 yuicompressor-2.4.8.jar 更改为 yuicompressor-2.4.7.jar。

    # Assetic Configuration
    assetic:
        debug:          "%kernel.debug%"
        use_controller: false
        write_to:       %kernel.root_dir%/../../html/
        #bundles:        [ ]
        java: C:\Program Files (x86)\Java\jre1.8.0_31\bin\java.exe
        ruby: C:\Ruby\bin\ruby.exe
        filters:
            cssrewrite  : ~
            sass        :
                bin: C:\Ruby\bin\sass
            compass     :
                bin: C:\Ruby\bin\compass
            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"
    

    【讨论】:

    • 我必须在 Windows 环境中安装完整的 symfony 开发堆栈,并且只需按照您的建议编辑 kriswallsmith/assetic/src/Assetic/Filter/CompassFilter.php(不需要更改 yuicompressor 版本)。感谢分享!
    • 这行得通,但如果我们可以在某处配置这些路径会很棒(编辑供应商代码很糟糕......)
    猜你喜欢
    • 2013-04-06
    • 2013-10-11
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多