此次项目中UI小姐姐要求用平方等其余字体,遂引入了这些字体,打包的时候发现,OMG,一个字体文件居然要10M,实在不能忍,因而开始了字体文件大小的优化实践,最后变成38KB一个,还行吧。css
可能存在的坑!!!html
安装node
npm install gulp-font-spider --save-dev
复制代码
CSSpython
// html没什么特别的,引入CSS文件的时候路径注意就行了
@charset "UTF-8";
// 注意引入时使用相对路径
@font-face {
font-family: 'pinghei';
src: url('../../assets/font/pinghei.eot');
src:
url('../../assets/font/pinghei.eot?#font-spider') format('embedded-opentype'),
url('../../assets/font/pinghei.woff') format('woff'),
url('../../assets/font/pinghei.ttf') format('truetype'), // 只要确保运行时这个ttf文件在就行了,其它不用管
url('../../assets/font/pinghei.svg') format('svg');
font-weight: normal;
font-style: normal;
}
body {
font-family: pinghei; //使用字体
}
复制代码
gulpfile.jsgit
/** * 此为gulp4.0的配置文件 */
var gulp = require('gulp'),
fontSpider = require( 'gulp-font-spider'); //字体文件优化--字蛛
/** * fontSpider */
gulp.task('fontSpider', done => {
gulp
.src(buildPath.html) // 引入相应的html文件
.pipe(fontSpider({
backup: false // 不备份源字体,默认开启备份
}))
.pipe(notify({
message: "font compress done" // 完成后通知
}))
done(); //结束这个task
});
/** * gulp 默认指令 */
// 其实开发阶段无所谓压不压缩字体,因此开发阶段,我只是将源字体copy过去便可
/** * gulp build * 这里我将fontSpider这个task在最后执行,由于这样确保打包后的html和css文件都已存在了, * 此时在针对编译后的dist里的html文件里进行筛选字体文件压缩,这样更有效 */
gulp.task('build',
gulp.series('clean', 'styles', 'html', // 串行运行
gulp.parallel('js', 'vendor', 'copyAssets'), //并行运行
'fontSpider') //最后运行
);
复制代码
gulp buildgithub
文件夹检查(若是开启备份,则源字体文件在.font-spider中,图中我关闭了天然没有)npm
可能存在的坑!!!gulp
安装bash
npm install font-spider -g
复制代码
运行app
font-spider ./*.html --debug
复制代码
应用版安装
截图