0.4.0 • Published 11 months ago
excalidraw-brute-export-cli v0.4.0
Excalidraw Brute Export CLI
- What: Uses playwright to run a headless firefox browser to export Excalidraw diagrams to svg/png files. Using a browser bypasses certain bugs that happen with other projects that attempt to export by emulating the DOM (without a browser).
- Why:
- To allow automated export of Excalidraw diagrams to svg/png files via the command line.
- Currently, Excalidraw can only be exported by a human clicking on the "Export image" button.
- Addresses/mitigates
excalidraw/excalidraw#1261
excalidraw CLI #1261
which is an open feature request on the Excalidraw project. - Addresses/mitigates
JRJurman/excalidraw-to-svg#6
Error rendering edge-labels. #6
. - Addresses/mitigates
Timmmm/excalidraw_export#6
Error rendering edge-labels. #6
.
- Related Projects
- JRJurman/excalidraw-to-svg uses jsdom to simulate the DOM, then runs Excalidraw+react in nodejs, loads the diagram files and exports them.
- Timmmm/excalidraw_export
similar to
JRJurman/excalidraw-to-svg
but simplifies the code and also embeds SVG fonts.
Usage
# Install globally.
npm install -g excalidraw-brute-export-cli
# Or clone and install
git clone https://github.com/realazthat/excalidraw-brute-export-cli.git@v0.2.0
cd excalidraw-brute-export-cli
npm install
# Might prompt for root.
npx playwright install-deps
npx playwright install
Example:
CLI usage help:
Tested on:
- WSL2 Ubuntu 20.04, Node
v20.12.1
.
Contributions
Development environment: Linux-like
- For running
pre.sh
(Linux-like environment).- Requires nodejs (for act).
- Requires Go (to run act).
- docker (for act).
Commit Process
- (Optionally) Fork the
develop
branch. - Stage your files:
git add path/to/file.py
. bash scripts/pre.sh
, this will format, lint, and test the code.git status
check if anything changed (generatedREADME.md
for example), if so,git add
the changes, and go back to the previous step.git commit -m "..."
.- Make a PR to
develop
(or push to develop if you have the rights).
Release Process
These instructions are for maintainers of the project.
- In the
develop
branch, runbash scripts/pre.sh
to ensure everything is in order. - In the
develop
branch, bump the version inpackage.json
, following semantic versioning principles. Runbash scripts/pre.sh
to ensure everything is in order. - In the
develop
branch, commit these changes with a message like"Prepare release X.Y.Z"
. (See the contributions section above). - Merge the
develop
branch into themaster
branch:git checkout master && git merge develop --no-ff
. master
branch: Tag the release: Create a git tag for the release withgit tag -a vX.Y.Z -m "Version X.Y.Z"
.- Publish to PyPI: Publish the release to PyPI with
bash scripts/deploy-to-npm.sh
. - Push to GitHub: Push the commit and tags to GitHub with
git push && git push --tags
. - The
--no-ff
option adds a commit to the master branch for the merge, so refork the develop branch from the master branch:git checkout develop && git merge master
. - Push the develop branch to GitHub:
git push origin develop
.