【问题标题】:Is it possible to create a link in a Gatsby .md file using the markdown path, not the eventual url?是否可以使用降价路径而不是最终的 url 在 Gatsby .md 文件中创建链接?
【发布时间】: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) 有一天它会出现在我的一长串要玩的东西上。

标签: markdown gatsby


【解决方案1】:

这个怎么样?

[see here](/this-is-foo)

您不应将 .md 扩展名添加到链接中,如果您省略主机名,它应该在您的开发和生产版本中都可以使用。

【讨论】:

  • 嗨罗宾是的,这就是我最终做的。我的问题写得很糟糕:我特别想要一个解决方案,我可以只写post1 并让 gatsby 明白我的意思是“无论 post1 词汇变成什么,在一天结束时”。我应该更新我的 Q. :-/
  • 有道理。不过,这在很大程度上取决于您如何使用gatsby-node.js。如果有帮助,您可以轻松设置它,使 URL 与文件名相同:)
猜你喜欢
  • 2020-09-18
  • 2013-03-23
  • 2020-10-13
  • 2011-12-14
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多