# webpack-image-sprites **Repository Path**: ConBoHo/webpack-image-sprites ## Basic Information - **Project Name**: webpack-image-sprites - **Description**: 基于webpack的自动化集成雪碧图并压缩方案Demo演示(webpack-spritesmith) - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-08-12 - **Last Updated**: 2021-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 一、目标 实现项目构建时图片的最优性能方案:自动合并雪碧图并压缩所有图片 雪碧图方案:webpack-spritesmith 图片压缩方案:image-webpack-loader ### 二、如何体验 1、安装与启动 ```bash yarn install yarn start ``` 2、构建 ```bash yarn build ``` 3、页面展示 ### 二、依赖能力 webpack-spritesmith 把指定目录下的图片合并成雪碧图且生成一套雪碧图的css,项目中需要使用雪碧图的地方直接引入这个css即可 image-webpack-loader 压缩各种格式图片 ### 三、webpack-spritesmith 配置介绍 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 1. 效果 ``` 1. 压缩效率都为 67% 左右和 tinypng 在线压缩数据一致 2. 压缩之后图片基本无损 3. 会导致webpack打包时间变长,建议线上压缩 4. 可配置压缩质量 quality,设为75质量还是不错的,体积可再减小 15% 5. 观其代码发现图片资源都是本地压缩,安装各类图片的压缩工具 ``` 2. 配置 官方配置说明相对清晰友好,点击文档 ### 五、说明 因为使用了图片压缩工具 image-webpack-loader , 所以会下载一些压缩图片的代码包,速度较慢,请耐心等待,若下载中断再次下载也是无效的,会导致构建失败