Как добавить целостность подресурсов с помощью сборки Angular appShell

Я создал приложение с 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 аргумент:/

Как исправить это, чтобы получить производственную сборку appShell с SRI?

ВТОРОЙ ВОПРОС для смельчаков

Эта сборка appShell создает server/ папка в dist/. Он просто содержитmain.jsфайл. Я полагаю, что он используется внутри Node для создания appShell; может кто-нибудь подтвердить это? Итак, могу ли я использовать Unversal с этой архитектурой, чтобы сделать SSR для поисковых систем?

Спасибо!

1 ответ

Решение

Хорошо, я нашел способ, отредактировав 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 сохраняется, но это может быть еще один пост в Stackru;)

Другие вопросы по тегам