YUI

  • 使用 YUI Compressor 压缩 CSS 导致 image/svg+xml 无法显示的问题

    2018-08-06 22:04:20 1462 0 技术文章

    bootstrap 升级到 4.3 以后,.navbar-toggler-icon 的背景是一个 svg 图像,但被压缩后,url 中的空格全部消失了,所以无法显示这个图标。

    .navbar-light .navbar-toggler-icon { background-image: url(data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://ww…p='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E); }
    

    于是想到修改 java 代码,重新编译。

    https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/CssCompressor.java
    

    修改源码

    找到 CssCompressor.java,修改第 141 行,

    css = this.preserveToken(css, "url", "(?i)url\\(\\s*([\"']?)data\\:", true, preservedTokens);
    

    改为

    css = this.preserveToken(css, "url", "(?i)url\\(\\s*([\"']?)data\\:", false, preservedTokens);
    

    重新编译

    安装 ant

    # yum -y install ant
    # ant // 编译为 jar 文件
    

    生成 .jar 文件位于 build 目录。

    THE END