Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf(@angular-devkit/build-angular): use esbuild/terser combination to optimize global scripts #21546

Merged
merged 1 commit into from
Aug 11, 2021

Conversation

clydin
Copy link
Member

@clydin clydin commented Aug 10, 2021

esbuild and terser are now used to optimize global scripts in addition to the previous performance enhancement of optimizing application bundles. This change removes the need for the terser-webpack-plugin as a direct dependency and provides further production build time improvements for applications which use global scripts (scripts option in the angular.json file).
Since esbuild does not support optimizing a script with ES2015+ syntax when targetting ES5, the JavaScript optimizer will fallback to only using terser in the event that such a situation occurs. This will only happen if ES5 is the output target for an application and a global script contains ES2015+ syntax. In that case, the global script is technically already invalid for the target environment and may fail at runtime but this is and has been considered a configuration issue. Global scripts must be compatible with the target environment/browsers.

Extension of #21163

@clydin clydin added the target: major This PR is targeted for the next major release label Aug 10, 2021
@google-cla google-cla bot added the cla: yes label Aug 10, 2021
…o optimize global scripts

`esbuild` and `terser` are now used to optimize global scripts in addition to the previous performance enhancement of optimizing application bundles. This change removes the need for the `terser-webpack-plugin` as a direct dependency and provides further production build time improvements for applications which use global scripts (`scripts` option in the `angular.json` file).
Since `esbuild` does not support optimizing a script with ES2015+ syntax when targetting ES5, the JavaScript optimizer will fallback to only using terser in the event that such a situation occurs. This will only happen if ES5 is the output target for an application and a global script contains ES2015+ syntax. In that case, the global script is technically already invalid for the target environment and may fail at runtime but this is and has been considered a configuration issue. Global scripts must be compatible with the target environment/browsers.
@alan-agius4 alan-agius4 added the action: merge The PR is ready for merge by the caretaker label Aug 11, 2021
@alan-agius4 alan-agius4 merged commit 8e82263 into angular:master Aug 11, 2021
@clydin clydin deleted the esbuild-minifier-3 branch August 11, 2021 10:06
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 11, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker target: major This PR is targeted for the next major release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants