3

我用 Angular CLI 9 构建了一个应用程序。我package.json用以下方法修补了文件:

{
  "scripts": {
    "build:prod": "ng build --prod --subresource-integrity",
    "prebuild:prod": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' ts-node ./sitemap_generator.ts"
  }
}

所以,当我调用时npm run build:prod,我的 2 个命令被执行并且编译器生成的输出文件包含 SRI。

现在,我添加了 appShell :

npm run ng generate appShell -- --client-project my-project

要使用appShell运行构建,我必须使用以下命令:

npm run ng run my-project:app-shell:production

主要问题

但是这个命令调用文件my-project:build:production的配置angular.json,这不接受--subresource-integrity参数:/

如何修补此问题以使用SRI 构建 appShell 生产环境?

勇敢者的第二个问题

此 appShell 构建server/dist/. 它只包含一个main.js文件。我想它是在内部与 Node 一起使用来构建 appShell 的;有人可以确认吗?那么,我可以使用 Unversal 和这个架构来为搜索引擎做一些 SSR 吗?

谢谢 !

4

1 回答 1

4

好的,我通过编辑 angular.json 找到了一种方法:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "my-project",
  "projects": {
    "oce-training": {
      "architect": {
        "build": {
          "configurations": {
            "production": {
              "subresourceIntegrity": true,
            }
          }
        }
      }
    }
  }
}

因此,我们不能覆盖package.jsonCLI 命令或通过 CLI 命令覆盖,但这对我的情况来说已经足够了。

现在我有package.json

{
  "scripts": {
    "build:prod": "ng run oce-training:app-shell:production",
    "prebuild:prod": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' ts-node ./sitemap_generator.ts"
  },
}

我关于 SSR 的问题得到了维护,但它可能是另一个 Stackoverflow 帖子;)

于 2020-05-26T15:41:49.753 回答