react-svg-loader
Install
npm i react-svg-loader --save-devor
yarn add react-svg-loader --devUsage
// without webpack loader config; // or if you're passing all .svg files via react-svg-loader,; // and use it like any other React Component<Image1 width=50 height=50/><Image2 width=50 height=50/>Loader output
By default the loader outputs ES2015 code (with JSX compiled to JavaScript using babel-preset-react). You can combine it with babel-loader + babel-preset-env to compile it down to your target.
// In your webpack config test: /\.svg$/ use: loader: "babel-loader" loader: "react-svg-loader" options: jsx: true // true outputs JSX tags SVGO options
test: /\.svg$/ use: "babel-loader" loader: "react-svg-loader" options: svgo: plugins: removeTitle: false floatPrecision: 2 Internals
Input SVG
↓
SVG Optimize using SVGO
↓
Babel Transform with preset=react and plugin=svgToComponent
Assumptions and Other gotchas
- Root element is always
<svg> - SVG is optimized using SVGO