AngularCompiler marks not related files as affected in incremental build
- Ngôn ngữ chính
- TypeScript
- Star
- 27k
- Fork
- 11.8k
- Merge trung bình
- 14 giờ 23 phút
- Pull request đã merge (30 ngày)
- 162
Mô tả
### Which @angular/* package(s) are the source of the bug?
compiler-cli
### Is this a regression?
No
### Description
Any change in main.ts/m1.ts/m2.ts eg changing `console.log(1)` to `console.log(2)` will cause `src/lib/types.ts` to be included in affectedFiles (checked here https://github.com/angular/angular-cli/blob/master/packages/ngtools/webpack/src/ivy/plugin.ts#L569)
Looks like type only file is not included in ignoreForEmit Set nor included in emitted files so IncrementalCompilation can't find it previously emitted files and marks it as affected every time
### Please provide a link to a minimal reproduction of the bug
https://github.com/SebastianPodgajny/ng42543/tree/affected-type-repro
### Please provide the exception or error you saw
_No response_
### Please provide the environment you discovered this bug in
```true
Angular CLI: 12.2.1
Node: 14.16.1
Package Manager: yarn 1.21.1
OS: darwin x64
Angular: 12.2.1
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1202.1
@angular-devkit/build-angular 12.2.1
@angular-devkit/core 12.2.1
@angular-devkit/schematics 12.2.1
@schematics/angular 12.2.1
rxjs 6.6.7
typescript 4.3.5
```
### Anything else?
This is followup to this issue https://github.com/angular/angular/issues/42543 which was partially resolved by JoostK PR https://github.com/angular/angular/pull/42759
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với bản tái hiện tối thiểu trên branch affected-type-repro và kiểm tra packages/ngtools/webpack/src/ivy/plugin.ts quanh dòng 569, sau đó theo dõi cách quá trình biên dịch tăng dần của compiler-cli xác định affectedFiles cho main.ts, m1.ts, m2.ts và src/lib/types.ts. Hoàn thành khi việc thay đổi console.log(1) thành console.log(2) không còn bao gồm types.ts trong affectedFiles.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- angular, typescript
- Lĩnh vực
- build-system
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100