使用 @svgr/webpack 加载 SVG 时如何保留 ids?

Lou*_*let 3 svg reactjs webpack svgo

我正在使用@svgr/webpack将 SVG 文件加载到 React 中,工作正常,但它会删除元素的 id。
为了保留ID,我cleanIDs在SVGO配置文件中看到了这个选项,我将其设置为false,但没有效果。
我怎样才能保留我的身份证?

以下是我在 webpack 中配置加载器的方法:

{
  test: /\.svg$/,
  use: [
    {
      loader: "@svgr/webpack",
      options: {
        cleanIDs: false,
      },
    },
  ],
},
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

  • 完全禁用 SVGO,但无法加载 SVG 文件
  • 使用 cleanupIDs 选项,但 id 仍被删除

小智 5

这个配置对我有用@svgr/webpack@5.5.0

use: [
  {
    loader: "@svgr/webpack",
    options: {
      svgoConfig: {
        plugins: [
          {
            cleanupIDs: false
          }
        ]
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

一些帮助我解决这个问题的链接:

  • @LouisCoulet 将 `{prefixIds: false}` 添加到 `plugins` 中,您就可以开始了。该文档说默认情况下已经禁用,但在这种情况下您仍然需要禁用它 https://github.com/svg/svgo#built-in-plugins (3认同)
  • 谢谢@heidi,它有效。然而它有两个新问题:它可以防止折叠组,并且 id 以文件名为前缀:从“path1”到“hexa_svg__path1”。你注意到同样的情况了吗? (2认同)