fes.js/packages/plugin-icon/src/optimizeSvg.ts
2025-09-05 22:40:22 +08:00

36 lines
921 B
TypeScript

import { readFileSync, statSync } from 'node:fs';
import { basename, extname } from 'node:path';
import { optimize } from 'svgo';
const presetDefault = [
{
name: 'preset-default',
},
'cleanupListOfValues',
{
name: 'removeAttrs',
params: {
attrs: '(class)',
},
},
];
export default function optimizeSvg(files) {
const optimizedSvgData: {
fileName: string;
data: string;
}[] = [];
for (const filePath of files) {
if (statSync(filePath).isFile() && extname(filePath) === '.svg') {
const data = readFileSync(filePath, 'utf-8');
const svgData = optimize(data, { path: filePath, plugins: presetDefault });
optimizedSvgData.push({
fileName: basename(filePath),
data: svgData.data,
});
}
}
return Promise.all(optimizedSvgData);
}