diff --git a/packages/service-worker/config/src/generator.ts b/packages/service-worker/config/src/generator.ts index 1445496962..18c70ee273 100644 --- a/packages/service-worker/config/src/generator.ts +++ b/packages/service-worker/config/src/generator.ts @@ -45,6 +45,12 @@ export class Generator { Promise { const seenMap = new Set(); return Promise.all((config.assetGroups || []).map(async(group) => { + if ((group.resources as any).versionedFiles) { + throw new Error( + `Asset-group '${group.name}' in 'ngsw-config.json' uses the 'versionedFiles' option, ` + + 'which is no longer supported. Use \'files\' instead.'); + } + const fileMatcher = globListToMatcher(group.resources.files || []); const allFiles = await this.fs.list('/'); diff --git a/packages/service-worker/config/test/generator_spec.ts b/packages/service-worker/config/test/generator_spec.ts index 546be3a4ae..38b608c502 100644 --- a/packages/service-worker/config/test/generator_spec.ts +++ b/packages/service-worker/config/test/generator_spec.ts @@ -7,6 +7,7 @@ */ import {Generator} from '../src/generator'; +import {AssetGroup} from '../src/in'; import {MockFilesystem} from '../testing/mock'; describe('Generator', () => { @@ -149,4 +150,35 @@ describe('Generator', () => { hashTable: {}, }); }); + + it('throws if the obsolete `versionedFiles` is used', async() => { + const fs = new MockFilesystem({ + '/index.html': 'This is a test', + '/main.js': 'This is a JS file', + }); + const gen = new Generator(fs, '/test'); + + try { + await gen.process({ + index: '/index.html', + assetGroups: [{ + name: 'test', + resources: { + files: [ + '/*.html', + ], + versionedFiles: [ + '/*.js', + ], + } as AssetGroup['resources'] & + {versionedFiles: string[]}, + }], + }); + throw new Error('Processing should have failed due to \'versionedFiles\'.'); + } catch (err) { + expect(err).toEqual(new Error( + 'Asset-group \'test\' in \'ngsw-config.json\' uses the \'versionedFiles\' option, ' + + 'which is no longer supported. Use \'files\' instead.')); + } + }); });