Spaces:
Sleeping
Sleeping
| /** | |
| * Generates PNG icons for PWA from the master SVG icon. | |
| * Run: node scripts/generate-icons.mjs | |
| * Called automatically via the "prebuild" npm script. | |
| */ | |
| import { readFileSync } from 'fs'; | |
| import { join, dirname } from 'path'; | |
| import { fileURLToPath } from 'url'; | |
| import sharp from 'sharp'; | |
| const __dirname = dirname(fileURLToPath(import.meta.url)); | |
| const iconsDir = join(__dirname, '..', 'public', 'icons'); | |
| const svgBuffer = readFileSync(join(iconsDir, 'icon.svg')); | |
| const sizes = [ | |
| { name: 'apple-touch-icon-180x180.png', size: 180 }, | |
| { name: 'icon-192x192.png', size: 192 }, | |
| { name: 'icon-512x512.png', size: 512 }, | |
| ]; | |
| for (const { name, size } of sizes) { | |
| await sharp(svgBuffer, { density: 300 }) | |
| .resize(size, size) | |
| .png({ compressionLevel: 9 }) | |
| .toFile(join(iconsDir, name)); | |
| console.log(` \u2713 ${name} (${size}x${size})`); | |
| } | |
| console.log('PWA icons generated.'); | |