我们正在使用 minify-maven-plugin 来最小化我们的 Javascript 和 CSS 文件。最近我们遇到一个错误,它从 URL 字符串中去除空格,导致其无法使用。这是插件使用的配置。
<plugin>
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<executions>
<execution>
<id>default-minify</id>
<configuration>
<jsEngine>CLOSURE</jsEngine>
<skipMerge>true</skipMerge>
<nosuffix>true</nosuffix>
<webappSourceDir>${basedir}/src/main/webapp</webappSourceDir>
<cssSourceDir>css</cssSourceDir>
<cssSourceFiles>
<cssSourceFile>global.css</cssSourceFile>
</cssSourceFiles>
<jsSourceDir>javascript</jsSourceDir>
<jsSourceFiles>
<jsSourceFile>root.js</jsSourceFile>
<jsSourceFile>global.js</jsSourceFile>
</jsSourceFiles>
</configuration>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
</plugin>
这是受影响的代码行:
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3e%3ccircle cx='50%25' cy='50%25' r='4' fill='%23EA7200'/%3e%3c/svg%3e");
这是运行 minify 后的样子:
background-image: url("data:image/svg+xml,%3csvgxmlns='http://www.w3.org/2000/svg'viewBox='001414'%3e%3ccirclecx='50%25'cy='50%25'r='4'fill='%23EA7200'/%3e%3c/svg%3e")
有关如何防止它剥离空白(而不缩小空白)或是否有可用于解决问题的字符的任何帮助。
我能够通过验证我的 svg 然后重新编码来解决这个问题,以便所有空白都得到正确编码(base64 编码是另一种选择,但我选择使用 URI 编码用于脚本编写)
data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%3E%3Ccircle%20cx%3D'50%25'%20cy%3D'50%25'%20r%3D'4'%20fill%3D'blue'%20%2F%3E%3C%2Fsvg%3E