我正在尝试将SPA部署到GAE。我正在按照他们的static website example中给出的配置示例进行操作。我的项目文件夹结构如下:
D:\Projects\Proj1
|-node_modules
|-src
|-www
|-.babelrc
|-.gitignore
|-app.yaml
|-package.json
|-package-lock.json
和我的app.yaml如下:
runtime: php55
service: frontend
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: www/index.html
upload: www/index.html
- url: /(.*)
static_files: www/\1
upload: www/(.*)
项目输出将构建到www
文件夹中。 gcloud
用于通过批处理文件中的gcloud app deploy app.yaml --quiet --version %DOC_VERSION% --project %GCP_PROJECT_ID%
命令进行部署。
我原本希望gcloud
复制和部署仅位于www
文件夹下的文件,但是相反,它也开始复制node_modules
文件夹下的aprox 10K文件(我终止了该过程)。
因此,我更改了app.yaml
,现在看起来像这样:
runtime: php55
service: frontend
api_version: 1
threadsafe: true
skip_files:
- ^node_modules$
- ^src$
- ^assets$
- ^\.
handlers:
- url: /
static_files: www/index.html
upload: www/index.html
- url: /(.*)
static_files: www/\1
upload: www/(.*)
并按预期工作。
我的理解是static_files
工具使用gcloud
设置来上传相关文件。那么,为什么要从未提及的文件夹上传文件呢?提到skip_files
是正确解决此问题的唯一方法吗?
答案 0 :(得分:2)
app.yaml文件中的static_files
设置仅将目录指定为静态文件的位置,以便平台在运行时需要时定位它们。
要指定在部署期间应该上传或不应该上传哪些目录和文件,在app.yaml中定义skip_files
是一种选择。另一个选项是在项目的根目录(app.yaml所在的位置)中创建一个.gcloudignore
文件,在该文件中指定应不上传到Google Cloud Platform的文件。它遵循与.gitignore
相同的语法。您可以在Github示例代码here中找到一个示例。请注意,您可以使用skip_files
或.gcloudignore
来避免冲突。