不要靠近 Jekyll,否则会变得不幸。
缺点
- Jekyll 的 markdown 解析器是 kramdown。
- GFM parser 不支持现在 Github 的 markdown 语法。比如 Automatic URL Linking(见下文),以及内嵌在
<details>标签里的 markdown 语法。 - kramdown 默认使用 GFM parser,但最后维护时间是 2021 年。kramdown 的维护也不活跃。
- Jekyll 可以通过
markdown: GFM来切换 markdown 解析器,但是这个解析器也有问题。当 heading 包含中文,生成的<a>标签里的锚点不是中文。 markdown: CommonMarkGhPages跟markdown: GFM效果基本一样,问题相同。- Github Page 目前使用的 Jekyll 3。而 Jekyll 最新都出到 4 了。而且 Github Page 维护者说不会升级。
- 在 md 文件里写
{{...}},最后渲染是空的。
如何改变 url path 格式
这跟 _config.yml 的 permalink 选项相关。
懒人选项:
permalink: pretty,url 是/title/。permalink: none,url 是/title.html。
url 没有渲染成链接
bare url 渲染成链接的功能属于 Markdown 扩展语法 (Extended Syntax),即 Automatic URL Linking,
jekyll 使用的 kramdown 来处理 markdown。虽然它说支持 Automatic URL Linking,但实际上从 2016 年起到 2023 年 2 月,实际上它都不支持。参考这个 Issue 和这个 Issue。
有两种解决方法
_config.yml设置markdown: GFM,使用 Github 的 markdown 处理器来处理。- 用
<url>或者[url](url)。这是 markdown 的基础语法,也是 kramdown 支持的语法。
pages-gem
因为 Github Page 默认使用 Jekyll 来编译。
Github 提供了 pages-gem 来一键安装 Github Page 编译依赖。
然而 pages-gem 可能存在一个问题,导致在本地 jekyll build 以及 jekyll serve 得到的 index.html 格式不对。
详见 https://github.com/github/pages-gem/issues/657
{{...}} 渲染为空的问题
实际上 jekyll 编译时会报警告 Liquid Warning: Liquid syntax ... is not a valid expression ...。然后 {{...}} 部分渲染为空。
具体参考这篇文章。
解决方法:用 raw tag 包裹。
<!-- {% raw %} -->
`docker container ls --format='{{json .}}'`
<!-- {% endraw %} -->