Как добавить целостность подресурсов с помощью сборки Angular appShell - PullRequest
0 голосов
/ 26 мая 2020

Я создал приложение с 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 Ответ

0 голосов
/ 26 мая 2020

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

...