Previously, `ngcc` would avoid processing a `formatPath` that a property in `package.json` mapped to, if either the _property_ was marked as processed or the `formatPath` (i.e. the file(s)) was processed in the same `ngcc` run (since the `compiledFormats` set was not persisted across runs). This could lead in a situation where a `formatPath` would be compiled twice (if for example properties `a` and `b` both mapped to the same `formatPath` and one would run `ngcc` for property `a` and then `b`). This commit fixes it by ensuring that as soon as a `formatPath` has been processed all corresponding properties are marked as processed (which persists across `ngcc` runs). PR Close #32003
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