From fd57523a68398035f6bff1c68aafead861de47f2 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 27 Apr 2023 09:32:00 +0000 Subject: [PATCH] fix(@angular-devkit/build-angular): exclude `@angular/platform-server/init` from unsafe optimizations `@angular/platform-server/init` entry-point is side-effectful and thus it's not safe to perform advanced optimizations. --- .../build_angular/src/babel/webpack-loader.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts b/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts index a43c01b03f3d..ff9f27c111ca 100644 --- a/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts +++ b/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts @@ -154,12 +154,15 @@ export default custom(() => { } if (optimize) { - const angularPackage = /[\\/]node_modules[\\/]@angular[\\/]/.test(this.resourcePath); + // @angular/platform-server/init entry-point has side-effects. + const safeAngularPackage = + /[\\/]node_modules[\\/]@angular[\\/]/.test(this.resourcePath) && + !/@angular[\\/]platform-server[\\/]f?esm2022[\\/]init/.test(this.resourcePath); customOptions.optimize = { // Angular packages provide additional tested side effects guarantees and can use // otherwise unsafe optimizations. - looseEnums: angularPackage, - pureTopLevel: angularPackage, + looseEnums: safeAngularPackage, + pureTopLevel: safeAngularPackage, // JavaScript modules that are marked as side effect free are considered to have // no decorators that contain non-local effects. wrapDecorators: !!this._module?.factoryMeta?.sideEffectFree,