fix(platform-browser-dynamic): ensure compiler is loaded before @angular/common
#60458
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note: CLI users were not affected by this. This is only for custom setups.
--
With the recent changes to the APF bundling rules, we turned on tree-shaking in rollup to support proper code splitting for FESM bundles.
This resulted in Rollup re-ordering imports in the FESM bundles of
@angular/platform-browser-dynamic
— highlighting that over the past years, this package "accidentally" resulted in the side-effects of the compiler registering itself globally.This continues to be the case, and our changes generally didn't cause any issues in CLI applications because the CLI explicitly wires up the compiler (as expected) before
-dynamic
is even loaded. For custom setup, like Analog, this order change surfaced a breakage because e.g.@angular/common
with its JIT decorators of e.g. directives/services are triggered before the compiler is actually loaded/made available.This commit fixes this. The explicit imports in practice are a noop because our FESM bundling doesn't recognize compiler as side-effects true; but marking the whole -dynamic package as having side-effects; prevents rollup from swapping the import order. Long-term, we should look into improving this by teaching
ng_package
that e.g. the compiler has side-effects; so that theimport @angular/compiler
statement is not dropped when constructing FESM bundles.