我想将文件加载器用于加载到CSS中的svg资产,但是我想使用react-svg加载器来加载到JS中的svg资产。这似乎不可能......
答案 0 :(得分:1)
好像您可以在任何Webpack issuer
上设置一个Rule
条件,以便为不同的“父文件”使用不同的加载程序。
module: {
rules: [
{
test: /\.svg$/,
oneOf: [
{
issuer: /\.css$/,
loader: 'file-loader',
},
{
issuer: /.jsx?$/,
loader: 'react-svg-loader',
},
},
],
}
文档中的更多信息 https://webpack.js.org/configuration/module/#rule-issuer
答案 1 :(得分:0)
您可以在file-loader
中将webpack.config.js
定义为SVG文件的默认加载器,然后在react-svg-loader
语句中使用require
。 webpack config中的Loader配置:
module: {
rules: {
{
test: /\.svg$/,
use: [
{
loader: 'file-loader',
options: { name: '[name].[ext]' }
}
]
}
}
}
然后在JavaScript文件的require
语句中使用加载程序:
import React from 'react';
const Icon = require('!!react-svg-loader?es5=1!../../../assets/svg/icon.svg');
export default function(props) {
return (
<div>
<Icon />
</div>
);
}
请注意,此处使用双重感叹号(!!
)来防止使用我们在配置文件中定义的文件加载器。