diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts index 7353eea88e26..600ecf2f48f3 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts @@ -380,7 +380,8 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration { safari10: true, output: { ecma: terserEcma, - comments: false, + // default behavior (undefined value) is to keep only important comments (licenses, etc.) + comments: !buildOptions.extractLicenses && undefined, webkit: true, }, // On server, we don't want to compress anything. We still set the ngDevMode = false for it 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 2ce1a5691e41..61a723c93ba7 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 @@ -130,6 +130,7 @@ describe('Browser Builder bundle budgets', () => { it(`when 'bundle' budget`, async () => { const overrides = { optimization: true, + extractLicenses: true, budgets: [{ type: 'bundle', name: 'main', maximumError: '3Kb' }], }; diff --git a/tests/legacy-cli/e2e/tests/build/extract-licenses.ts b/tests/legacy-cli/e2e/tests/build/extract-licenses.ts index 73ec571dc25b..b809def92767 100644 --- a/tests/legacy-cli/e2e/tests/build/extract-licenses.ts +++ b/tests/legacy-cli/e2e/tests/build/extract-licenses.ts @@ -1,12 +1,19 @@ -import {join} from 'path'; -import {expectFileToExist} from '../../utils/fs'; -import {expectToFail} from '../../utils/utils'; -import {ng} from '../../utils/process'; +import { expectFileToExist, expectFileToMatch } from '../../utils/fs'; +import { ng } from '../../utils/process'; +import { expectToFail } from '../../utils/utils'; -export default function() { - // TODO(architect): Delete this test. It is now in devkit/build-angular. +export default async function() { + // Licenses should be left intact if extraction is disabled + await ng('build', '--prod', '--extract-licenses=false', '--output-hashing=none'); - return ng('build', '--prod', '--extract-licenses=false') - .then(() => expectFileToExist(join(process.cwd(), 'dist'))) - .then(() => expectToFail(() => expectFileToExist('dist/test-project/3rdpartylicenses.txt'))); + await expectToFail(() => expectFileToExist('dist/test-project/3rdpartylicenses.txt')); + await expectFileToMatch('dist/test-project/main-es2015.js', '@license'); + await expectFileToMatch('dist/test-project/main-es5.js', '@license'); + + // Licenses should be removed if extraction is enabled + await ng('build', '--prod', '--extract-licenses', '--output-hashing=none'); + + await expectFileToExist('dist/test-project/3rdpartylicenses.txt'); + await expectToFail(() => expectFileToMatch('dist/test-project/main-es2015.js', '@license')); + await expectToFail(() => expectFileToMatch('dist/test-project/main-es5.js', '@license')); }