Files
gzh/verify-optimization.js
2026-01-06 15:03:14 +08:00

52 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require('fs');
const path = require('path');
// 源图片目录和构建后的图片目录
const srcDir = path.join(__dirname, 'src', 'assets');
const distDir = path.join(__dirname, 'dist', 'img');
// 比较源图片和构建后图片的大小
function compareImageSizes() {
try {
// 读取dist目录下的所有图片文件
const distFiles = fs.readdirSync(distDir).filter(file => file.endsWith('.png'));
console.log('图片优化效果验证(源图片 vs 构建后图片):');
console.log('-' .repeat(70));
console.log('源文件名'.padEnd(25), '构建后文件名'.padEnd(30), '大小对比');
console.log('-' .repeat(70));
// 遍历dist目录下的图片文件
for (const distFile of distFiles) {
// 提取源文件名去掉hash和扩展名
const srcFileName = distFile.replace(/\.[a-f0-9]{8}\.png$/, '.png');
const srcPath = path.join(srcDir, srcFileName);
const distPath = path.join(distDir, distFile);
// 检查源文件是否存在
if (fs.existsSync(srcPath)) {
const srcStats = fs.statSync(srcPath);
const distStats = fs.statSync(distPath);
const srcSize = srcStats.size;
const distSize = distStats.size;
const reduction = ((srcSize - distSize) / srcSize * 100).toFixed(2);
console.log(
srcFileName.padEnd(25),
distFile.padEnd(30),
`${(srcSize / 1024).toFixed(2)}KB → ${(distSize / 1024).toFixed(2)}KB (减少${reduction}%)`
);
}
}
console.log('-' .repeat(70));
} catch (error) {
console.error('验证图片优化效果时出错:', error);
}
}
// 执行验证
compareImageSizes();