【发布时间】:2020-09-12 18:00:15
【问题描述】:
将 gatsby 用于博客。帖子是按顺序命名的(也许是愚蠢的,事后看来)。像 post1.md、post2.md 等。我为帖子生成页面,然后创建一个完整的 url。例如,我最终可能会得到:
|file | eventual generated url|
|=========|========================|
|post1.md | https://myblog.com/blog/this-is-foo|
|post2.md | https://myblog.com/blog/wonderful-bar|
有时我需要将这些帖子相互链接,而不用关心生成的 url 是什么。这些不起作用:
-
[see here](post1.md)(将原始 .md 文本输出到浏览器) -
[see here](/blog/post1.md)(吐出乱七八糟的 404 / 找不到页面)
如果我这样做[see here](https://myblog.com/this-is-foo),它将在生产中工作,但在开发中不起作用。 update [see here](/this-is-foo) 在两种环境中都可以使用,但需要我手动检查 frontmatter 并确定 url 路径将是什么(或等待构建,然后复制生成的 url 路径)。
对于这种链接,是否有解决方案可以在编辑时、构建时和运行时工作,只使用post1 或类似的?如果答案是否定的,那很好——我只是想知道。 (到目前为止,答案似乎是NO,不是开箱即用的)。
【问题讨论】:
-
您的用例很有趣,我很惊讶(经过公认的快速搜索)没有官方的解决方案。您可以编写一个自定义备注插件来查找链接,获取其文件节点,然后生成一个适用于生产和开发的相对路径(即
[see here](/this-is-foo))。查看remark plugins上的文档 -
@DerekNguyen - 哇哦,谢谢你的链接 - 大开眼界!看起来我必须提取用于生成 url 的代码,这样当我得到文件节点时,我可以推断 url 并用 html 链接替换节点。仍然感觉非常解决方法,大声笑! :o) 有一天它会出现在我的一长串要玩的东西上。