2017-06-04 104 views
1

我正在使用webpack來構建svg-sprite。兩個svgo加載器衝突

但有一個問題:部分圖標有多種顏色,部分 - 只有一個。它們按原樣使用。

一個顏色圖標應根據以下內容改變顏色:hover /:active。

而根據這個,我應該清理一個顏色圖標的填充屬性。

我不能用多色的。

我決定將它們分開到不同的文件夾,並創建兩個的WebPack規則:

{ 
     test : /icon\/.*\.svg$/, 
     loaders : [ 
      'svg-sprite-loader', 
      { 
      loader: 'svgo-loader', 
      options: { 
       plugins: [ 
       … 
       ]}}]}, 
     { 
     test : /monoicon\/.*\.svg$/, 
     loaders : [ 
      'svg-sprite-loader', 
      { 
      loader: 'svgo-loader', 
      options: { 
       enforce: 'pre', 
       plugins: [ 
       … 
       { removeAttrs: { attrs: '(fill|stroke)' }}, 
       ]}}]}, 

,一切都很好,但它實際上並沒有正常工作。我收到的控制檯:

…/monoicon/cross.svg 
Module build failed: Error: Error in parsing SVG: Non-whitespace before first tag. 
Line: 0 
Column: 1 
Char: i… 

挖網絡,我發現:

這是與我加載它的方式有問題。你需要前綴require("-!...當你覆蓋其他裝載機...

https://github.com/jhamlet/svg-react-loader/issues/3#issuecomment-146334228

所以它看起來像這個問題的根源是,我必須用svgo-loader規則。在每個svg導入中重寫webpack加載器規則 - 有點不合適的想法。那麼我如何以適當的方式解決這個問題呢?

問候。

回答

1

我是個白癡。寫正則表達式的:

/\/icon\/.*\.svg$/ 
/\/monoicon\/.*\.svg$/ 
+0

非常感謝:D – Pixelomo