2
複数のWebpackローダーを組み合わせてSVGアセットを読み込み、インラインで使用するように変換し、最終的に結果を実際のReactコンポーネントに変換します。応用。複数のWebpackローダーを使用してSVGをReactコンポーネントに変換する
const path = require('path')
module.exports = {
entry: './src/index.js',
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.jsx?$/,
include: path.resolve(__dirname, 'src'),
use: {
loader: 'babel-loader',
options: {
presets: [
['env', {
browsers: supportedBrowsers,
modules: false
}]
]
}
}
},
{
test: /\.svg$/,
include: path.resolve(__dirname, 'src'),
use: [
{
loader: 'svg-inline-loader',
options: {
removeTags: true
}
},
{
loader: 'svg-react-loader'
}
]
}
]
}
}
それが期待通りローダーが働く所有だ上でsvg-react-loader
を使用する場合は、しかし、SVG資産の多くは、私がsvg-inline-loader
を使用して取り除くしたい不要な要素と属性を持っています。
上記のように設定を使用すると、結果は実行可能なJavaScriptではなくテキストとして読み込まれます。
私はこれを達成するための私の試みで、次のローダー使用しています:他のローダーを使用しても大丈夫でしょう
これは私にとって受け入れ可能な解決策だろう、しかし、私はまだ理由は、このセットアップが何であるかを知りたいのです働いていない。 –
@JonKoops 'svg-inline-loader'はsvgを文字列として読み込むので、HTMLやJavaScriptでインラインで使うことができます。 'svg-react-loader'はsvgファイルを要求します –