Ejecuta un paso de compilación personalizado

De forma predeterminada, el entorno de ejecución de node.js ejecutará npm run build si se detecta una secuencia de comandos build en el archivo package.json. Si necesitas control adicional sobre tus pasos de la compilación antes de iniciar tu aplicación, puedes proporcionar un paso de compilación personalizado. Para ejecutar los pasos de compilación personalizados, agrega gcp-build en tu archivo package.json.

Para evitar que tu compilación ejecute la secuencia de comandos npm run build, debes hacer lo siguiente:

  • Agrega una secuencia de comandos gcp-build con un valor vacío en el archivo package.json: "gcp-build":"". Para obtener detalles sobre la configuración de package.json, consulta Configuración de los paquetes de compilación de Node.js.
  • Agrega la variable de entorno de compilación GOOGLE_NODE_RUN_SCRIPTS con un valor vacío en el archivo app.yaml.

    build_env_variables:
      GOOGLE_NODE_RUN_SCRIPTS: ''
    
Para obtener más información sobre cómo especificar variables de entorno de compilación, consulta la sección build_env_variables en el archivo app.yaml.

Cuando se ejecuta esta secuencia de comandos, las dependencias en los campos dependencies y devDependencies del archivo package.json están disponibles. Después de ejecutar este paso, App Engine quita y vuelve a generar la carpeta node_modules mediante la instalación de dependencias de producción declaradas en el campo dependencies del archivo package.json.

Si deseas obtener más información sobre cómo configurar el entorno de ejecución para los pasos de compilación personalizados, consulta Ejecuta pasos de compilación personalizados durante la implementación para paquetes de compilación de Node.js.

Ejemplo

Una secuencia de comandos de compilación personalizada se puede usar para tareas de procesamiento previo, como el procesamiento previo de CSS, la reducción de JavaScript del cliente o la ejecución de herramientas, como webpack o gulp.

Por ejemplo, para compilar TypeScript en JavaScript, tu archivo package.json podría verse de la siguiente manera. Ten en cuenta la secuencia de comandos 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"
  }
}

Entrega archivos estáticos

Cuando generas o copias archivos durante el paso de compilación personalizado, App Engine no entrega estos archivos estáticos directamente desde tu app mediante el uso de los elementos static_dir o static_files elementos definidos en el archivo app.yaml. En su lugar, App Engine sube los archivos estáticos a la infraestructura de entrega en el entorno estándar antes de ejecutar el paso de compilación personalizado. Cualquier solicitud a los archivos generados o copiados durante el paso de compilación personalizado da como resultado un error de HTTP 404 NOT FOUND.