1

我正在使用 kriswallsmith 资产包为带有罗盘过滤器的 css 提供服务,在开发环境中每次都会生成,并且在 prod 环境中,样式是使用没有罗盘操作的转储 css 文件提供的。所以我想知道如果 smyfony 无法找到 compass 二进制文件,在 dev env 中是否有办法提供与 prod env 相同的 css 文件。

这是我在脑海中加载 sass 文件的方式:

{% stylesheets filter="compass"
    "@Bundle/Resources/public/css/colors.sass"
    "@Bundle/Resources/public/css/layout.sass"
    "@Bundle/Resources/public/css/menu.sass"
    "@Bundle/Resources/public/css/main.sass"
    "@Bundle/Resources/public/css/fonts.sass"
%}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

有解决方法吗?

4

1 回答 1

1

您可以在过滤器前面使用问号(?) 以仅在生产模式下应用它,或者在调试模式关闭时更精确地应用它。

{% stylesheets filter="?compass"
    "@Bundle/Resources/public/css/colors.sass"
     // ...
%}
     <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %} 

您还可以将此资产集合的调试选项设置为 false,如果您使用不带 --no-debug 选项的assetic:dump,这将阻止assetic 创建单个文件(以便于调试)。

只要您在开发环境中的 html 中包含基于 JavaScript 的编译器,Assetic 将仅连接适用于 .sass 文件的文件。

{% stylesheets filter="?compass" debug="false"
    "@Bundle/Resources/public/css/colors.sass"
     // ...
%}
     <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %} 

第二个选项是在开发环境中包含一个静态文件。因此,在 config.yml 中的 twig 部分设置为您当前的 kernel.environment 参数添加一个全局的 twig。

# app/config/config.yml

twig:
    globals:
        env: %kernel.environment%

然后像这样在树枝中使用它:

{% if env == 'dev' %}
    <link rel="stylesheet" href="{{ asset('/path/to/your/compiled/asset.css"') }} />
{% else }
    // ...
 {% endif %}

即使您在 url 中使用 app_dev.php,asset() 助手也会确保您的资产正确输出。

于 2013-05-23T15:00:25.990 回答