我正在使用kriswallsmith资产包来为带有罗盘过滤器的css服务,每次都会在dev环境中生成并且prod环境样式与没有罗盘操作的转储css文件一起提供。所以我想知道如果smyfony无法找到罗盘二进制文件,是否有一种方式在dev env中提供相同的css文件而不是prod env。
以下是我在头脑中加载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 %}
有解决方法吗?
答案 0 :(得分:1)
您可以在过滤器前使用问号(?),仅在生产模式下应用它,或者在调试模式关闭时更精确地应用它。
{% stylesheets filter="?compass"
"@Bundle/Resources/public/css/colors.sass"
// ...
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
如果使用assetic:dump而不使用--no-debug选项,也可以将此资产集合的debug选项设置为false,这将阻止资产创建单个文件(以便于调试)。
只要您在开发环境中包含了html中包含的基于JavaScript的编译器,那么Assetic将只连接适用于.sass文件的文件。
{% stylesheets filter="?compass" debug="false"
"@Bundle/Resources/public/css/colors.sass"
// ...
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
第二个选项是在开发环境中包含一个静态文件。因此,在设置为当前kernel.environment参数的twig部分下的config.yml中添加一个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 %}
即使您在网址中使用app_dev.php,asset()帮助程序也会确保您的资产输出正确。