将 uglifycss 应用到我的 css 时,我所有的 @media 和 @font-face 声明都丢失了

When applying the uglifycss to my css, all my @media and @font-face declarations are lost

我在我的基本树枝模板中使用以下块来创建压缩的 css 文件:

{% stylesheets  output='bundles/myBundle/compressed/compressed.css'
                filter='uglifycss'
                filter='cssrewrite'
                'bundles/myBundle/stylesheets/app.css'
                'bundles/myBundle/stylesheets/tablet.css'
                'bundles/myBundle/stylesheets/phone.css'
%}
        <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

几周前(并升级到 ubuntu 15.04)之前,这可以很好地正确转储我所有的 css 文件。

现在,我的@media 和我的@font-family 部分从 compiled/compressed css 中消失了。

如果我只应用 cssrewrite 过滤器而不应用 uglifycss 过滤器,@media 和 @font-face 部分就在那里,正如预期的那样。

我使用:uglifycss@0.0.15,Symfony v2.6.8,symfony/assetic v2.6.1

有谁知道这里可能出了什么问题?

感谢您的帮助! 多米尼克


编辑: 我能够把它固定下来一点。 Symfony 执行以下命令,以丑化 css。

/usr/bin/nodejs /usr/local/bin/uglifycss /path/to/my/app.css

在 bash 命令行上执行相同的命令也会导致相同的错误行为。所以这不是 Symfony 或 assetic 的问题,而是 uglifycss 的问题。

有什么想法吗?

干杯, 多米尼克

进一步调试发现 css 评论是问题所在。

根据 http://www.w3.org/TR/CSS21/syndata.html#comments 这样的评论:

/*/////////////////////////////////*/
/* some comment                    */
/*/////////////////////////////////*/

但事实证明,uglifycss 0.0.15 以'/*/'结尾的注释存在问题。

在最后一个 '/' 和 '*/' 之间添加一个 space 解决了我的问题。

/*//////////////////////////////// */
/* some comment                    */
/*//////////////////////////////// */

我还在 github 上开了一个问题。 https://github.com/fmarcia/UglifyCSS/issues/33

干杯, 多米尼克