具体方案:
开发脚本 整体生成 WEBP图片(Eg.: 项目中a.png,再生成一份a.png.webp)
Shell脚本(需安装:brew install webp)(https://developers.google.com/speed/webp/docs/cwebp)
1 |
|
前端项目脚本
1 | const { join,resolve } = require('path') |
Usage:
1 | <pnpm | npm | yarn> run cwebp <directory> |
判断浏览器是否支持WEBP,如支持使用WEBP格式图片,不支持使用原图 (Ref:https://caniuse.com/webp).如支持根节点添加标识: <html class="webpa">...</html>
1 | const isWebp = document.createElement("canvas").toDataURL("image/webp").includes("data:image/webp"); |
css/less…样式图片处理
以less为例其他样式预处理器同理
1 | /* webp mixin */ |
项目mixin可通过webpack插件:style-resources-loader
统一引入
JSX img标签处理
使用 兼容webp
Eg.
1 | import React from 'react'; |
*并不是一股脑儿把所有图片转化成webp就是最优解,面对线性、矢量、渐变图片转化成svg反而更好。