From 5f13d06cb360bcd895971008556e2b049d5c96ee Mon Sep 17 00:00:00 2001 From: Alan Agius <alan.agius@betssongroup.com> Date: Mon, 8 Apr 2019 11:42:18 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): ignore bundle budgets when running karma or devserver Fixes #14100 --- .../build_angular/src/dev-server/index.ts | 3 ++ .../build_angular/src/karma/index.ts | 7 ++-- .../test/dev-server/budgets_spec_large.ts | 35 +++++++++++++++++++ .../test/dev-server/proxy_spec_large.ts | 1 - 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 packages/angular_devkit/build_angular/test/dev-server/budgets_spec_large.ts diff --git a/packages/angular_devkit/build_angular/src/dev-server/index.ts b/packages/angular_devkit/build_angular/src/dev-server/index.ts index d5e4132f1872..83809682b2e4 100644 --- a/packages/angular_devkit/build_angular/src/dev-server/index.ts +++ b/packages/angular_devkit/build_angular/src/dev-server/index.ts @@ -106,6 +106,9 @@ export function serveWebpackBrowser( [key]: options[key], }), {}); + // In dev server we should not have budgets because of extra libs such as socks-js + overrides.budgets = undefined; + const browserName = await context.getBuilderNameForTarget(browserTarget); const browserOptions = await context.validateOptions<json.JsonObject & BrowserBuilderSchema>( { ...rawBrowserOptions, ...overrides }, diff --git a/packages/angular_devkit/build_angular/src/karma/index.ts b/packages/angular_devkit/build_angular/src/karma/index.ts index 0ef51c86acc5..3f55d93e25f5 100644 --- a/packages/angular_devkit/build_angular/src/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/karma/index.ts @@ -36,9 +36,10 @@ async function initialize( // tslint:disable-next-line:no-implicit-dependencies ): Promise<[typeof import ('karma'), webpack.Configuration]> { const { config } = await generateBrowserWebpackConfigFromContext( - // only one property is missing: - // * `index` which is not used for tests - { ...options as unknown as BrowserBuilderOptions, outputPath: '' }, + // only two properties are missing: + // * `outputPath` which is fixed for tests + // * `budgets` which might be incorrect due to extra dev libs + { ...options as unknown as BrowserBuilderOptions, outputPath: '', budgets: undefined }, context, wco => [ getCommonConfig(wco), diff --git a/packages/angular_devkit/build_angular/test/dev-server/budgets_spec_large.ts b/packages/angular_devkit/build_angular/test/dev-server/budgets_spec_large.ts new file mode 100644 index 000000000000..154912995861 --- /dev/null +++ b/packages/angular_devkit/build_angular/test/dev-server/budgets_spec_large.ts @@ -0,0 +1,35 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import { normalize, virtualFs } from '@angular-devkit/core'; +import { createArchitect, host } from '../utils'; + +describe('Dev Server Builder bundle budgets', () => { + const targetSpec = { project: 'app', target: 'serve' }; + + beforeEach(async () => host.initialize().toPromise()); + afterEach(async () => host.restore().toPromise()); + + it('should ignore budgets', async () => { + const config = host.scopedSync().read(normalize('angular.json')); + const jsonConfig = JSON.parse(virtualFs.fileBufferToString(config)); + const buildOptions = jsonConfig.projects.app.targets.build.options; + + buildOptions.budgets = [{ type: 'all', maximumError: '100b' }], + buildOptions.optimization = true; + + host.writeMultipleFiles({ + 'angular.json': JSON.stringify(jsonConfig), + }); + + const architect = (await createArchitect(host.root())).architect; + const run = await architect.scheduleTarget(targetSpec); + const output = await run.result; + expect(output.success).toBe(true); + await run.stop(); + }); +}); diff --git a/packages/angular_devkit/build_angular/test/dev-server/proxy_spec_large.ts b/packages/angular_devkit/build_angular/test/dev-server/proxy_spec_large.ts index 113e255a0049..7ac09c879aa6 100644 --- a/packages/angular_devkit/build_angular/test/dev-server/proxy_spec_large.ts +++ b/packages/angular_devkit/build_angular/test/dev-server/proxy_spec_large.ts @@ -63,7 +63,6 @@ describe('Dev Server Builder proxy', () => { }, 30000); it('errors out with a missing proxy file', async () => { - const overrides: Partial<DevServerBuilderOptions> = { proxyConfig: '../proxy.config.json' }; const run = await architect.scheduleTarget(target, { proxyConfig: 'INVALID.json' }); runs.push(run);