【過濾重複壓縮】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 })) // 覆寫原文件 })