SPB Git

Repository Public

gen-icons.mjs 1.0 KB 25 lines javascript

1#!/usr/bin/env node2/**3 * Renders the PWA icons of Agent OS from the hand-written SVG sources in public/icons/ with sharp4 * (resolved through next's dependency tree).  Usage: node dev/gen-icons.mjs5 */6import { createRequire } from 'node:module';7import path from 'node:path';8import { fileURLToPath } from 'node:url';910const here = path.dirname(fileURLToPath(import.meta.url));11const require = createRequire(import.meta.url);12const sharp = createRequire(require.resolve('next/package.json'))('sharp');13const dir = path.join(here, '../public/icons');14const jobs = [15  ['icon.svg', 'icon-192.png', 192],16  ['icon.svg', 'icon-512.png', 512],17  ['icon-maskable.svg', 'icon-maskable-192.png', 192],18  ['icon-maskable.svg', 'icon-maskable-512.png', 512],19  ['icon-maskable.svg', 'apple-touch-icon.png', 180], // iOS applies its own mask: full-bleed source20];21for (const [src, out, size] of jobs) {22  await sharp(path.join(dir, src), { density: 300 }).resize(size, size).png({ compressionLevel: 9 }).toFile(path.join(dir, out));23  console.log(`${out} ${size}x${size}`);24}25
Files main
Menu

Theme