Skip to content

feat: config.variants — multiple outputs from one composition#41

Merged
andresilva-cc merged 1 commit intomainfrom
feat/variants
Mar 20, 2026
Merged

feat: config.variants — multiple outputs from one composition#41
andresilva-cc merged 1 commit intomainfrom
feat/variants

Conversation

@andresilva-cc
Copy link
Copy Markdown
Contributor

Summary

  • config.variants — define named output variations (og, twitter, square, etc.)
  • Each variant inherits base config and can override any field + inject props
  • renderAll() API returns Map<string, RenderResult>
  • render() accepts variant option for single-variant render
  • --variant CLI flag; omit to render all variants to a directory
  • Props merge: CLI > variant > default; array fields replace, not merge
  • Transpile-once optimization (no N+1 esbuild calls)

Closes #33

Test plan

  • 279 tests pass (27 new: 14 unit + 4 CLI + 9 integration)
  • CLI: all variants output correct files and dimensions
  • CLI: single variant via --variant
  • API: render() with variant option
  • API: renderAll() returns correct Map
  • Backwards compatible (no variants = works as before)

Base config + variant overrides for width, height, scale, format,
quality, fonts, css, and component props. renderAll() API, --variant
CLI flag. Array fields replace, props shallow-merge.

Closes #33
@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
grafex Ready Ready Preview, Comment Mar 20, 2026 9:08pm

@andresilva-cc andresilva-cc merged commit bb13094 into main Mar 20, 2026
5 checks passed
@andresilva-cc andresilva-cc deleted the feat/variants branch March 20, 2026 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: config.variants — multiple outputs from one composition

1 participant