Initial release v1.0.0
This commit is contained in:
66
frontend/scripts/generate-pwa-icons.js
Normal file
66
frontend/scripts/generate-pwa-icons.js
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* Generate PWA icons from the correct Lidify logo
|
||||
*
|
||||
* Uses the icon-only.png (smooth black circle with yellow soundwave)
|
||||
* instead of the old sharp-edged version with white borders
|
||||
*/
|
||||
|
||||
const sharp = require("sharp");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
|
||||
// Source: The correct logo (smooth black circle, yellow soundwave, no white borders)
|
||||
const SOURCE_ICON = path.join(__dirname, "..", "assets", "icon-only.png");
|
||||
const OUTPUT_DIR = path.join(__dirname, "..", "public", "assets", "icons");
|
||||
|
||||
// PWA icon sizes
|
||||
const SIZES = [48, 72, 96, 128, 192, 256, 512];
|
||||
|
||||
async function generatePwaIcons() {
|
||||
console.log("Generating PWA icons from icon-only.png...");
|
||||
|
||||
// Verify source exists
|
||||
if (!fs.existsSync(SOURCE_ICON)) {
|
||||
console.error(`Source icon not found: ${SOURCE_ICON}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Ensure output directory exists
|
||||
if (!fs.existsSync(OUTPUT_DIR)) {
|
||||
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
}
|
||||
|
||||
// Get source metadata
|
||||
const meta = await sharp(SOURCE_ICON).metadata();
|
||||
console.log(`Source icon: ${meta.width}x${meta.height}`);
|
||||
|
||||
for (const size of SIZES) {
|
||||
const outputPath = path.join(OUTPUT_DIR, `icon-${size}.webp`);
|
||||
|
||||
await sharp(SOURCE_ICON)
|
||||
.resize(size, size, {
|
||||
fit: "contain",
|
||||
background: { r: 0, g: 0, b: 0, alpha: 0 }
|
||||
})
|
||||
.webp({ quality: 90 })
|
||||
.toFile(outputPath);
|
||||
|
||||
console.log(`✓ Generated icon-${size}.webp`);
|
||||
}
|
||||
|
||||
// Also generate a PNG version for favicon (some browsers prefer PNG)
|
||||
const faviconPath = path.join(__dirname, "..", "public", "assets", "images", "favicon-192.png");
|
||||
await sharp(SOURCE_ICON)
|
||||
.resize(192, 192)
|
||||
.png()
|
||||
.toFile(faviconPath);
|
||||
console.log(`✓ Generated favicon-192.png`);
|
||||
|
||||
console.log("\n[SUCCESS] All PWA icons generated!");
|
||||
}
|
||||
|
||||
generatePwaIcons().catch((err) => {
|
||||
console.error("Error generating PWA icons:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user