3

是否可以将 svgo 选项传递给 svgr/webpack 加载器?我想删除宽度和高度属性并保留视图框,默认情况下它会删除那些。

{
    test: /\.svg$/,
    use: ['@svgr/webpack'],
    options : {
    svgo: { // Something like this ?
        mergePaths: false,
        removeViewbox: false,
        removeAttrs: true,
    }}

},

4

5 回答 5

4

就我而言,我遇到了以下错误:

  1. plugins应该是一个数组;
  2. 每个插件对象都需要一个name属性

所以这对我有用:

use: {
 loader: '@svgr/webpack',
 options: {
  svgoConfig: {
   plugins: [
    {
      name: 'removeViewBox',
      active: false
    }
   ]
  }
 }
}
于 2021-12-15T08:41:43.197 回答
1

它的嵌套参数语法有点混乱。这是我用来禁用前缀 ID 和类名的方法。我想,在您的情况下,它将类似于mergePaths.active = false, removeViewbox.active = false

loader: '@svgr/webpack',
    options: {
        svgoConfig: {
            plugins: [{
                prefixIds: {
                    prefixIds: false,
                    prefixClassNames: false
                }
            }]
     }
}

我没有测试,但我想它看起来像这样(或类似的,你可能会稍微玩一下以获得正确的语法):

loader: '@svgr/webpack',
    options: {
        svgoConfig: {
            plugins: [{
                removePaths: {
                    active: false,
                }
            },{
                removeViewbox: {
                    active: false,
                }
            },{
                removeAttrs: {
                    active: true,
                }
            }]
     }
}

查看此处的代码,您可以在其中找出实际导出的道具:https ://github.com/svg/svgo

于 2020-10-16T00:14:10.590 回答
1

https://react-svgr.com/docs/options/

答案如下... { loader: "@svgr/webpack", options: { dimensions: false } },

于 2021-11-18T07:18:34.073 回答
0

我找不到通过 svgr 将参数传递给 svgo 的方法,所以我切换到了react-svg-loaderwhich 有关于如何实现这一点的文档:

{
    test: /\.svg$/,
    use: [
        'babel-loader',
        {
            loader: 'react-svg-loader',
            options: {
                svgo: {
                    plugins: [{ removeDimensions: true, removeViewBox: false }],
                    floatPrecision: 2,
                },
            },
        },
    ],
},
于 2020-10-16T14:08:00.713 回答
0

它按照此处此处的描述工作:

{
  test: /\.svg$/,
  use: [{
    loader: '@svgr/webpack',
    options: { 
      svgoConfig: {
        plugins: [
          { mergePaths: false },
          { removeViewbox: false },
          { removeAttrs: true },
        ],
      },
    },
  }],
}
于 2020-11-22T11:18:19.207 回答