简介
Pamphlet 把一份 Markdown 编译成一个能双击打开的 HTML 文件。
产物里没有 <link>、没有 <script src>、没有 CDN 引用。图表在编译时就画成静态 SVG 内联进去了,字体是子集化后的 data URI,图片是 base64。断网、file://、U 盘拷来拷去,行为完全一样。
四条承诺
第四条是前三条的约束条件:任何交互都必须先有一个不依赖 JavaScript 的形态,再往上叠脚本。
什么时候该用它
适合:一次性的方案、复盘、周报、给客户的说明、需要发给不确定环境的人的东西。判据是「我希望对方双击就能看,不想让他装什么、也不想搭个站」。
不适合:
- 持续更新的多页文档站。 一份源文档 = 一个 HTML 文件,没有跨页导航和全站搜索。你现在看的这个站就是用 Rspress 做的,不是 Pamphlet 的产物。
- 要在手机上发给别人点开。 iOS 拦本地 HTML 文件,这不是 Pamphlet 能解决的,绕行办法见产物是什么样的。
- 几百页的书。 单文件意味着全部内容一次加载。
跟 Pandoc、Typora 这类工具的具体差别,见方案对比。
为什么不用现成的
调研过一圈:没有任何现成工具同时做到那四条。
最接近的是 Quarto —— embed-resources: true 已经自包含,.panel-tabset 已经有 Tab,mermaid-format: svg 能强制预渲染图表。落选不是因为工作量,是因为方向不兼容:Quarto 用的是 Pandoc Markdown 方言,而 Pamphlet 的整个承诺(语法是 CommonMark 严格超集、源文档沿用 .md、直接丢上 GitHub 仍然能读)都建立在 CommonMark 上。另外它要装一个约 100MB 的二进制,面向 R / Python 数据科学生态。
其余候选:
下一步
快速开始 —— 十分钟得到你自己的第一个产物。