58 lines
No EOL
1.8 KiB
JavaScript
58 lines
No EOL
1.8 KiB
JavaScript
const sharp = require('sharp');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
async function generateFavicons() {
|
|
try {
|
|
// Read the existing icon.png
|
|
const iconPath = path.join(__dirname, '../public/icon.png');
|
|
const iconBuffer = fs.readFileSync(iconPath);
|
|
|
|
// Generate favicon-16x16.png
|
|
await sharp(iconBuffer)
|
|
.resize(16, 16)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/favicon-16x16.png'));
|
|
console.log('✅ favicon-16x16.png created');
|
|
|
|
// Generate favicon-32x32.png
|
|
await sharp(iconBuffer)
|
|
.resize(32, 32)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/favicon-32x32.png'));
|
|
console.log('✅ favicon-32x32.png created');
|
|
|
|
// Generate apple-touch-icon.png (180x180)
|
|
await sharp(iconBuffer)
|
|
.resize(180, 180)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/apple-touch-icon.png'));
|
|
console.log('✅ apple-touch-icon.png created (180x180)');
|
|
|
|
// Generate android-chrome-192x192.png
|
|
await sharp(iconBuffer)
|
|
.resize(192, 192)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/android-chrome-192x192.png'));
|
|
console.log('✅ android-chrome-192x192.png created');
|
|
|
|
// Generate android-chrome-512x512.png
|
|
await sharp(iconBuffer)
|
|
.resize(512, 512)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/android-chrome-512x512.png'));
|
|
console.log('✅ android-chrome-512x512.png created');
|
|
|
|
// Create favicon.ico (we'll use the 32x32 for now as a placeholder)
|
|
await sharp(iconBuffer)
|
|
.resize(32, 32)
|
|
.png()
|
|
.toFile(path.join(__dirname, '../public/favicon.ico'));
|
|
console.log('✅ favicon.ico created (placeholder)');
|
|
|
|
} catch (error) {
|
|
console.error('Error generating favicons:', error);
|
|
}
|
|
}
|
|
|
|
generateFavicons(); |