scripts/generate-book-pdf.ts

scripts/generate-book-pdf.ts

基本信息

  • 类型: CLI 脚本 / PDF 生成器
  • 路径: ./scripts/generate-book-pdf.ts

功能描述

将交互式 Prompt 书籍(Interactive Book of Prompting)从 MDX 格式转换为静态 HTML/PDF 的生成脚本。支持多语言和印刷就绪模式,将 React 交互组件转换为静态可打印内容。

导出内容

  • 无(CLI 脚本,直接执行)

依赖导入

  • fs - 文件系统操作
  • path - 路径处理
  • @/lib/book/chapters - 书籍章节数据
  • @/components/book/elements/locales - 本地化数据

使用方法

# 生成英文版本(默认)
npx tsx scripts/generate-book-pdf.ts

# 生成指定语言版本
npx tsx scripts/generate-book-pdf.ts tr

# 生成所有语言版本
npx tsx scripts/generate-book-pdf.ts --all

# 印刷就绪模式(带出血边距、CMYK 颜色)
npx tsx scripts/generate-book-pdf.ts --print

# 所有语言,印刷模式
npx tsx scripts/generate-book-pdf.ts --all --print

核心配置

目录结构

变量路径说明
BOOK_DIRsrc/content/bookMDX 源文件
MESSAGES_DIRmessagesi18n 翻译文件
OUTPUT_DIRpublic/book-pdf输出目录

印刷尺寸

参数屏幕版印刷版
宽度6in6.25in (+出血)
高度9in9.25in (+出血)
出血边距-0.125in

主要功能

MDX 组件转换

将交互式组件转换为静态 HTML:

组件转换方式
TryIt带样式的代码块展示
Quiz问题 + 选项 + 正确答案标注
Callout静态信息框
Compare前后对比布局
TokenizerDemo彩色分词展示
TemperatureDemo温度参数对比表
Framework Demos框架步骤展示

本地化支持

  • 支持 17 种语言
  • messages/*.json 加载翻译
  • 交互提示语自动翻译

印刷优化

  • SVG 图标替代 Emoji(CMYK 安全)
  • 出血边距计算
  • 移除导航组件
  • 静态渲染所有交互元素

核心函数

transformMdxForPdf()

MDX 内容转换主函数,处理所有组件标签的正则替换。

extractProps() / extractArrayProp()

从 JSX 属性字符串中提取参数值。

protectCodeBlock()

保护代码块中的特殊字符,防止 HTML 转义问题。

输出文件

  • book-{locale}.html - 屏幕阅读版本
  • book-{locale}-print.html - 印刷版本
  • book-{locale}.pdf - PDF 文件(需配合 html-to-pdf.ts)
← 返回目录