npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@goalwards/excalidraw-stages

v0.7.1

Published

Generate cumulative SVG builds from a single Excalidraw source file

Readme

excalidraw-stages

Reads a single .excalidraw source file and generates a series of cumulative SVG exports — one per stage — for embedding in presentation slides (e.g. Marp).

This lets you reveal a diagram progressively during a presentation without duplicating elements across multiple source files.

Why

The naive approach to progressive diagram reveals is to duplicate the diagram N times in Excalidraw (once per stage). This is unmaintainable: change one element and you must update N copies.

excalidraw-stages gives you a single source of truth.

How it works

Name your frames with a numeric prefix that determines stage order:

01-overview
02-detail
03-conclusion

Each element belongs to exactly one frame — the frame where it first appears. The tool accumulates: stage N includes all elements from frames 1 through N.

An element in frame 01 appears in every export. An element in frame 03 appears only from export 3 onwards. No duplication in the source.

Elements not assigned to any frame are treated as drafts and excluded from all exports.

Usage

excalidraw-stages my-diagram.excalidraw

Output SVGs are named <source>-<frame-name>.svg and written alongside the source file:

my-diagram.excalidraw
my-diagram-01-overview.svg
my-diagram-02-detail.svg
my-diagram-03-conclusion.svg

Use --out-dir to write SVGs into a subdirectory instead:

excalidraw-stages my-diagram.excalidraw --out-dir img
my-diagram.excalidraw
img/
  my-diagram-01-overview.svg
  my-diagram-02-detail.svg
  my-diagram-03-conclusion.svg

If the source file has no frames, the entire file is exported as a single my-diagram.svg.

Multiple files and glob patterns work too:

excalidraw-stages topics/**/*.excalidraw --out-dir img

Options

| Option | Description | |-----------------|-----------------------------------------------------------------------------------------------| | --out-dir dir | Write SVGs to dir/ relative to each source file. Created if missing. | | --embed-fonts | Base64-embed Excalifont and Cascadia into each SVG (fully self-contained, larger files). | | --init | Print @font-face declarations for Excalifont and Cascadia. Paste into your host HTML once. |

By default, SVGs reference fonts by family name only. The Marp plugin provides the required @font-face declarations automatically; use --init if you need them in a non-Marp context.

Installation

npm install -g @goalwards/excalidraw-stages

Or run without installing:

npx @goalwards/excalidraw-stages my-diagram.excalidraw