基于webpack的自动化集成雪碧图并压缩方案Demo演示(webpack-spritesmith)
实现项目构建时图片的最优性能方案:自动合并雪碧图并压缩所有图片
雪碧图方案:webpack-spritesmith
图片压缩方案:image-webpack-loader
1、安装与启动
yarn install
yarn start
2、构建
yarn build
3、页面展示
webpack-spritesmith 把指定目录下的图片合并成雪碧图且生成一套雪碧图的css,项目中需要使用雪碧图的地方直接引入这个css即可
image-webpack-loader 压缩各种格式图片
1、src 这个属性用于配置你从哪里捕获这些小图片,建议使用时把所有要合并的icon放在同一个文件夹
cwd
必填
就是小图片所在的目录,注意不会递归子目录,子目录图片不会被处理
glob
必填
类型是字符串,也可以是正则,用来匹配符合要求的图片文件
2、target 雪碧图和样式输出文件的配置
image
必填
雪碧图输出完整地址,必须携带文件名及后缀,(注意这里不是指打包后,而是指打包前,实际打包还是被url-loader处理的)
css
必填
输出的css文件,可以是字符串、或者数组(如果是数组的话,输出多个同样的文件)
3、apiOptions 配置属性
generateSpriteName
可选,
是一个函数,有一个参数(是文件的绝对路径,字符串),默认值是返回文件名(不含后缀和路径)。
这个用于命名类名,默认是文件名作为类名
cssImageRef
必填,
生成的图片在 API 中被引用的路径。
简单来说,就是你上面输出了 image 和 css ,那么在 css 用什么样的路径书写方式来引用 image 图片(可以是别名,或相对路径)
handlebarsHelpers
可选
是一个对象,并且是全局的(意味着后面的本插件的这个配置会覆盖前面的配置)。
给 handlebars 用的,没搞懂,但一般用不上。
4、spritesmithOptions 可选,配置 spritesmith 用的。里面可以定制比如雪碧图的排列方向。
5、retina 可选,retina 屏的配置。关于解决 retina 屏的雪碧图的问题,可以参考这个 Retina屏下的CSS雪碧图,所以最好给 spritesmithOptions.padding 属性赋值 2。这个属性用于图片放大缩小。
6、customTemplates 可选,这个应该是指用户自定义 css 模板, 官方有自己的模板,不完全适用这里的Demo,有稍作调整。
官方配置说明相对清晰友好,点击文档
因为使用了图片压缩工具 image-webpack-loader , 所以会下载一些压缩图片的代码包,速度较慢,请耐心等待,若下载中断再次下载也是无效的,会导致构建失败