Imagemin svgo删除路径

时间:2017-06-21 11:22:23

标签: javascript svg gulp gulp-imagemin imagemin

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="icons" transform="translate(-368.000000, -426.000000)">
            <g id="attention-blue" transform="translate(368.000000, 426.000000)">
                <circle id="Oval-13" fill="#34C6D9" cx="10" cy="10" r="10"></circle>
                <path d="M10,10.8 L10,5.6" id="Line" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                <path d="M10,14.8 L10,14.8" id="Line2" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
            </g>
        </g>
    </g>
</svg>

我有两个“路径”标签的SVG图标。使用imagemin.svgo imagemin构建后删除其中一个“路径”,我的图标看起来非常糟糕。我怎样才能解决这个问题?

gimagemin.svgo({
    plugins: [
      {minifyStyles: false},
      { removeViewBox: false },
      { removeUselessStrokeAndFill: false },
      { cleanupIDs: false }
        ]
  })

这是我的选择。

1 个答案:

答案 0 :(得分:0)

实际上,SVGO不会删除第二条路径,它会将其合并到第一条路径中(默认情况下启用“mergePath”插件)。 但是,由于第二条路径长度为零,SVGO删除了“lineto”(“L10,14.8”)命令(“convertPathData”插件就是这样),所以它简化为无用的“moveto”( M10 14.8)命令。

我建议不要以这种方式绘制图像。您可以使用其他<circle>,或在arc curves的路径中绘制一个圆圈。

当然,您可以为此特定图像禁用“convertPathData”插件,但我不建议将其作为一般解决方案,因为它是基本优化插件之一。