如何用gatsby只获取mdx渲染文章的一部分?例如,mdx 博客文章的前几句话?

How to get only a portion of the mdx rendered article with gatsby? For example, first several sentences of a mdx blog article?

我正在使用 GatsbyJS + MDX 创建博客。对于文章列表页面,我想显示每篇文章的前几 sentences/paragraphs(就像你几乎总是在普通博客中看到的那样)。但是,我想不出在 mdx 中这样做的方法。

例如,我不能简单地截断 .mdx 文件(比如截断前 1000 个字节),否则我们可能会得到未闭合的标签等等,使 mdx 变得混乱。

gatsby-transformer-remark 公开了一个 excerpt 字段,可以使用 pruneLength 将其截断为任何所需的长度,这是降价正文的一部分。

例如:

{
  allMarkdownRemark {
    edges {
      node {
        excerpt(pruneLength: 280)
      }
    }
  }
}

对于 MDX,外部节点将与上面的代码片段不同,但只要您使用 gatsby-transformer-remarkexcerpt 就可用。您可以通过填充 gatsbyRemarkPlugins object

来使用 gatsby-transformer-remark
{
  resolve: `gatsby-plugin-mdx`,
  options: {
    gatsbyRemarkPlugins: [
      {
        resolve: `gatsby-transformer-remark`,
      },
    ],
  },

对于高度可定制的场景,您可以使用 gatsby-plugin-excerpts 插件。