感觉各家 Front Matter 都太过简单——所以我写了一个足够复杂的,就是这样。
特点
命名我参考了 microformats2 和 JSON Feed,同时用下划线作为分隔符(而不是在 YAML 看起来很别扭的 camelCase ),看起来会规整一些。
与 microformats2 兼容
例如 bookmark_of, like_of, repost_of, in_reply_to 四种提及类型... 懒得写了,可以在文档里看
flags
立 flag 灵感源于 chrome://flags。可以减少需要额外定义的变量:
# before
draft: true
visibility: 'unlisted'
# after
flags:
- draft
- unlisted
对象媒体
为媒体文件如 image 提供了接近 HTML 的扩展性,同时也支持仅 src 的简洁格式。
# string
image: 'https://fff.local/images/foo.avif'
# object
image:
src: 'https://fff.local/images/foo.avif'
alt: 'lorem ipsum'
figcaption: 'lorem ipsum'
sources:
- srcset: 'https://fff.local/images/foo444.avif'
media: '(min-width:444px)'
- srcset: 'https://fff.local/images/foo666.avif'
media: '(min-width:666px)'
包
fff-flavored-frontmatter
类型定义和一些工具函数,比如帖文类型发现和转换为对应的 JSON Feed 对象
remark-fff
Remark 插件,用于将其他 SSG 的 Front Matter 转换为 FFF
目前支持 MDsveX (Svelte / SvelteKit) 和 Astro,之后会兼容更多环境
markdown-it-fff
上面插件的 Markdown-It 版本,需要配合 @mdit-vue/plugin-frontmatter 食用
indiekit-preset-fff
Indiekit 的 FFF 预设,默认 postTypes 为 Urara