核心用法
markdown-to-html 是一款纯 Python 标准库实现的 Markdown 转换器,无需安装任何第三方依赖。用户通过命令行指定输入文件(或 stdin 管道)、输出路径及主题参数,即可生成单一 HTML 文件。典型命令:
python main.py README.md -o readme.html --theme dark --title "项目文档"
支持管道输入(cat file.md | python main.py - -o out.html),便于集成到 CI/CD 或自动化发布流程。
显著优点
- 零依赖部署:仅使用 Python 内置库,避免供应链攻击面与版本冲突。
- 自包含输出:CSS 全部内嵌,单文件即可离线查看、邮件发送或离线存档。
- 双主题支持:内置类 GitHub 的 Light 模式与护眼 Dark 模式,适配不同场景。
- 响应式设计:自动适配桌面与移动端,无需额外配置。
- 完整 Markdown 语法:覆盖标题、列表、代码高亮、表格、引用等 12 类元素。
潜在缺点与局限性
- 非标准解析:基于正则或简单状态机实现,对复杂嵌套(如多层列表内嵌代码块)或扩展语法(GFM 任务列表、脚注、数学公式)支持有限。
- 无实时预览:需手动执行命令查看结果,缺乏开发服务器或热重载。
- 主题不可定制:仅两种内置主题,无法通过配置文件自定义品牌色或字体。
- 无 API/库模式:目前仅 CLI 工具,难以作为 Python 模块嵌入其他应用。
- 图片外链依赖:虽然 CSS 内嵌,但图片仍依赖外部 URL,离线场景需额外处理。
适合人群
- 技术写作者、开发者文档维护者,需快速生成可分享/可存档的 HTML 文档。
- 邮件营销或 Newsletter 运营者,需要自包含 HTML 模板用于邮件发送。
- 追求极简工具链、避免 Node.js/npm 依赖的 Python 生态用户。
- 离线环境或安全敏感场景(内网文档系统、无网络服务器)。
常规风险
- XSS 风险:若输入 Markdown 包含未过滤的 HTML 标签或恶意脚本,输出 HTML 可能保留原样,导致浏览器端代码执行。建议在可信源或经过净化后使用。
- 路径遍历:命令行参数若未校验,可能被利用读取系统敏感文件(如
python main.py ../../../etc/passwd)。 - 供应链假设:虽然当前零依赖,但若未来引入第三方库,需重新评估依赖树安全。
- 输出覆盖:默认输出到文件时可能覆盖已有文件,建议配合版本控制或备份策略。