WFDASHDRIVER-APP/scripts/generate-icons.js

52 lines
1.5 KiB
JavaScript
Raw Normal View History

const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
const svgPath = path.join(__dirname, '../public/icons/icon.svg');
const outDir = path.join(__dirname, '../public/icons');
async function generateIcons() {
const svgBuffer = fs.readFileSync(svgPath);
const sizes = [
{ name: 'icon-72.png', size: 72 },
{ name: 'icon-96.png', size: 96 },
{ name: 'icon-128.png', size: 128 },
{ name: 'icon-144.png', size: 144 },
{ name: 'icon-152.png', size: 152 },
{ name: 'icon-192.png', size: 192 },
{ name: 'icon-384.png', size: 384 },
{ name: 'icon-512.png', size: 512 },
{ name: 'icon-maskable-192.png', size: 192 },
{ name: 'icon-maskable-512.png', size: 512 },
];
for (const { name, size } of sizes) {
const isMaskable = name.includes('maskable');
const padding = isMaskable ? Math.round(size * 0.1) : 0;
const innerSize = size - padding * 2;
await sharp(svgBuffer)
.resize(innerSize, innerSize)
.extend({
top: padding,
bottom: padding,
left: padding,
right: padding,
background: { r: 234, g: 88, b: 12, alpha: 1 },
})
.png()
.toFile(path.join(outDir, name));
console.log(`Generated ${name} (${size}x${size})`);
}
// Apple touch icon (180x180)
await sharp(svgBuffer)
.resize(180, 180)
.png()
.toFile(path.join(outDir, 'apple-touch-icon.png'));
console.log('Generated apple-touch-icon.png (180x180)');
}
generateIcons().catch(console.error);