Experimental Excalidraw CLI tool.
Parses Excalidraw JSON schemas (*.excalidraw
) into PNGs (*.png
).
This project is a follow-up to excalidraw#1261 and strives to provide a CLI for excalidraw.
Demo
npm install -g @tommywalkie/excalidraw-cli
If using Alpine (e.g. for Docker stuff), install the following packages.
FROM node:alpine
RUN apk update
RUN apk add --no-cache python g++ build-base cairo-dev jpeg-dev pango-dev \
musl-dev giflib-dev pixman-dev pangomm-dev libjpeg-turbo-dev freetype-dev
$ excalidraw-cli --help
Parses Excalidraw JSON schemas into PNGs
USAGE
$ excalidraw-cli [INPUT] [OUTPUT]
ARGUMENTS
INPUT [default: {cwd}] Excalidraw file path / directory path
OUTPUT [default: {cwd}] Output PNG file path / directory path
OPTIONS
-h, --help show CLI help
-q, --quiet disable console outputs
-v, --version show CLI version
For convenience we have also a Docker image that includes all dependencies out of the box.
To build the Docker image run following command.
To use the docker image in a convenient way you can add following function to your .bashrc
or .zshrc
.
function excalidraw-cli {
docker run --rm -it -v $PWD:/data excalidraw-cli $@
}
Then simply reload your terminal to have this function available.
$ excalidraw-cli drawings/my-drawing.excalidraw .
✔ drawings/my-drawing.excalidraw => drawings/my-drawing.png
Currently, excalidraw
NPM package only exports a React component. excalidraw-cli
uses node-canvas at its core, this allows to generate canvas without relying on the window
context, and uses a home-made renderer which tries to mimic Excalidraw's as much as possible, using Rough.js API primarily.
Hopefully, excalidraw-cli
will directly use Excalidraw renderer methods for consistent results, once Excalidraw provides some Node-compatible API.
See the related issue thread excalidraw#1780.
Note: Most of the codebase is currently in ES2017, it will soon be converted to TypeScript for educational purposes, but also for easier integration with Excalidraw.
Install dependencies with npm
or yarn
.
npm install
Export fonts, transpile TypeScript / ES2017 source into CommonJS for production.
npm run prepack
Test the CLI with the transpiled source code.
node ./bin/run # Run with Node
npm run excalidraw-cli # Run with NPM script
Prepack and launch Jest tests.
npm run test
You can check requested / planned / work-in-progress features in Projects.
MIT