Spaces:
Sleeping
Sleeping
# @svgr/webpack | |
[](https://travis-ci.org/gregberge/svgr) | |
[](https://www.npmjs.com/package/@svgr/webpack) | |
[](https://github.com/gregberge/svgr/blob/master/LICENSE) | |
Webpack loader for SVGR. | |
``` | |
npm install @svgr/webpack --save-dev | |
``` | |
## Usage | |
In your `webpack.config.js`: | |
```js | |
{ | |
test: /\.svg$/, | |
use: ['@svgr/webpack'], | |
} | |
``` | |
In your code: | |
```js | |
import Star from './star.svg' | |
const App = () => ( | |
<div> | |
<Star /> | |
</div> | |
) | |
``` | |
### Passing options | |
```js | |
{ | |
test: /\.svg$/, | |
use: [ | |
{ | |
loader: '@svgr/webpack', | |
options: { | |
native: true, | |
}, | |
}, | |
], | |
} | |
``` | |
### Using with `url-loader` or `file-loader` | |
It is possible to use it with [`url-loader`](https://github.com/webpack-contrib/url-loader) or [`file-loader`](https://github.com/webpack-contrib/file-loader). | |
In your `webpack.config.js`: | |
```js | |
{ | |
test: /\.svg$/, | |
use: ['@svgr/webpack', 'url-loader'], | |
} | |
``` | |
In your code: | |
```js | |
import starUrl, { ReactComponent as Star } from './star.svg' | |
const App = () => ( | |
<div> | |
<img src={starUrl} alt="star" /> | |
<Star /> | |
</div> | |
) | |
``` | |
The named export defaults to `ReactComponent`, but can be customized with the `namedExport` option. | |
### Use your own Babel configuration | |
By default, `@svgr/webpack` includes a `babel-loader` with [an optimized configuration](https://github.com/gregberge/svgr/blob/master/packages/webpack/src/index.js). In some case you may want to apply a custom one (if you are using Preact for an example). You can turn off Babel transformation by specifying `babel: false` in options. | |
```js | |
// Example using preact | |
{ | |
test: /\.svg$/, | |
use: [ | |
{ | |
loader: 'babel-loader', | |
options: { | |
presets: ['preact', 'env'], | |
}, | |
}, | |
{ | |
loader: '@svgr/webpack', | |
options: { babel: false }, | |
} | |
], | |
} | |
``` | |
### Handle SVG in CSS, Sass or Less | |
It is possible to detect the module that requires your SVG using [`Rule.issuer`](https://webpack.js.org/configuration/module/#rule-issuer) in Webpack. Using it you can specify two different configurations for JavaScript and the rest of your files. | |
```js | |
[ | |
{ | |
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, | |
issuer: { | |
test: /\.jsx?$/ | |
}, | |
use: ['babel-loader', '@svgr/webpack', 'url-loader'] | |
}, | |
{ | |
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, | |
loader: 'url-loader' | |
}, | |
] | |
``` | |
## License | |
MIT | |