The most recent Angular distributions have begun to use __decorate instead of Class.decorators. This prevents `ngcc` from recognizing the classes and then fails to perform the transform to ivy format. Example: ``` var ApplicationModule = /** @class */ (function () { // Inject ApplicationRef to make it eager... function ApplicationModule(appRef) { } ApplicationModule = __decorate([ NgModule({ providers: APPLICATION_MODULE_PROVIDERS }), __metadata("design:paramtypes", [ApplicationRef]) ], ApplicationModule); return ApplicationModule; }()); ``` Now `ngcc` recognizes `__decorate([...])` declarations and performs its transform. See FW-379 PR Close #26236
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:
bazel build //packages/compiler-cli/src/ngcc
Unit Testing
The unit tests are built and run using Bazel:
bazel test //packages/compiler-cli/src/ngcc/test
Integration Testing
There are tests that check the behaviour of the overall executable:
bazel test //packages/compiler-cli/test/ngcc