Como executar uma etapa de criação personalizada

Por padrão, o ambiente de execução do node.js executará npm run build se um script build for detectado no arquivo package.json. Se você precisar de mais controle sobre as etapas do build antes de iniciar o aplicativo, forneça uma etapa personalizada de build. As etapas personalizadas de build podem ser executadas adicionando gcp-build ao arquivo package.json.

Para evitar que sua versão execute o script npm run build, siga um destes procedimentos:

Para conferir detalhes sobre como especificar variáveis de ambiente de build, consulte a seção build_env_variables no arquivo app.yaml.

Ao executar este script, as dependências nos campos dependencies e devDependencies do arquivo package.json estarão disponíveis. Após a execução da etapa de criação personalizada, o App Engine remove e gera novamente a pasta node_modules instalando apenas as dependências de produção declaradas no campo dependencies do arquivo package.json.

Para saber mais sobre como configurar o ambiente de execução para etapas de versão personalizadas, consulte Como executar etapas de versão personalizadas durante a implantação para buildpacks do Node.js.

Exemplo

Um script de criação personalizada pode ser usado para tarefas de pré-processamento, como CSS de pré-processamento, redução de JavaScript do lado do cliente ou ferramentas em execução, como webpack ou gulp.

Por exemplo, para compilar o TypeScript para JavaScript, seu arquivo package.json pode ser semelhante ao seguinte. Observe o script gcp-build:

{
  "name": "appengine-typescript",
  "description": "An example TypeScript app running on Google App Engine.",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "Google Inc.",
  "engines": {
    "node": "16.x.x"
  },
  "scripts": {
    "prepare": "npm run gcp-build",
    "pretest": "npm run gcp-build",
    "test": "c8 mocha -p -j 2 test/*.test.js --exit",
    "lint": "gts lint",
    "start": "node ./index.js",
    "deploy": "gcloud app deploy",
    "clean": "gts clean",
    "compile": "tsc -p .",
    "fix": "gts fix",
    "build": "tsc -p .",
    "gcp-build": "tsc -p ."
  },
  "dependencies": {
    "@typescript-eslint/parser": "^6.0.0",
    "express": "^4.16.3"
  },
  "devDependencies": {
    "@types/express": "^4.17.17",
    "@types/node": "^18.13.0",
    "c8": "^8.0.0",
    "chai": "^4.3.7",
    "gts": "^5.0.0",
    "mocha": "^10.2.0",
    "typescript": "^5.0.0",
    "wait-port": "^1.0.0"
  }
}

Como disponibilizar arquivos estáticos

Quando você gera ou copia arquivos durante a etapa de criação personalizada, o App Engine não disponibiliza esses arquivos estáticos diretamente do aplicativo usando static_dir ou static_files definidos no arquivo app.yaml. Em vez disso, o App Engine faz upload dos arquivos estáticos na infraestrutura de serviço no ambiente padrão antes de executar a etapa de versão personalizada. Qualquer solicitação para os arquivos gerados ou copiados durante a etapa de criação personalizada resulta em um erro HTTP 404 NOT FOUND.