EPUB 3 ebook generation engine for MoonBit: builds spec-conformant .epub files from a structured book model, with OPF package documents, navigation, XHTML content, OCF/ZIP packaging and a structure validator.
moon add 668xin/moon_epub本库的 preferred_target 为 js。使用本机的 wasm-gc 后端时,println 输出可能丢失且 moon test 会崩溃,故所有命令建议显式携带 --target js。
# 生成 EPUB 并以 Base64 输出(核心库无文件 IO,由 shell 解码落盘)
moon run src/cli --target js -- build minimal | base64 -d > minimal.epub
# 以十六进制输出(便于在无 base64 工具的环境中使用)
moon run src/cli --target js -- build multi-chapter --format hex
# 校验结构并输出文本诊断报告
moon run src/cli --target js -- check multi-chapter
# 以 JSON 输出机器可读报告
moon run src/cli --target js -- check multi-chapter --json
# 打印书籍结构树
moon run src/cli --target js -- inspect styled
# 列出内置示例
moon run src/cli --target js -- examples// 取一个已装配好 manifest / spine 的示例书籍(也可自行构造 @model.Book)
let book = @examples.multi_chapter()
// 打包为 EPUB 字节流
let options = @ocf.PackageOptions::new()
let epub : Bytes = @ocf.package_book(book, options)
// 结构校验(独立于生成层)
let report = @validate.validate_book(book)
println(report.summary())
if report.is_ok() {
println("结构校验通过")
}| 包 | 职责 |
|---|---|
| spec | 规范常量:XML 命名空间、媒体类型、OCF 保留文件名、可访问性/SMIL 常量 |
| model | 书籍领域模型:Book / Chapter / Resource / Metadata / Manifest / Spine |
| xhtml | XHTML5 内容文档生成(块级与内联元素、脚注编号) |
| opf | OPF 包文档序列化(元数据、manifest、spine) |
| nav | nav.xhtml 导航与 toc.ncx 向后兼容目录 |
| zip | ZIP 写入器:本地文件头、中央目录、CRC32、DEFLATE |
| ocf | OCF 容器布局与端到端打包(package_book) |
| assets | 样式表合成、MIME 类型推断、资源注册 |
| cfi | EPUB CFI 定位路径构造与解析 |
| a11y | 可访问性元数据体系 |
| media | Media Overlays / SMIL 朗读同步 |
| validate | 结构校验规则集与诊断报告 |
| examples | 三个可直接打包的示例书籍(minimal / multi-chapter / styled) |
| cli | 命令行入口 |
src/
├── spec/ 规范常量层
├── model/ 书籍领域模型
├── xhtml/ XHTML5 内容文档生成
├── opf/ OPF 包文档序列化
├── nav/ nav.xhtml + toc.ncx 双轨导航
├── zip/ ZIP 写入器(本地文件头、中央目录、CRC32、DEFLATE)
├── ocf/ OCF 容器布局与打包
├── assets/ 样式与静态资源管理
├── cfi/ EPUB CFI 定位路径
├── a11y/ 可访问性元数据
├── media/ Media Overlays / SMIL
├── validate/ 结构校验器
├── examples/ 示例书籍
└── cli/ 命令行入口moon check --target js # 类型检查
moon build --target js # 构建
moon test --target js # 全量单元测试
moon fmt --check # 格式检查
moon info --target js # 生成 .mbti 接口摘要import base64, io, zipfile
data = base64.b64decode(open("minimal.epub.b64").read())
z = zipfile.ZipFile(io.BytesIO(data))
print(z.namelist(), z.testzip(), z.read("mimetype").decode())moon login # 登录 mooncakes.io 账号
moon publish --dry-run # 本地打包校验(仅检查,不实际上传)
moon publish # 发布当前版本(moon.mod 中的 version 字段)Install
Download zipEPUB 3 ebook generation engine for MoonBit: builds spec-conformant .epub files from a structured book model, with OPF package documents, navigation, XHTML content, OCF/ZIP packaging and a structure validator.