AWS Amplify控制台中的Gatsby .cache文件夹

时间:2019-07-14 06:42:10

标签: gatsby aws-amplify

最近,我构建了一个Gatsby项目,并使用Amplify控制台并连接我的Bitbucket存储库将其部署在AWS Amplify上。该项目规模不断扩大,现在必须用大量图像构建37页。我正在使用“ gatsby-source-custom-api”进行数据提取,该数据提取使用“ gatsby-image”进行图像处理。它还提供了一种方法来指定是否更改了图像,因此,如果未更改,它会使用.cache使“ gatsby-image”已对其进行优化。 现在,我面临的问题是,AWS Amplify中的两个构建之间的.cache文件夹不可用。它可以存储在某个地方还是有另一种使用方式?现在只花了13分钟就可以完成构建,主要部分是图像处理。

2 个答案:

答案 0 :(得分:0)

您可以通过将.cache文件夹定义为buildspec的一部分来存储它:https://docs.aws.amazon.com/amplify/latest/userguide/build-settings.html#yml-specification-syntax

答案 1 :(得分:0)

尝试以下操作:

buildspec.yml

version: 0.2

phases:
  pre_build:
    commands:
      - mkdir -p /build-directory
      - cp -a ${CODEBUILD_SRC_DIR}/. /build-directory
      - cd /build-directory
      - yarn
  build:
    commands:
      - cd /build-directory
      - gatsby build
  post_build:
    commands:
      - cd /build-directory
      - cp -a /build-directory/. ${CODEBUILD_SRC_DIR}
cache:
  paths:
    - 'node_modules/**/*'
    - 'public/**/*'
    - '.cache/**/*'

在撰写本文时,还没有一个整洁的解决方案。缓存整个.cache目录最终将引发以下错误:

无法处理图像/codebuild/output/src***/src/project/.cache/gatsby-source-filesystem//.png输入文件为失踪

正如您在评论中所提到的,盖茨比假设.cache的绝对路径在各个版本之间是一致的。这与CodeBuild不太兼容,因为每个构建的构建目录都会更改。因此,Gatsby无法找到缓存的文件并引发错误。

因此,创建一致的路径并将工件带到那里将解决此问题。构建完成后,请确保将新的工件带到CODEBUILD_SRC_DIR中,以便下次可以对它们进行缓存!