From 1730c79b99e1744350f05585f20ab3a4fc220c55 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Tue, 28 Aug 2018 03:12:04 +0200 Subject: [PATCH] =?UTF-8?q?fix(@angular-devkit/build-angular):=20exclude?= =?UTF-8?q?=20`.map`=20files=20from=20budget=20=E2=80=A6=20(#12012)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(@angular-devkit/build-angular): exclude `.map` files from budget calculations Closes #11999 --- .../utilities/bundle-calculator.ts | 7 ++-- .../test/browser/bundle-budgets_spec_large.ts | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/bundle-calculator.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/bundle-calculator.ts index 810899e0d8..a396b2f380 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/bundle-calculator.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/bundle-calculator.ts @@ -64,6 +64,7 @@ class InitialCalculator extends Calculator { const initialChunks = this.compilation.chunks.filter(chunk => chunk.isOnlyInitial()); const size: number = initialChunks .reduce((files, chunk) => [...files, ...chunk.files], []) + .filter((file: string) => !file.endsWith('.map')) .map((file: string) => this.compilation.assets[file].size()) .reduce((total: number, size: number) => total + size, 0); return [{size, label: 'initial'}]; @@ -76,7 +77,7 @@ class InitialCalculator extends Calculator { class AllScriptCalculator extends Calculator { calculate() { const size: number = Object.keys(this.compilation.assets) - .filter(key => /\.js$/.test(key)) + .filter(key => key.endsWith('.js')) .map(key => this.compilation.assets[key]) .map(asset => asset.size()) .reduce((total: number, size: number) => total + size, 0); @@ -90,6 +91,7 @@ class AllScriptCalculator extends Calculator { class AllCalculator extends Calculator { calculate() { const size: number = Object.keys(this.compilation.assets) + .filter(key => !key.endsWith('.map')) .map(key => this.compilation.assets[key].size()) .reduce((total: number, size: number) => total + size, 0); return [{size, label: 'total'}]; @@ -102,7 +104,7 @@ class AllCalculator extends Calculator { class AnyScriptCalculator extends Calculator { calculate() { return Object.keys(this.compilation.assets) - .filter(key => /\.js$/.test(key)) + .filter(key => key.endsWith('.js')) .map(key => { const asset = this.compilation.assets[key]; return { @@ -119,6 +121,7 @@ class AnyScriptCalculator extends Calculator { class AnyCalculator extends Calculator { calculate() { return Object.keys(this.compilation.assets) + .filter(key => !key.endsWith('.map')) .map(key => { const asset = this.compilation.assets[key]; return { diff --git a/packages/angular_devkit/build_angular/test/browser/bundle-budgets_spec_large.ts b/packages/angular_devkit/build_angular/test/browser/bundle-budgets_spec_large.ts index 918e691ba7..56eb019a5e 100644 --- a/packages/angular_devkit/build_angular/test/browser/bundle-budgets_spec_large.ts +++ b/packages/angular_devkit/build_angular/test/browser/bundle-budgets_spec_large.ts @@ -54,4 +54,39 @@ describe('Browser Builder bundle budgets', () => { tap(() => expect(logger.includes('WARNING')).toBe(true)), ).toPromise().then(done, done.fail); }); + + describe(`should ignore '.map' files`, () => { + it(`when 'intial' budget`, (done) => { + const overrides = { + optimization: true, + budgets: [{ type: 'initial', maximumError: '1mb' }], + }; + + runTargetSpec(host, browserTargetSpec, overrides, DefaultTimeout * 2).pipe( + tap((buildEvent) => expect(buildEvent.success).toBe(true)), + ).toPromise().then(done, done.fail); + }); + + it(`when 'all' budget`, (done) => { + const overrides = { + optimization: true, + budgets: [{ type: 'all', maximumError: '1mb' }], + }; + + runTargetSpec(host, browserTargetSpec, overrides, DefaultTimeout * 2).pipe( + tap((buildEvent) => expect(buildEvent.success).toBe(true)), + ).toPromise().then(done, done.fail); + }); + + it(`when 'any' budget`, (done) => { + const overrides = { + optimization: true, + budgets: [{ type: 'any', maximumError: '1mb' }], + }; + + runTargetSpec(host, browserTargetSpec, overrides, DefaultTimeout * 2).pipe( + tap((buildEvent) => expect(buildEvent.success).toBe(true)), + ).toPromise().then(done, done.fail); + }); + }); });