0.4.0 • Published 1 year 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 #1261which 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-svgbut 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 installExample:
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
developbranch. - Stage your files:
git add path/to/file.py. bash scripts/pre.sh, this will format, lint, and test the code.git statuscheck if anything changed (generatedREADME.mdfor example), if so,git addthe 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
developbranch, runbash scripts/pre.shto ensure everything is in order. - In the
developbranch, bump the version inpackage.json, following semantic versioning principles. Runbash scripts/pre.shto ensure everything is in order. - In the
developbranch, commit these changes with a message like"Prepare release X.Y.Z". (See the contributions section above). - Merge the
developbranch into themasterbranch:git checkout master && git merge develop --no-ff. masterbranch: 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-ffoption 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.