From 08c317d1630bd81aaafc3552f753324d7751e39d Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 9 Jul 2021 19:46:52 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): `extractLicenses` didn't have an effect when using server builder (cherry picked from commit 9a04975a2170c3ecc2c09c32bd15a89c613e198f) --- .../tests/options/extract-licenses_spec.ts | 46 +++++++++++++++++++ .../server/tests/options/source-map_spec.ts | 2 +- .../src/webpack/configs/browser.ts | 15 ------ .../src/webpack/configs/common.ts | 15 ++++++ 4 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/server/tests/options/extract-licenses_spec.ts diff --git a/packages/angular_devkit/build_angular/src/server/tests/options/extract-licenses_spec.ts b/packages/angular_devkit/build_angular/src/server/tests/options/extract-licenses_spec.ts new file mode 100644 index 000000000000..a6d9705f62c4 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/server/tests/options/extract-licenses_spec.ts @@ -0,0 +1,46 @@ +/** + * @license + * Copyright Google LLC 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 { execute } from '../../index'; +import { BASE_OPTIONS, SERVER_BUILDER_INFO, describeBuilder } from '../setup'; + +describeBuilder(execute, SERVER_BUILDER_INFO, (harness) => { + describe('Option: "extractLicenses"', () => { + it(`should generate '3rdpartylicenses.txt' when 'extractLicenses' is true`, async () => { + harness.useTarget('server', { + ...BASE_OPTIONS, + extractLicenses: true, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + harness.expectFile('dist/3rdpartylicenses.txt').content.toContain('MIT'); + }); + + it(`should not generate '3rdpartylicenses.txt' when 'extractLicenses' is false`, async () => { + harness.useTarget('server', { + ...BASE_OPTIONS, + extractLicenses: false, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + harness.expectFile('dist/3rdpartylicenses.txt').toNotExist(); + }); + + it(`should generate '3rdpartylicenses.txt' when 'extractLicenses' is not set`, async () => { + harness.useTarget('server', { + ...BASE_OPTIONS, + }); + + const { result } = await harness.executeOnce(); + expect(result?.success).toBe(true); + harness.expectFile('dist/3rdpartylicenses.txt').content.toContain('MIT'); + }); + }); +}); diff --git a/packages/angular_devkit/build_angular/src/server/tests/options/source-map_spec.ts b/packages/angular_devkit/build_angular/src/server/tests/options/source-map_spec.ts index 28e3f39c16c5..4e0a38dd0b4d 100644 --- a/packages/angular_devkit/build_angular/src/server/tests/options/source-map_spec.ts +++ b/packages/angular_devkit/build_angular/src/server/tests/options/source-map_spec.ts @@ -133,7 +133,7 @@ describeBuilder(execute, SERVER_BUILDER_INFO, (harness) => { harness.expectFile('dist/main.js').content.not.toContain('sourceMappingURL=main.js.map'); }); - it(`should not generate scripts sourceMaps when "scripts" option is true`, async () => { + it(`should generate scripts sourceMaps when "scripts" option is true`, async () => { harness.useTarget('server', { ...BASE_OPTIONS, sourceMap: { diff --git a/packages/angular_devkit/build_angular/src/webpack/configs/browser.ts b/packages/angular_devkit/build_angular/src/webpack/configs/browser.ts index 051bb46951f8..5aead14128fe 100644 --- a/packages/angular_devkit/build_angular/src/webpack/configs/browser.ts +++ b/packages/angular_devkit/build_angular/src/webpack/configs/browser.ts @@ -41,21 +41,6 @@ export function getBrowserConfig(wco: WebpackConfigOptions): webpack.Configurati ); } - if (extractLicenses) { - const LicenseWebpackPlugin = require('license-webpack-plugin').LicenseWebpackPlugin; - extraPlugins.push( - new LicenseWebpackPlugin({ - stats: { - warnings: false, - errors: false, - }, - perChunkOutput: false, - outputFilename: '3rdpartylicenses.txt', - skipChildCompilers: true, - }), - ); - } - if (scriptsSourceMap || stylesSourceMap) { extraPlugins.push( getSourceMapDevTool( diff --git a/packages/angular_devkit/build_angular/src/webpack/configs/common.ts b/packages/angular_devkit/build_angular/src/webpack/configs/common.ts index 31c5a20f6471..0a6572d7e90d 100644 --- a/packages/angular_devkit/build_angular/src/webpack/configs/common.ts +++ b/packages/angular_devkit/build_angular/src/webpack/configs/common.ts @@ -263,6 +263,21 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration { ); } + if (buildOptions.extractLicenses) { + const LicenseWebpackPlugin = require('license-webpack-plugin').LicenseWebpackPlugin; + extraPlugins.push( + new LicenseWebpackPlugin({ + stats: { + warnings: false, + errors: false, + }, + perChunkOutput: false, + outputFilename: '3rdpartylicenses.txt', + skipChildCompilers: true, + }), + ); + } + if (buildOptions.statsJson) { extraPlugins.push( new (class {