来自我之前的问题Gatsby .cache folder in AWS Amplify Console,我发现AWS Amplify使用的docker图像容器在每次构建时都会更改其路径,但是.cache文件夹文件路径是绝对的。是否可以使它们相对于文件夹,以便.cache可以跨构建分发?不好意思的解释,我希望有人能理解...
答案 0 :(得分: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输入文件为失踪
Gatsby假定到.cache
的绝对路径在两次构建之间是一致的。这与CodeBuild不太兼容,因为每个构建的构建目录都会更改。因此,Gatsby无法找到缓存的文件并引发错误。
因此,创建一致的路径并将工件带到那里将解决此问题。构建完成后,请确保将新的工件带到CODEBUILD_SRC_DIR
中,以便下次可以对它们进行缓存!