盖茨比变压器的自定义YAML类型备注
我正在使用盖茨比,并使用盖茨比变压器的自定义YAML类型备注,yaml,gatsby,Yaml,Gatsby,我正在使用盖茨比,并使用Gatsby transformer remark插件使用graphQL将数据加载到我的页面中。我想对Markdown frontmatter中存储的一些数据执行自定义字符串操作 我认为使用自定义YAML类型将是一种很好的方法,因为这可以在编译时完成,而无需在运行时完成。(我相信该插件在编译时运行以生成数据?)例如,我可以定义一个名为max的自定义类型,它返回给定数组中的最大数,并直接在标记文件中使用它,如下所示: --- foo: !max - 2 - 4
Gatsby transformer remark
插件使用graphQL将数据加载到我的页面中。我想对Markdown frontmatter中存储的一些数据执行自定义字符串操作
我认为使用自定义YAML类型将是一种很好的方法,因为这可以在编译时完成,而无需在运行时完成。(我相信该插件在编译时运行以生成数据?)例如,我可以定义一个名为max
的自定义类型,它返回给定数组中的最大数,并直接在标记文件中使用它,如下所示:
---
foo: !max
- 2
- 4
- 5
---
是否可以为盖茨比变压器备注分析的frontmatter定义自定义YAML类型?或者,有没有其他更好的方法来处理这种情况
我可以看到盖茨比插件使用
grey matter
来解析前面的内容,它使用js yaml
来解析yaml。我知道可以在js YAML
中定义自定义YAML类型。但是,我似乎找不到如何将选项传递给js yaml
如果您想将选项传递给js yaml
,您必须定义一个自定义yaml引擎,然后通过gatsby transformer remark
的选项将其传递给灰质
定义自定义yaml引擎:
const yaml = require('js-yaml');
const schema = require('./custom-schema');
const customYamlEngine = (str) => yaml.safeLoad(str, { schema });
module.exports = customYamlEngine
然后将其传递到gatsby transformer remark
const yaml = require('./custom-yaml');
module.exports = {
plugins: [
{
resolve: `gatsby-transformer-remark`,
options: {
+ engines: { yaml },
plugins: [
...
],
},
},
]
}