feat(compiler-cli): no longer re-export external symbols by default (#28633)
With #28594 we refactored the `@angular/compiler` slightly to allow opting out from external symbol re-exports which are enabled by default. Since symbol re-exports only benefit projects which have a very strict dependency enforcement, external symbols should not be re-exported by default as this could grow the size of factory files and cause unexpected behavior with Angular's AOT symbol resolving (e.g. see: #25644). Note that the common strict dependency enforcement for source files does still work with external symbol re-exports disabled, but there are also strict dependency checks that enforce strict module dependencies also for _generated files_ (such as the ngfactory files). This is how Google3 manages it's dependencies and therefore external symbol re-exports need to be enabled within Google3. Also "ngtsc" also does not provide any way of using external symbol re-exports, so this means that with this change, NGC can partially match the behavior of "ngtsc" then (unless explicitly opted-out). As mentioned before, internally at Google symbol re-exports need to be still enabled, so the `ng_module` Bazel rule will enable the symbol re-exports by default when running within Blaze. Fixes #25644. PR Close #28633
This commit is contained in:

committed by
Miško Hevery

parent
fc8f4f8029
commit
91b7152852
@ -245,6 +245,13 @@ def _ngc_tsconfig(ctx, files, srcs, **kwargs):
|
||||
"enableSummariesForJit": is_legacy_ngc,
|
||||
"enableIvy": _enable_ivy_value(ctx),
|
||||
"fullTemplateTypeCheck": ctx.attr.type_check,
|
||||
# In Google3 we still want to use the symbol factory re-exports in order to
|
||||
# not break existing apps inside Google. Unlike Bazel, Google3 does not only
|
||||
# enforce strict dependencies of source files, but also for generated files
|
||||
# (such as the factory files). Therefore in order to avoid that generated files
|
||||
# introduce new module dependencies (which aren't explicitly declared), we need
|
||||
# to enable external symbol re-exports by default when running with Blaze.
|
||||
"createExternalSymbolFactoryReexports": (not _is_bazel()),
|
||||
# FIXME: wrong place to de-dupe
|
||||
"expectedOut": depset([o.path for o in expected_outs]).to_list(),
|
||||
}
|
||||
|
Reference in New Issue
Block a user