1

我想在创建 MarkdownRemark GraphQL 节点时通过 Gatsby Transformer Remark 插件向它添加更多信息。

目前我正在尝试在插件中做到这一点:

盖茨比-config.js

/* ... */
{
  resolve: "gatsby-transformer-remark",
  options: {
    pedantic: false,
    plugins: [
      'my-remark-plugin',
    ]
  }
}
/* ... */

插件/my-remark-plugin/index.js

module.exports = async ({markdownNode, actions}, pluginOptions) => {

  /* Somehow add more data to the markdownNode which can be queried */

}

只是要清楚; 我不想改变 AST 节点。我想在创建 MarkdownRemark GraphQL 节点时从插件中添加更多任意数据。

我尝试使用createNodeField,但在查询时无法发现这些字段。

gatsby-transformer-remark 插件是否有可能不是这样做的地方?字段是在使用标准 Gatsby 插件时创建的createNodeField,但我希望从 Gatsby Transformer Remark 插件中进行。

4

1 回答 1

0

createNodeField将在fields. 在 GraphiQL 中展开 allMdx->nodes->fields。我使用 MDX 而不是 Markdown。这是一个示例,类似于 Gatsby 文档中的示例。

exports.onCreateNode = ({node, actions, getNode, createNodeId, createContentDigest}) => {
  const {createNodeField} = actions
  if (node.internal.type === `Mdx`) {
    const value = createFilePath({node, getNode})
    createNodeField({name: `slug`, node, value})
  }
}
于 2021-02-27T17:25:06.323 回答