13 lines
768 B
JavaScript
13 lines
768 B
JavaScript
// Assembles client.js from client.src.js + the brand SVGs in ./icons (monochrome, currentColor).
|
|
import { readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
const dir = new URL('./icons/', import.meta.url);
|
|
const icons = {};
|
|
for (const f of readdirSync(dir).filter((n) => n.endsWith('.svg')).sort()) {
|
|
const svg = readFileSync(new URL(f, dir), 'utf8');
|
|
const inner = svg.replace(/^[\s\S]*?<svg[^>]*>/, '').replace(/<\/svg>\s*$/, '').replace(/<title>[\s\S]*?<\/title>/, '');
|
|
icons[f.slice(0, -4)] = inner;
|
|
}
|
|
const src = readFileSync(new URL('./client.src.js', import.meta.url), 'utf8');
|
|
writeFileSync(new URL('./client.js', import.meta.url), src.replace('/*__ICONS__*/{}', () => JSON.stringify(icons)));
|
|
console.log('icons:', Object.keys(icons).length);
|