【问题标题】:Angular universal build command to include package.json at root level of dist folderAngular 通用构建命令在 dist 文件夹的根级别包含 package.json
【发布时间】:2022-01-03 09:58:07
【问题描述】:

我正在尝试将我的 Angular 通用应用程序部署到 AWS Elastic beanstalk。我在 AWS 上创建了一个代码管道,将构建输出发送到弹性 beanstalk。现在弹性 beanstalk 需要一个 app.js 或 server.js 或 procfile 文件或 package.json 来运行应用程序,但我的构建文件夹如下所示

--dist/
   --Appname/
       --browser/
       --server/

   -- //here I am expecting package.json file

我的问题: 我正在尝试构建角度通用,但我想在 dist 的根级别包含 package.json。文件夹。我尝试了多种方法,但 package.json 将转到构建的 browser 文件夹。

以下是我尝试过的:

Angular.json

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

我也在this link上尝试了解决方案

下面也是我在 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'

我们将不胜感激任何解决方案。提前致谢

【问题讨论】:

  • 您是否尝试在使用cp 构建后复制它?
  • @MohammadBabaei 我已经尝试过,但是由于那时已经创建了构建 zip,所以这不起作用可能是我的 cp 命令错误,但下面是我尝试过的 aws cp s3://bucketname/package.json s3://bucketname/buildfolder

标签: javascript angular amazon-web-services amazon-elastic-beanstalk angular-universal


【解决方案1】:

我看到您正在尝试运行在构建后生成的主 js 文件以防 ssr。要运行它,您需要根据 aws 文档编写脚本或 Procfile。为此,我将 Procfile 添加到我的 s3 存储桶中,然后运行构建命令

构建规范文件

  build:
    commands:
        - echo Build started 
        - npm run build:ssr
  post_build:
    commands:
        - aws s3 cp s3://yourbucketname/Procfile ./dist
        - bash -c "if [ /"$CODEBUILD_BUILD_SUCCEEDING/" == /"0/" ]; then exit 1; fi"
        # - aws s3 rm s3://devemr.growthemr.com --recursive
        - echo S3 bucket is cleared.
        # - aws cloudfront create-invalidation --distribution-id=E26GLI30EJTNBB --paths '/*'
 
artifacts:
    files:
        - '**/*'
    base-directory: 'dist'

另外,不要忘记在您的 s3 存储桶中添加权限,如下所示

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}

【讨论】:

  • 这工作非常感谢你解决了我的问题。非常感谢我从几个星期以来一直坚持这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多