web-production-saas-starter/next_b2b_starter/scripts/generate-favicons.js
2025-12-16 18:54:41 +04:00

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();