Как добавить дополнительный 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 запись.

0 ответов

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