如何使用 Angular appShell build 添加子资源完整性

How to add subresources integrity with Angular appShell build

我使用 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

主要问题

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

如何修补此问题以使用 SRI 构建 AppShell 生产版本?

第二个问题勇敢者

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

谢谢!

好的,我通过编辑 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.json 或通过 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 的问题得到保留,但它可能是另一个 Whosebug post ;)