默认情况下,Rslib 会将 SVG 图片当作静态资源处理。
通过添加 @rsbuild/plugin-svgr 插件,Rslib 支持调用 SVGR,将 SVG 图片转换为一个 React 组件使用。
你可以通过如下的命令安装插件:
你可以在 rslib.config.ts
文件中注册插件:
在 bundle 模式下,Rslib 支持 @rsbuild/plugin-svgr 下的所有用法,唯一的区别是当以 URL 形式使用 SVG 文件时,Rslib 会按照 引用静态资源 在产物中对应保留静态资源的 import
语句。
下面是一个使用示例:
如果导入的路径不包含 ?react
后缀,那么 SVG 会被当做普通的静态资源来处理,即保留对静态资源的 import
语句。
@rsbuild/plugin-svgr
也支持默认导入和混合导入等用法:
'default'
来启用默认导入。在 bundleless 模式下,由于每个文件都是独立经过代码转换,因此不支持 ?react
和 ?url
的引用形式,但支持下面两种使用形式:
@rsbuild/plugin-svgr
支持具名导入 ReactComponent
来使用 SVGR,你需要设置 svgrOptions.exportType 为 'named'
:
所有的 .svg
文件都会被转换成 React 组件,此时你可以:
'default'
来修改为默认导出。如果你的库中同时存在 url 和 React 组件两种引入形式,你也可以通过混合导入的方式来使用:
此时引用的 SVG 文件会同时导出 URL 和 React 组件:
更多信息可以参考 mixedImport 选项。