【过滤重复压缩】node
【替换源文件】git
【自动切换 api key】github
【压缩报告】npm
【压缩安全边界】json
【源码携带详细备注,自带测试图片】gulp
| 参数名 | 值类型 | 是否必填 | 参数做用 | 默认值 | 推荐值 |
| :------: | :------: | :------: | :------: | :------: | :------: |
| apiKeyList | Array | 必填 | tiny png 的 api key 数组,当其中一个不可用或超过使用次数时,自动切换下一个 key 调用 | 无 | 无 |
| reportFilePath | Number | 非必填 | 压缩报告文件路径,记录图片的压缩比例,生产压缩报告 | 无 | __dirname + '/tinyPngReport.json' |
| md5RecordFilePath | Number | 非必填 | 压缩后图片 md5 记录文件,若是待压缩图片的 md5 值存在于该文件,则跳过压缩,解决「重复压缩」问题 | 无 | __dirname + '/md5RecordFilePath.json' |
| minCompressPercentLimit | Number | 非必填 | 压缩安全线,当压缩比例低于该百分比时,保持源文件,避免图片过度压缩,损伤显示质量 | 0 | 10 |
| createMd5FormOrigin | Boolean | 非必填 | 不进行压缩操做,只生成现有图片的 md5 信息,并做为缓存。用于「初次项目接入」及手动清理冗余的「图片md5信息」 | false | false |api
let gulp = require('gulp') let tinypng = require('./gulp-tinypng-with-cache') const projectPath = __dirname + '/test-img' // 测试项目路径,可经过 test-img-origin 恢复未压缩前图片 const apiKeyList = [ // 'XgNgkoyWbdIZd8OizINMjX2TpxAd_Gp3', // 无效 key // 'IAl6s3ekmONUVMEqWZdIp1nV2ItJL1PC', // 无效 key 'IAl6s3ekmONUVMEqWZdIp1nV2ItJLyPC', // 有效 key ] gulp.task('default', function () { return gulp.src([ projectPath + '/**/*.png', projectPath + '/**/*.jpg', projectPath + '/**/*.jpeg', '!/**/node_modules/*', // 忽略无需遍历的文件,路径匹配语法参考:https://www.gulpjs.com.cn/docs/getting-started/explaining-globs/ ], { base: './', // 对文件使用相路径,为了后面覆盖源文件 nodir: true, // 忽略文件夹 }) .pipe(tinypng({ apiKeyList, reportFilePath: __dirname + '/tinypngReport.json', // 不设置,则不进行日志记录 md5RecordFilePath: __dirname + '/tinypngMd5Record.json', // 不设置,则不进行缓存过滤 minCompressPercentLimit: 10, // 默认值为零,最小压缩百分比限制,为保证图片质量,当压缩比例低于该值时,保持源文件,避免过度压缩,损伤图片质量 createMd5FormOrigin: false, // 不进行压缩操做,只生成现有图片的 md5 信息,并做为缓存。用于「初次项目接入」及手动清理冗余的「图片md5信息」 })) .pipe(gulp.dest('./', { overwrite: true })) // 覆写原文件 })