-
Notifications
You must be signed in to change notification settings - Fork 22
处理文章中的相对链接 #312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
处理文章中的相对链接 #312
Conversation
|
可能是我不太懂 Jekyll,但我没看懂这个 PR 在做什么。 |
当前站点使用的 Markdown 转换器为 kramdown Line 80 in c852e38
使用 GFM 方言 Line 133 in c852e38
下面这种写法 (https://github.github.com/gfm/#shortcut-reference-link) 会被渲染为 [aaaa][bbbb]
[bbbb]: cccc "dddd"其实等价于 在 jekyll 中可以在 md 中使用 liquid 模板语法,但是 Github 并不支持渲染 liquid 模板语法。 <--
html 注释
中间的内容不会被 Github 渲染出来
-->通过将两种注释结合,可以实现双向兼容的效果:
<!--{% comment %}-->
在 Github 中可以显示而 Jekyll 忽略
<!--{% endcomment %}-->上面的写法在 Jekyll 渲染的结果为
<!----{{'>'}}
在 Jekyll 中可以渲染而 Github 忽略
<!---->上面的写法在 Github 中会被整个识别为 html 注释,因为第一行的 <!---->
在 Jekyll 中可以渲染而 Github 忽略
<!---->liquid 转换相对链接的方法有两种:
基础写法
基础写法
上面两种写法都可以把相对链接转为正确的相对于 baseurl 的链接地址,区别在于 link 标签会更严格,原因在于 link 写法会检查目标是否存在,如果目标不存在会导致构建报错。还有就是 relative_url 不会把 md 的相对链接转换为 html 地址,而 link 会自动转换为文章对应的 permalink 地址。 <!--{% comment %}-->
[~/docs/groups]: /_docs/groups.md
<!--{% endcomment %}--{{'>'}}
[~/docs/groups]: {% link _docs/groups.md %}
<!---->此写法的效果是: 在 GitHub 上,链接目标为 在 Jekyll 上,链接目标为 换句话说,它相当于同时兼顾了以下两种写法:
因此,这种双注释写法可以同时兼顾 GitHub 与 Jekyll 的显示效果。 |
|
如果我的理解正确,那该 PR 实际上是修复了 所有链接仅能在 Jekyll 环境中正确跳转但不能在 GitHub GFM 中正确渲染 的 Bug。 然而,我没有理解您特意支持 GitHub GFM 链接渲染的意义所在。原先我们没有 PR 预览,确实需要在 GitHub 环境中确认文本链接。但在您贡献的预览构建功能加持下,维护者可主动创建预览页面来调试文本链接。 |
可能存在一些误解:该 PR 的核心目标其实是修复相对链接在 baseurl 不为空时的渲染错误。例如,当页面中出现 你可以为当前 PR 创建预览,理论上页面中的图片及链接都应能正确指向对应的地址。 举例来说,当 baseurl 不为空时(例如在 PR 预览构建中,以 |
|
那我的理解确实有误。不过,我认为可以不将 GitHub 原生渲染纳入支持范围,仅提供 |
与上面的 PR 的目的一致,均是处理文章中的相对链接的,区别在于本 PR 未使用插件实现。