webpack css-loader忽略& svg定义网址

时间:2014-12-02 13:23:18

标签: svg less webpack

我在使用css-loader的项目中使用WebPack。

此项目中的SVG元素具有标记定义,这些标记在样式表中分配如下:

标记定义:

<defs>
    <marker id="line-marker">
        <circle cx="6" cy="6" r="5"></circle>
    </marker>
</defs>

标记使用:

path.nv-line {
  marker-mid: url('#line-marker');
}

我正在使用样式中的标记,因为我不想弄乱我正在使用的图表库,但是css加载器会破坏URL。

有没有办法忽略这些规则中的某些URL值或以其他方式阻止加载程序失败?

2 个答案:

答案 0 :(得分:0)

所以这似乎是一个较少的问题。

如果引用是在不在较低入口点的顶层进行处理的文件中进行的,那么该URL将被添加到前面。

我在GitHub上报告了这个问题: https://github.com/less/less.js/issues/2320

作为一种变通方法,您可以在顶级文件夹中的较少文件中使用这些规则,并且uri将保持不变。

答案 1 :(得分:0)

您是否使用--relative-url选项进行编译?如果是这样,则结果是预期的,因为此选项明确要求将任何url更改为相对于url中使用的marker-mid的文件(在此特定情况下,Less不能知道此--relative-url url具有与生成的CSS文件完全无关。)

因此,作为一种解决方法,您需要选择其中一种:

  • 关闭url
  • 隐藏marker-mid: ~"url(#line-marker)";与Less(即:url
  • 从那里删除marker-mid: '#line-marker';(即:{{1}} - 虽然我不确定这是否会保持符合标准)