Gatsby 是否需要在每次更新文档页面时重建我的整个网站?



我正在创建一个文档站点来保存我的每个产品的DocPages。盖茨比正在将我的所有网站构建为静态页面。我有多个技术作家,他们不断更新和创建新页面。盖茨比是如何处理的?每次更新内容时,我都必须使用 Gatsby 重建我的整个网站吗?

gatsby-source-contentful插件使用同步API。如果您保留.cachepublic插件周围的文件夹将只能获取更改的条目和资产并更新盖茨比数据。通过保持.cache应该更快地建立。

取决于你 Webhook 安装程序 此生成过程可能会触发多次,以解决以下解决方法:也许可以添加一个延迟生成过程的脚本,并确保只有一个生成过程正在运行。

我知道这是一个老问题,但我今天为此苦苦挣扎,似乎没有人给出一个像样的帖子或答案,盖茨比 v2 仍然重建一切当你重新启动盖茨比开发时。如果您的构建在第一次运行时需要 20 分钟,这是不行的。我的解决方案如下。

您可以使用缓存 API 保存哈希或更新数据的信息,并且仅在缓存不匹配(数据已更新(时才调用 createPage 操作

这是我在我的项目中的做法:

exports.createPages = async ({ actions: { createPage }, graphql, cache }) => {
  const results = await graphql(`
    query GetAllCars {
      myNamespaceFromGraphqlSource {
        allCars {
          id
          updatedAt
        }
      }
    }
  `);
  const createDetailsPage = async (car) => {
    const carCache = await cache.get(car.id);
    if(carCache != car.updatedAt) {
      createPage({
        path: `/car_details/${car.id}/`,
        component: require.resolve("./src/templates/details.js"),
        context: {
          id: car.id,
        },
      });
      await cache.set(car.id, car.updatedAt);
    }
  }
  for(let i=0; i < results.data.myNamespaceFromGraphqlSource.allCars.length; i++ ) {
    const car = results.data.myNamespaceFromGraphqlSource.allCars[i];
    await createDetailsPage(car)
  }

相关内容

  • 没有找到相关文章

最新更新