Epubparse
Library (Rust crate and JS lib with WASM core) for converting Epub files to text-only Book structures
Install / Use
/learn @jannes/EpubparseREADME
Epubparse
⚠️ This library is developed for my own very narrow use cases and probably insufficient for your needs. It is published both as a Rust crate to crates.io and as a NPM package (ESM module) to npm.
The sole purpose of this project is essentially to convert Epub files to simple text-only
Book structures, where a Book is a tree of Chapters that contain text and/or subchapters.
I am just using this to do different kinds of text analysis on a per chapter basis.
At the moment only epub files with epub2 compatible toc (table of content) files (.ncx) are supported. Many epub3 files do contain epub2 toc files for compatibility reasons. I do intend to implement support for epub3 toc files (.xhtml) in the future.
Structure
- epubparse-rs: core Rust library that compiles to WASM (published to crates.io)
- epubparse-wasm: wrapper around Rust core that provides JS compatible data types from WASM functions (published to npm, only meant to be consumed by JS lib)
- epubparse-js: JS library with ergonomic API including Typescript definitions (published to npm, for use in Browser and Node.js)
Steps to release
Prepare
- bump version in
epubparse-rs/Cargo.toml - bump versions in
epubparse-wasm/Cargo.tomlandepubparse-wasm/package.json - go to
epubparse-wasmfolder and runbuild_package.sh - bump version and
epubparse-wasmdependency verion inepubparse-js/package.json - commit
Release
Crates.io
cdinto epubparse-rs- run
cargo publish --dry-runto verify - run
cargo publish
NPM
Wasm
cdinto epubparse-wasm- run
wasm-pack login - run
wasm-pack publish
JS
- run
npm run build - run
npm publish
Related Skills
himalaya
354.2kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
354.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
taskflow
354.2kUse when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
frontend-design
112.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
