const sharp = require('sharp'); const fs = require('fs'); const path = require('path'); // SVG content for the favicon const svgContent = ` `; const publicDir = path.join(__dirname, '..', 'public'); // Ensure public directory exists if (!fs.existsSync(publicDir)) { fs.mkdirSync(publicDir, { recursive: true }); } async function generateIcons() { try { // Save SVG file fs.writeFileSync(path.join(publicDir, 'favicon.svg'), svgContent); console.log('āœ… Generated favicon.svg'); // Generate PNG icons in various sizes const sizes = [ { size: 16, name: 'favicon-16x16.png' }, { size: 32, name: 'favicon-32x32.png' }, { size: 192, name: 'icon-192.png' }, { size: 512, name: 'icon-512.png' }, { size: 180, name: 'apple-touch-icon.png' } ]; for (const { size, name } of sizes) { await sharp(Buffer.from(svgContent)) .resize(size, size) .png() .toFile(path.join(publicDir, name)); console.log(`āœ… Generated ${name}`); } // Generate favicon.ico (multi-resolution) await sharp(Buffer.from(svgContent)) .resize(32, 32) .png() .toFile(path.join(publicDir, 'favicon.ico')); console.log('āœ… Generated favicon.ico'); console.log('\nšŸŽ‰ All icons generated successfully!'); } catch (error) { console.error('Error generating icons:', error); process.exit(1); } } generateIcons();