███████╗██╗ ██╗ ██████╗ ███████╗████████╗ ██████╗ ██████╗ ███████╗
██╔════╝██║ ██║██╔════╝ ██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝
███████╗██║ ██║██║ ███╗ ███████╗ ██║ ██║ ██║██████╔╝█████╗
╚════██║╚██╗ ██╔╝██║ ██║ ╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝
███████║ ╚████╔╝ ╚██████╔╝ ███████║ ██║ ╚██████╔╝██║ ██║███████╗
╚══════╝ ╚═══╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
npm i webpack-svgstore-plugin --save-dev
Use webpack-svgstore-plugin@3.x.x for Webpack 1.x.x
Use webpack-svgstore-plugin@4.x.x for Webpack 2.x.x,3.x.x,4.x.x.
Use webpack-svgstore-plugin@5.x.x for Webpack 2.x.x,3.x.x,4.x.x, node must be =>7.6
Use webpack-svgstore-plugin@6.x.x for Webpack 5.x.x, node must be => 10.12
//webpack.config.js
var SvgStore = require('webpack-svgstore-plugin');
module.exports = {
plugins: [
// create svgStore instance object
new SvgStore({
// svgo options
svgoOptions: {
plugins: [
{ removeTitle: true }
]
},
prefix: 'icon'
})
]
}
// plugin will find marks and build sprite
var __svg__ = { path: './assets/svg/**/*.svg', name: 'assets/svg/[hash].logos.svg' };
// will overwrite to var __svg__ = { filename: "assets/svg/1466687804854.logos.svg" };
// also you can use next variables for sprite compile
// var __sprite__ = { path: './assets/svg/minify/*.svg', name: 'assets/svg/[hash].icons.svg' };
// var __svgstore__ = { path: './assets/svg/minify/*.svg', name: 'assets/svg/[hash].stuff.svg' };
// var __svgsprite__ = { path: './assets/svg/minify/*.svg', name: 'assets/svg/[hash].1logos.svg' };
// require basic or custom sprite loader
require('webpack-svgstore-plugin/src/helpers/svgxhr')(__svg__);
As you know, last version has integrated ajax sprite loader. Right now, you can override that. Or create your own sprite ajax loader function.
HTML:
<svg class="svg-icon">
<use xlink:href="#icon-name"></use>
</svg>
React JSX:
<svg className='svg-icon'>
<use xlinkHref='#icon-name' />
</svg>
template
- add custom jade template layout (optional)svgoOptions
- options for svgo (optional, default:{}
)
NPM package available here: webpack-svgstore-plugin
MIT © Chernobrov Mike, Gordey Levchenko , Nadav Sinai