Angular 通用构建命令将 package.json 包含在 dist 文件夹的根目录

Angular universal build command to include package.json at root level of dist folder

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

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

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

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

下面是我试过的:

Angular.json

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

我也在

上尝试了解决方案

下面还有我在 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'

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

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

buildspec 文件

  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/*"
            ]
        }
    ]
}