首页 > 解决方案 > GatsbyJS:仅重建特定页面

问题描述

我想知道是否可以告诉 Gatsby 进程只修改特定页面。场景可能是:

您有一个包含数千篇文章的巨大博客。对于初始构建,我通过 GraphQL API 获取内容并为我的所有帖子创建所有 /post/:postId 页面。据我了解 GatsbyJS,当我想更改一篇或多篇文章时,我必须重新运行构建过程。但是:构建过程很慢,内容很多,告诉构建过程盖茨比只需要修改现有构建会容易得多。例如,我只想像这样更改帖子的标题:

const newPage = { ...page };
deletePage(page);
createPage({
  ...newPage,
  context: {
    ...newPage.context,
    title: 'My new Blog title',
  },
});

有没有办法告诉 gatsby 只重建受影响的文件而不是重建所有内容?

另一种解决方案是始终从客户端上的 graphql API 获取数据,但随后我将失去 SSR 的好处以及仅提供静态 HTML 文件的好处。

标签: javascriptgatsby

解决方案


您所描述的称为增量构建

在 github上的官方 Gatsby repo上有一个关于您的确切问题的问题。看起来您需要的功能将在接下来的几个版本中提供:

dominicfallows 于 18 天前发表评论

只是想更新一下,我的团队即将将 PR 发布到 Gatsby 存储库中,我们认为它可以实现增量构建。我们只是花一些时间来写一个好的 PR 并收紧代码,但是当我们完成后我会在这里更新(在下一周左右)。

所以答案是:

不,这还不可能。

但这将在接下来的几周或几个月内成为可能。至于如何实现,则需要等待官方文档或查看 issue 中链接的 PR。


推荐阅读