gcloud 不会跳过根级文件

gcloud does not skip root level files

我正在尝试将 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/
  upload: www/(.*)

项目输出生成到 www 文件夹。 gcloud 用于使用批处理文件中的 gcloud app deploy app.yaml --quiet --version %DOC_VERSION% --project %GCP_PROJECT_ID% 命令进行部署。

我原本希望 gcloud 复制和部署仅在 www 文件夹下的文件,但它却开始复制 node_modules 文件夹下的大约 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/
  upload: www/(.*)

并按预期工作。

我的理解是static_files设置被gcloud工具用来上传相关文件。那么,为什么要从未提及的文件夹上传文件?提到 skip_files 是正确解决此行为的唯一方法吗?

您的 app.yaml 文件中的 static_files 设置仅将目录指定为静态文件的位置,以便平台在运行时需要时定位它们。

要指定在部署期间应该或不应该上传哪些目录和文件,在 app.yaml 中定义 skip_files 是一种选择。另一种选择是在项目的根目录(app.yaml 所在的位置)创建一个 .gcloudignore 文件,您可以在其中指定应该 上传到的文件Google 云平台。它遵循与 .gitignore 相同的语法。您将在 Github 示例代码 here 中找到它的示例。请注意,您可以使用 skip_files.gcloudignore 来避免冲突。