mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
eaf5b5856d
The options for `flatModuleId` and `flatModuleOutFile` had been removed in the CLI from generated libraries with https://github.com/angular/angular-cli/commit/718ee15b9a1d7b9d7ad520f25c67b8659059a33a. This has been done because `ng-packagr` (which is used to build the libraries) automatically set these options in-memory when it compiles the library. No migration has been created for this because there was no actual need to get rid of this. Keeping the options in the library `tsconfig` does not cause any problems unless the `tsconfig` is used outside of `ng-packagr`. This was not anticipated, but is now commonly done in `ng update` migrations. The `ng update` migrations try to create an instance of the `AngularCompilerProgram` by simply parsing the `tsconfig`. The migrations make the valid assumption that `tsconfig` files are not incomplete/invalid. They _definitely_ are in the file system though. It just works for libraries because `ng-packagr` in-memory completes the invalid `tsconfig` files, so that they can be passed to the `@angular/compiler-cli`. We can't have this logic in the `ng update` migrations because it's out-of-scope for individual migrations to distinguish between libraries and applications. Also it would be out-of-scope to parse the `ng-packagr` configuration and handle the tsconfig in-memory completion. As a workaround though, we can remove the flat-module bundle options in-memory when creating the compiler program. This is acceptable since we don't emit the program and the flat module bundles are not needed. Fixes #34985. PR Close #35824