Как добавить целостность подресурсов с помощью сборки 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;)