如何使用备注frontmatter访问frontmatter



我正试图使用remakjs生态系统来解析一个包含markdown和frontmatter的文件,并将其转换为HTML。该文件可能看起来像这样:

---
title: Title
---
# This is a heading

我设法解析了markdown,这可以通过遵循GitHub README文件中的示例来完成,而且我还知道有一个remark-frontmatter包。然而,只需像前面提到的示例中那样使用包,解析器就会完全忽略前端部分。当然,这个部分不应该包含在HTML中,但我仍然想使用它。但据我所知,它不是输出的一部分。这就引出了我的问题:如何使用这些包访问前台?我知道在这个过程中的某个地方正在解析它,但我如何访问它?

我发现文档非常令人困惑,因为remarkFrontmatter插件最常见的用例应该是使frontmatter在文件中可访问。然而,它并没有做到这一点,并且必须安装remarkParseFrontmatter才能获得该功能。

这里有几个工作版本。一个是统一,一个是备注。

import { unified} from 'unified'
import remarkParse from 'remark-parse'
import remarkFrontmatter from 'remark-frontmatter'
import remarkParseFrontmatter from 'remark-parse-frontmatter'
import remarkStringify from 'remark-stringify'
import { remark } from 'remark';
// With Unified, which is a lower-level API that remark uses internally.
const fileOfUnified = unified()
.use(remarkParse)
.use(remarkStringify)
.use(remarkFrontmatter, ['yaml', 'toml'])
.use(remarkParseFrontmatter)
.processSync(`---ntitle: unified workedn---`)
console.log(fileOfUnified.data.frontmatter); // {title: 'unified worked'}
// With Remark, which is built on top of Unified, basically by adding remarkParse and remarkStringify.
const fileOfRemark = remark()
.use(remarkFrontmatter, ['yaml', 'toml'])
.use(remarkParseFrontmatter)
.processSync(`---ntitle: remark workedn---`)
console.log(fileOfRemark.data.frontmatter); // {title: 'remark worked'}

我发现如果你这样做:

添加name属性,如文档中所示:

remarkPlugins: [remarkFrontmatter, [remarkMdxFrontmatter, {name: 'matter'}]]

你可以通过file.matter获得前面的内容。

除了关键字frontMatter之外,这个名字似乎可以是任何东西——我尝试过matterfrontM等。所有这些都有效,但frontmatter对我来说不起作用。

不确定这是否是一个错误。

最新更新