A quirk of the Angular template parser is that when parsing templates in the "default" mode, with options specified by the user, the source mapping information in the template AST may be inaccurate. As a result, the compiler parses the template twice: once for "emit" and once to produce an AST with accurate sourcemaps for diagnostic production. Previously, only the first parse was performed during analysis. The second parse occurred during the template type-checking phase, just in time to produce the template type-checking file. However, with the reuse of analysis results during incremental builds, it makes more sense to do the diagnostic parse eagerly during analysis so that the work isn't unnecessarily repeated in subsequent builds. This commit refactors the `ComponentDecoratorHandler` to do both parses eagerly, which actually cleans up some complexity around template parsing as well. PR Close #34334
Angular Compatibility Compiler (ngcc)
This compiler will convert node_modules
compiled with ngc
, into node_modules
which
appear to have been compiled with ngtsc
.
This conversion will allow such "legacy" packages to be used by the Ivy rendering engine.
Building
The project is built using Bazel:
yarn bazel build //packages/compiler-cli/ngcc
Unit Testing
The unit tests are built and run using Bazel:
yarn bazel test //packages/compiler-cli/ngcc/test
Integration Testing
There are tests that check the behavior of the overall executable:
yarn bazel test //packages/compiler-cli/ngcc/test:integration