以前生成iconfont字体图标,是用的https://icomoon.io/app/ 或者是阿里的https://www.iconfont.cn/ ,将UI给的svg图导入来生成。可是一直有个问题,假如须要再次加入几个图标时,又须要从新搞一遍,很麻烦。css
而使用svg-sprite-loader的方式,也不是很方便,并且在body下插入一个超大的svg标签,影响性能不说,看着这么乱的代码真是挺难受。。并且有些UI库比使用字体图标会比较便利。另外字体文件特别是woff也比svg要小不少。html
因而最近抽时间参考开源代码搞了个webpack插件,自动用svg生成iconfont字体图标,支持热更新。node
执行如下命令,可直接查看插件效果:webpack
git clone https://github.com/hzsrc/webpack-iconfont-plugin-nodejs.git cd webpack-iconfont-plugin-nodejs npm install npm run dev
字体及css的生成流程:git
热重载(hot-reload)流程:github
使用这个插件后,开发时在src/iconfont/svgs目录下,修改或添加、删除svg文件时,就能够自动生成字体图标(支持ttf,woff2,woff,eot,svg)及配套从css样式、html预览了;同时热更新当即能够看到效果。web
只需一个配置文件,并以此加入到webpack的plugins便可:npm
const WebpackIconfontPluginNodejs = require('webpack-iconfont-plugin-nodejs'); const path = require('path'); var dir = 'src/iconfont' module.exports = new WebpackIconfontPluginNodejs({ fontName: 'my-icon', cssPrefix: 'fii', svgs: path.join(dir, 'svgs/*.svg'), template: path.join(dir, 'css.njk'), fontsOutput: path.join(dir, 'fonts/'), cssOutput: path.join(dir, 'fonts/font.css'), htmlOutput: path.join(dir, 'fonts/_font-preview.html'), jsOutput: path.join(dir, 'fonts/fonts.js'), formats: ['ttf', 'woff', 'svg'], })
Byebye了我滴icomoon们!bash
感兴趣的小伙伴能够试试~app