web interface
This commit is contained in:
20
tools/render-composition.mjs
Normal file
20
tools/render-composition.mjs
Normal file
@@ -0,0 +1,20 @@
|
||||
/* render-composition.mjs — render a grouped composition file to SVG.
|
||||
Usage: node tools/render-composition.mjs <composition.mjs> [out.svg] [size]
|
||||
*/
|
||||
import { writeFileSync } from 'node:fs';
|
||||
import { resolve } from 'node:path';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { renderComposition } from '../src/compose/composition.js';
|
||||
|
||||
const file = process.argv[2];
|
||||
if (!file) { console.error('usage: node tools/render-composition.mjs <composition.mjs> [out.svg] [size]'); process.exit(1); }
|
||||
const out = process.argv[3] || '/tmp/composition.svg';
|
||||
const size = process.argv[4] ? +process.argv[4] : undefined;
|
||||
|
||||
const mod = await import(pathToFileURL(resolve(file)).href);
|
||||
const comp = mod.composition || mod.default;
|
||||
if (!comp) { console.error('composition file must `export const composition = {...}`'); process.exit(1); }
|
||||
|
||||
const svg = renderComposition(comp, size);
|
||||
writeFileSync(out, svg);
|
||||
console.log(`composition -> ${out} (${(svg.length / 1024).toFixed(0)} KB, size=${size || comp.size || 1500})`);
|
||||
Reference in New Issue
Block a user