diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap index 0e9e5f8a28..e02d474aa3 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap @@ -178,6 +178,26 @@ exports[`angular configuration for android 1`] = ` } ] }, + /* config.module.rule('angular-webpack-loader') */ + { + test: /\\\\.[cm]?[tj]sx?$/, + exclude: [ + /[/\\\\\\\\](?:core-js|@babel|tslib|web-animations-js|web-streams-polyfill)[/\\\\\\\\]/ + ], + use: [ + /* config.module.rule('angular-webpack-loader').use('webpack-loader') */ + { + loader: '@angular-devkit/build-angular/src/babel/webpack-loader', + options: { + scriptTarget: 99, + aot: true + } + } + ], + resolve: { + fullySpecified: false + } + }, /* config.module.rule('angular') */ { test: /(?:\\\\.ngfactory.js|\\\\.ngstyle\\\\.js|\\\\.ts)$/, @@ -559,6 +579,26 @@ exports[`angular configuration for ios 1`] = ` } ] }, + /* config.module.rule('angular-webpack-loader') */ + { + test: /\\\\.[cm]?[tj]sx?$/, + exclude: [ + /[/\\\\\\\\](?:core-js|@babel|tslib|web-animations-js|web-streams-polyfill)[/\\\\\\\\]/ + ], + use: [ + /* config.module.rule('angular-webpack-loader').use('webpack-loader') */ + { + loader: '@angular-devkit/build-angular/src/babel/webpack-loader', + options: { + scriptTarget: 99, + aot: true + } + } + ], + resolve: { + fullySpecified: false + } + }, /* config.module.rule('angular') */ { test: /(?:\\\\.ngfactory.js|\\\\.ngstyle\\\\.js|\\\\.ts)$/, diff --git a/packages/webpack5/src/configuration/angular.ts b/packages/webpack5/src/configuration/angular.ts index c507542440..629efdaaa9 100644 --- a/packages/webpack5/src/configuration/angular.ts +++ b/packages/webpack5/src/configuration/angular.ts @@ -1,5 +1,5 @@ +import { ScriptTarget } from 'typescript'; import { extname, resolve } from 'path'; -import { merge } from 'webpack-merge'; import Config from 'webpack-chain'; import { existsSync } from 'fs'; @@ -167,6 +167,23 @@ export default function (config: Config, env: IWebpackEnv = _env): Config { .use('angular-hot-loader') .loader('angular-hot-loader'); }); + // zone + async/await + config.module + .rule('angular-webpack-loader') + .test(/\.[cm]?[tj]sx?$/) + .exclude.add( + /[/\\](?:core-js|@babel|tslib|web-animations-js|web-streams-polyfill)[/\\]/ + ) + .end() + .resolve.set('fullySpecified', false) + .end() + .before('angular') + .use('webpack-loader') + .loader('@angular-devkit/build-angular/src/babel/webpack-loader') + .options({ + scriptTarget: ScriptTarget.ESNext, + aot: true, + }); } // look for platform specific polyfills first