有没有办法修改 Gatsby 中的 MDX frontmatter?

Is there a way to modify MDX frontmatter in Gatsby?

我正在使用 gatsby-plugin-mdx 和 Gatsby。我已经在我的 frontmatter 中添加了一个 draft 字段,并且当 NODE_ENV"production" 时,我想将其值覆盖为始终为 false。请注意 gatsby-plugin-draft 似乎没有修改 MDX AST 并且与 gatsby-plugin-mdx.

不兼容

你可以在 onCreateNode 方法中做到这一点。

你可以这样做:

// onCreateNode.js
const { createFilePath } = require('gatsby-source-filesystem')

module.exports = ({ node, getNode, actions }) => {
  const { createNodeField } = actions

  if (node.internal.type === 'Mdx') {
    const slug = createFilePath({ node, getNode, basePath: 'pages' })
    const isProduction = ... // TODO: implement

    createNodeField({
      node,
      name: 'draft',
      value: isProduction?  false :  node.frontmatter['draft'],
    })
  }
}