#website #website-generator #blog #generator #static-website

app rotuli

最通用的静态网站等内容的处理器

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2020年7月20日

#22#website-generator

MIT 许可证

89KB
419

Rotuli 静态站点编译器

一个正在努力成为最通用内容处理器的项目。

people using rotuli

图1:自罗马帝国以来,rotuli 已被广泛使用。

(有些人声称这个术语应该是 "generator" 而不是 compiler,但原始内容是由人而不是软件生成的。)

哲学

一个非常纯净和通用的库,以及一个简单的命令行工具来拉取和挤压内容。

  • Rotuli 的首要目标是保持简单和格式无关;它只是你数据的一个支持结构,使得展示你拥有的内容变得稍微容易一些。你拥有的内容和你的方式是你的事。
  • Rotuli 也是 rotulus 的复数形式,这是一个古代的卷轴,用来保存书面信息。
  • 文本内容进入,如果有标记,则渲染,通过其模板和元数据进行,最终渲染的文档被挤压出来。对每个特殊内容文件重复此过程。非特殊内容直接复制。
  • 输入和输出目录列表相同。没有“posts”目录,即“路由”很简单。
  • 标记、元数据和模板语言可以是任何你想要的(目前是 rst、yaml 和 jinja/tera)。
  • 附加功能基于元数据和模板结构构建。

Rotuli 是通用的;它对你的网站没有任何假设。内容甚至不需要是一个网站。如果你喜欢,可以用它来写书。如果你更喜欢 PDF 格式,可以渲染 PDF(当模板系统支持时)。Rotuli 只提供渲染逻辑、元数据处理、页面分组和一些模板过滤器。内容不知道它在被处理。

Rotuli 甚至没有配置文件。配置文件是邪恶的,因为全局变量是邪恶的。将你的数据视为个体。

源数据不允许有任何模板代码,因为数据应该是工具无关的。有没有图像或代码列表或页面链接的快捷方式?抱歉,没有。使用现代标记语言和持久 URL。

核心功能

  • 一致的输入和输出文件层次结构
  • 快速增量构建,适用于迭代、实时工作,并最大限度地减少浪费
  • 标记处理以结构化内容
  • 文档元数据用于描述内容
  • 模板引擎用于展示内容
  • 根据共享元数据键分组内容
  • 草稿元数据键用于排除内容(除非指定)

内容分组功能简单、意义重大且强大。

隐含功能

例如

  • 每个渲染页面到源代码库的简单链接
  • 多语言内容:使用元数据和分组将翻译链接在一起
  • 类别即标签即关键词:在元数据中分组内容,并使用模板列出它们
  • 根据年份、月份或日期自动按日期分组的内容(例如,博客文章或新闻)
  • 通过内容分组列出页面类型,如博客条目、教程和项目条目
  • 根据组中的当前页面索引,链接到集合中的下一页和上一页

为什么

  • 简单、通用,但又非常具体
  • 有人想有一个学习Rust编程语言的爱好项目
  • 如果你这么想,这个名字很有趣(而且显然比2016年这个项目开始并废弃四年之后的今天更独特Rotulus
  • 名字的字母与编程语言相同

为什么不

非常通用且内容无关的业务意味着必须做出一些妥协。例如

  • 元数据中存在一些冗余(例如,多语言组需要唯一的键,而URL是方便的唯一键)
  • 博客URL层次结构可以是/year/month/day/title/,但日期仍需要在元数据中指定
  • 缺乏博客特定功能可能会让你望而却步,但rotuli将来将支持扩展
  • 没有“服务调试模式”来呈现渲染的数据 - 如果你没有本地httpd,请另寻它处

待办事项

  • 库/CLI工具分离
  • 文档
  • 生产事物,例如硬链接到图像以避免大的重复副本
  • 图像缩略图
  • 语法高亮的代码列表
  • 其他标记/元数据/模板引擎
  • 一堆内部事物
  • 性能基准测试
  • 在不分叉整个代码库的情况下,为特定功能提供一些扩展

依赖关系

~10–19MB
~298K SLoC