render.mjs
Language JavaScript847 B18 lines
// Renders design/*.svg to PNG with Playwright's Chromium: node design/render.mjsimport { chromium } from '@playwright/test'import { readFileSync } from 'node:fs'const jobs = [['design/icon.svg', 'design/icon-1024.png', 1024],['design/tray.svg', 'src-tauri/icons/tray.png', 44],]const browser = await chromium.launch()for (const [src, out, size] of jobs) {const page = await browser.newPage({ viewport: { width: size, height: size } })const svg = readFileSync(src, 'utf8').replace(/width="\d+" height="\d+"/, `width="${size}" height="${size}"`)await page.setContent(`<html><body style="margin:0;background:transparent">${svg}</body></html>`)await page.screenshot({ path: out, omitBackground: true, clip: { x: 0, y: 0, width: size, height: size } })await page.close()console.log('wrote', out)}await browser.close()