es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comando de construcción universal de Angular para incluir el archivo package.json en el nivel raíz de la carpeta dist.

Estoy intentando implementar mi aplicación de Angular Universal en AWS Elastic Beanstalk. Creé un canal de código en AWS donde la salida de la compilación se envía a Elastic Beanstalk. Ahora Elastic Beanstalk necesita un archivo app.js o server.js o Procfile o package.json para ejecutar la aplicación, pero mi carpeta de compilación es como la siguiente:

--dist/
   --NombreApp/
       --browser/
       --server/

// aquí espero encontrar el archivo package.json

Mi problema:
Estoy intentando construir Angular Universal, pero quiero incluir package.json en el nivel raíz de la carpeta dist. Intenté diversos enfoques, pero el archivo package.json se va a la carpeta “browser” de la compilación.

Esto es lo que intenté:

Angular.json:

"assets": [
  "src/favicon.ico",
  "src/assets",
  { "glob": "package.json", "input": "./", "output": "/" }
],

También intenté la solución en este enlace (https://stackoverflow.com/questions/39538464/how-to-include-custom-files-with-angular-cli-build)

Además, este es mi archivo buildspec en AWS:

version: 0.2

env:
    variables:
        CACHE_CONTROL: "86400"
        S3_BUCKET: "arn:aws:s3:::devemr.growthemr.com"
        BUILD_FOLDER: "dist"
phases:
  install:
    runtime-versions:
        nodejs: 10
    commands:
        - echo Installing source NPM dependencies...
        - npm install
        - npm install -g @angular/cli@next
  build:
    commands:
        - echo Build started 
        - npm run build:ssr
  post_build:
    commands:
        - bash -c "if [ \"$CODEBUILD_BUILD_SUCCEEDING\" == \"0\" ]; then exit 1; fi"
        - aws s3 rm s3://devemr.growthemr.com --recursive
        - echo S3 bucket is cleared.

artifacts:
    files:
        - '*/*'
    base-directory: 'dist'

Cualquier solución será muy apreciada. Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para incluir el archivo package.json en la carpeta raíz de la carpeta dist, puedes modificar tu archivo angular.json. En el arreglo de assets, añade el siguiente objeto:

    {
      "glob": "package.json",
      "input": "./",
      "output": "/"
    }
    

    Esto le indicará a Angular CLI que copie el archivo package.json desde la raíz de tu proyecto a la raíz de la carpeta dist durante el proceso de construcción.

    En tu archivo buildspec, puedes agregar un comando para mover el archivo package.json a la carpeta dist antes de realizar el despliegue en Elastic Beanstalk. Por ejemplo:

    post_build:
      commands:
        - cp package.json dist/
        - aws elasticbeanstalk create-application-version --application-name MyApplication --version-label v1 --source-bundle S3Bucket="my-bucket",S3Key="dist/"
        - aws elasticbeanstalk update-environment --environment-name MyEnvironment --version-label v1
    

    Esto copiará el archivo package.json desde la raíz de tu proyecto a la carpeta dist, creará una nueva versión de la aplicación en Elastic Beanstalk utilizando la carpeta dist como paquete fuente y actualizará el entorno para utilizar la nueva versión de la aplicación.

    Ten en cuenta que es posible que necesites modificar los comandos de AWS CLI para que se ajusten a tu configuración específica.

Comments are closed.