盖茨比变压器的自定义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: [
          ...
        ],
      },
    },
  ]
}