Javascript 当使用xml js时,SVG元素被排序,这会破坏图标
我目前正在从sprite中删除未使用的SVG。为了完成我正在使用的任务。 purge svg包用于将文件转换为svg。如下面几行所示 问题是SVG中元素的顺序是有序的,这会破坏图标。 从上面的图像中,左侧的SVG是原始SVG,右侧的SVG是由Javascript 当使用xml js时,SVG元素被排序,这会破坏图标,javascript,svg,libxml-js,Javascript,Svg,Libxml Js,我目前正在从sprite中删除未使用的SVG。为了完成我正在使用的任务。 purge svg包用于将文件转换为svg。如下面几行所示 问题是SVG中元素的顺序是有序的,这会破坏图标。 从上面的图像中,左侧的SVG是原始SVG,右侧的SVG是由purge SVG编译的SVG,您可以看到元素被重新排序,将rect和circle带到SVG的底部,打破了图标 <symbol id="icon-card-cash-expenses-v2" viewBox="0
purge SVG
编译的SVG,您可以看到元素被重新排序,将rect
和circle
带到SVG的底部,打破了图标
<symbol id="icon-card-cash-expenses-v2" viewBox="0 0 48 48">
<path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z"/>
<path d="M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20z" fill="currentColor"/>
<path d="M23.5 32a7.5 7.5 0 100-15 7.5 7.5 0 000 15z" fill="currentColor"/>
<path d="M21 27.135s1.364.865 3.273.865c1.09 0 2.727-.432 2.727-1.73 0-1.08-.936-1.56-3-2.378l-1.09-.433c-1.092-.432-1.364-1.08-1.364-1.73 0-.78.818-1.729 2.727-1.729 1.309 0 2.363.577 2.727.865" stroke="#fff" stroke-width="1.5" fill="transparent"/>
<path d="M24 20v-2M24 30v-2" stroke="#fff" stroke-width="1.5"/>
<rect x="10" y="15" width="28" height="18" rx="1" fill="#fff"/>
<circle cx="24" cy="24" r="8" fill="currentColor"/>
</symbol>
基于xml js
的文档:
注:虽然非紧凑型输出更准确地表示
原始XML版本比压缩版本更详细,非压缩版本更详细
而且会占用更多的空间。此库提供了这两个选项。使用
{compact:false}如果你不确定,因为它保存了一切;
否则,如果您想节省空间而不想节省空间,请使用{compact:true}
注意混合相同名称的元素并失去它们的顺序
根据文档,似乎compact:true
没有保持原始顺序。但是当我改为compact false时,SVG的编译中断了
fs.writeFileSync(filename, js2xml(svg, { compact: false, spaces: 2 }))
添加compact:false
将返回一个空的icons.pulleted.aa00hgjh.svg
文件。如果我将其更改为compact:true
,我会得到SVG,但会重新排序,这会破坏图标
<symbol id="icon-card-cash-expenses-v2" viewBox="0 0 48 48">
<path d="M24 48c13.255 0 24-10.745 24-24S37.255 0 24 0 0 10.745 0 24s10.745 24 24 24z"/>
<path d="M24 44c11.046 0 20-8.954 20-20S35.046 4 24 4 4 12.954 4 24s8.954 20 20 20z" fill="currentColor"/>
<path d="M23.5 32a7.5 7.5 0 100-15 7.5 7.5 0 000 15z" fill="currentColor"/>
<path d="M21 27.135s1.364.865 3.273.865c1.09 0 2.727-.432 2.727-1.73 0-1.08-.936-1.56-3-2.378l-1.09-.433c-1.092-.432-1.364-1.08-1.364-1.73 0-.78.818-1.729 2.727-1.729 1.309 0 2.363.577 2.727.865" stroke="#fff" stroke-width="1.5" fill="transparent"/>
<path d="M24 20v-2M24 30v-2" stroke="#fff" stroke-width="1.5"/>
<rect x="10" y="15" width="28" height="18" rx="1" fill="#fff"/>
<circle cx="24" cy="24" r="8" fill="currentColor"/>
</symbol>
有没有办法防止在xmljs
中对SVG进行重新排序