This webpack plugin generates a single SVG spritemap containing multiple <symbol>
elements from all .svg
files in a directory. In addition, it can optimize the output and can also generate a stylesheet containing the sprites
to be used directly from CSS. Chris Coyier has a good write-up about the why's and how's of this technique on
CSS Tricks. Use it in combination with the svg4everybody
package to easily and
correctly load SVGs from the spritemap in all browsers.
npm install svg-spritemap-webpack-plugin --save-dev
Webpack configuration
This plugin can be added to webpack like any other, documentation on all configuration options is available.
import SVGSpritemapPlugin from 'svg-spritemap-webpack-plugin';
export default {
// ...
plugins: [
new SVGSpritemapPlugin()
]
}
SVG element
When there's a file phone.svg
in the source directory and the prefix
option is set to sprite-
(default),
the sprite can be included in a HTML-file like so:
<svg>
<use xlink:href="/path/to/spritemap.svg#sprite-phone"></use>
</svg>
SVG for Everybody adds SVG External Content support to all browsers.
It's a good idea to combine the svg-spritemap-webpack-plugin
with svg4everybody
. This can be done
by passing an options object or true
to the svg4everybody
options key or by initializing SVG4Everybody manually.