Как добавить дополнительный HTML в index.html во время производственной сборки Angular до того, как будет вычислен его хеш для ngsw.json?
Мне нужно вставить этот тег в место в скомпилированном index.html
после запуска ng build --prod
,
<script>const VERSION = '1.0.0-{someCompileTimeValue}';</script>
Обычно после сборки я бы использовал gulp-inject
внедрить этот тег (включая другие вещи, такие как Google Analytics, Favicons).
Однако с момента принятия ng add @angular/pwa
тихо жалуется на SwCriticalError: Hash mismatch
потому что после перемешивания index.html
он больше не соответствует хешу в ngsw.json
,
Как следствие, ни одно событие никогда не генерируется .available
:
constructor(private updates: SwUpdate){
interval(5000).pipe(exhaustMap(() => this.updates.checkForUpdate())).subscribe();
this.updates.available.subscribe(event => console.log('available!'));
}
Я пытался бежать ./node_modules/.bin/ngsw-config dist/ ngsw-config.json
вручную, хотя он обновляет index.html
хэш в ngsw.json
, Это добавляет новые хэши и ссылки для ngsw-worker.js
, safety-worker.js
а также worker-basic.min.js
из которых я чувствую, не предназначен быть там.
Если нет "канонического" решения, я бы, вероятно, (используя gulp
) хэш index.html
и назначить его ngsw.json
запись.