来聊聊 Jamstack 的未来——加入我们

soupault

302 星级
16 关注
8 问题
主页
https://soupault.app
版本库
dmbaturin/soupault
语言
OCaml
许可证
MIT
模板
HTML,Jingoo

基于元素树改写

Soupault 是一款自动化的 HTML 编辑器,而不仅仅是一个生成器。它可以将 HTML 解析为元素树,对其进行处理并将其保存为文件。这就像 DOM 处理,但不需要浏览器。

你可以将其用作网站生成器,并将不同的内容插入到“模板”(空页面)中。不过,它也可以作为手工网站或其他 HTML 生成器输出的后处理器。

静态二进制文件,可通过插件进行拓展

Soupault 是一个单独的、静态的二进制文件,没有依赖关系。预编译的二进制文件适用于 Linux、Windows 和 macOS。

不过,它有一个内置的 Lua 解释器,并提供了一个与 JavaScript DOM API 较为类似的元素树 API。插件可以访问页面的元素树以及从页面中提取的元数据,因此你可以完成你可以使用 JavaScript 完成的所有内容,还可以完成更多内容,但以静态方式。

UNIX 方式

Soupault 可以将 HTML 元素的内容通过外部程序进行管道并读取输出。你可以选择使用输出替换原始元素,或只是将输出添加到页面中。

例如,你可以使用 KaTeX 以静态方式呈现公式,或使用任意你选择的工具进行语法高亮。

你还可以为特定文件扩展名设置预处理器。例如,在解析和处理前,你可以将.md文件通过你选择的 Markdown 转为 HTML 转换器进行管道传输。

没有前端程序

Soupault 可以通过 CSS3 选择器从页面中提取元数据,这类似于微格式和 Web 抓取库的风格。你可以创建自己的内容模型,并告诉 soupault 提取什么内容。

然后,你可以使用内置的 Jingoo 模板处理器(语法类似于 Jinja2)或外部脚本将网站索引呈现为 HTML。你还可以将网站索引导出到 JSON 以进行进一步处理。

内置功能

soupault 开箱即用的一些功能

  • 从页面标题创建(完全静态的)目录。
  • 将外部文件或外部程序输出插入到页面中。
  • 创建 LaTeX 样式的脚注。
  • 添加面包屑。

示例

此配置片段会将 includes/menu.html 的内容插入包含该元素的所有页面中的 <div id="menu"> 里,但 404.htmlsplash.html 除外

[widgets.navigation-menu]
  widget = "include"
  file = "includes/menu.html"
  selector = "div#menu"
  exclude_page = ["404.html", "splash.html"]
部署到 Netlify

找到更多 静态网站生成器