From f309516bcdcee711fc5693b5f14d6fef1cfa5dba Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 11 Feb 2021 19:51:53 +0100 Subject: [PATCH] refactor(@angular-devkit/build-angular): drop support for zone.js 0.10 BREAKING CHANGE: Minimum supported `zone.js` version is `0.11.4` --- .../angular_cli/src/environments/environment.ts | 2 +- integration/angular_cli/src/polyfills.ts | 2 +- integration/angular_cli/src/test.ts | 2 +- .../browser/specs/differential_loading_spec.ts | 6 ++---- .../src/utils/webpack-browser-config.ts | 17 ----------------- .../build_angular/src/webpack/configs/common.ts | 5 +---- .../build_angular/src/webpack/es5-polyfills.js | 5 ++++- .../test/hello-world-app/src/polyfills.ts | 2 +- .../test/hello-world-app/src/test.ts | 2 +- .../hello-world-lib/projects/lib/src/test.ts | 4 ++-- 10 files changed, 14 insertions(+), 33 deletions(-) diff --git a/integration/angular_cli/src/environments/environment.ts b/integration/angular_cli/src/environments/environment.ts index 7b4f817adb..30d7bccb19 100644 --- a/integration/angular_cli/src/environments/environment.ts +++ b/integration/angular_cli/src/environments/environment.ts @@ -13,4 +13,4 @@ export const environment = { * This import should be commented out in production mode because it will have a negative impact * on performance if an error is thrown. */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/integration/angular_cli/src/polyfills.ts b/integration/angular_cli/src/polyfills.ts index 03711e5d92..67581db775 100644 --- a/integration/angular_cli/src/polyfills.ts +++ b/integration/angular_cli/src/polyfills.ts @@ -55,7 +55,7 @@ /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ -import 'zone.js/dist/zone'; // Included with Angular CLI. +import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** diff --git a/integration/angular_cli/src/test.ts b/integration/angular_cli/src/test.ts index 50193eb0f2..2042356408 100644 --- a/integration/angular_cli/src/test.ts +++ b/integration/angular_cli/src/test.ts @@ -1,6 +1,6 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/zone-testing'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts index 1d66ab1263..a597ba08bf 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts @@ -184,11 +184,9 @@ describe('Browser Builder with differential loading', () => { it('uses the right zone.js variant', async () => { const { files } = await browserBuild(architect, host, target, { optimization: false }); - expect(await files['polyfills-es5.js']).toContain('zone.js/dist/zone-legacy'); + expect(await files['polyfills-es5.js']).toContain('zone.js/plugins/zone-legacy'); expect(await files['polyfills-es5.js']).toContain('registerElementPatch'); - expect(await files['polyfills-es5.js']).toContain('zone.js/dist/zone-evergreen'); - expect(await files['polyfills-es2015.js']).toContain('zone.js/dist/zone-evergreen'); - expect(await files['polyfills-es2015.js']).not.toContain('zone.js/dist/zone-legacy'); + expect(await files['polyfills-es2015.js']).not.toContain('zone.js/plugins/zone-legacy'); expect(await files['polyfills-es2015.js']).not.toContain('registerElementPatch'); }); diff --git a/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts b/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts index 656582b45f..da0c8fc9ff 100644 --- a/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts +++ b/packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts @@ -68,23 +68,6 @@ export async function generateWebpackConfig( const webpackConfig = webpackMerge(webpackPartialGenerator(wco)); - if (supportES2015) { - if (!webpackConfig.resolve) { - webpackConfig.resolve = {}; - } - if (Array.isArray(webpackConfig.resolve.alias)) { - webpackConfig.resolve.alias.push({ - alias: 'zone.js/dist/zone', - name: 'zone.js/dist/zone-evergreen', - }); - } else { - if (!webpackConfig.resolve.alias) { - webpackConfig.resolve.alias = {}; - } - webpackConfig.resolve.alias['zone.js/dist/zone'] = 'zone.js/dist/zone-evergreen'; - } - } - if (profilingEnabled) { const esVersionInFileName = getEsVersionForFileName( tsConfig.options.target, 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 8f48d510b9..77a033ac2a 100644 --- a/packages/angular_devkit/build_angular/src/webpack/configs/common.ts +++ b/packages/angular_devkit/build_angular/src/webpack/configs/common.ts @@ -91,11 +91,8 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration { if (buildBrowserFeatures.isEs5SupportNeeded()) { const polyfillsChunkName = 'polyfills-es5'; entryPoints[polyfillsChunkName] = [path.join(__dirname, '..', 'es5-polyfills.js')]; - if (differentialLoadingMode) { - // Add zone.js legacy support to the es5 polyfills - // This is a noop execution-wise if zone-evergreen is not used. - entryPoints[polyfillsChunkName].push('zone.js/dist/zone-legacy'); + if (differentialLoadingMode) { // Since the chunkFileName option schema does not allow the function overload, add a plugin // that changes the name of the ES5 polyfills chunk to not include ES2015. extraPlugins.push({ diff --git a/packages/angular_devkit/build_angular/src/webpack/es5-polyfills.js b/packages/angular_devkit/build_angular/src/webpack/es5-polyfills.js index 284aa8b62e..caa670e626 100644 --- a/packages/angular_devkit/build_angular/src/webpack/es5-polyfills.js +++ b/packages/angular_devkit/build_angular/src/webpack/es5-polyfills.js @@ -111,4 +111,7 @@ import 'core-js/modules/web.dom-collections.iterator'; import 'core-js/modules/es.promise'; import 'core-js/modules/es.json.to-string-tag'; -import 'regenerator-runtime/runtime'; \ No newline at end of file +import 'regenerator-runtime/runtime'; + +// Zone.js +import 'zone.js/plugins/zone-legacy'; \ No newline at end of file diff --git a/packages/angular_devkit/build_angular/test/hello-world-app/src/polyfills.ts b/packages/angular_devkit/build_angular/test/hello-world-app/src/polyfills.ts index 397e95e012..345f7b9d80 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-app/src/polyfills.ts +++ b/packages/angular_devkit/build_angular/test/hello-world-app/src/polyfills.ts @@ -65,7 +65,7 @@ import '@angular/localize/init'; /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ -import 'zone.js/dist/zone'; // Included with Angular CLI. +import 'zone.js'; // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS diff --git a/packages/angular_devkit/build_angular/test/hello-world-app/src/test.ts b/packages/angular_devkit/build_angular/test/hello-world-app/src/test.ts index 9d5dd81e68..6355082bbf 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-app/src/test.ts +++ b/packages/angular_devkit/build_angular/test/hello-world-app/src/test.ts @@ -7,7 +7,7 @@ */ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/zone-testing'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/src/test.ts b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/src/test.ts index 92e85eee48..798ae95022 100644 --- a/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/src/test.ts +++ b/packages/angular_devkit/build_angular/test/hello-world-lib/projects/lib/src/test.ts @@ -7,8 +7,8 @@ */ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; +import 'zone.js'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule,