angular / angular/angular-cli

CLI doesn't allow custom builder to pass additional extensions when building app for i18n extractions

Đang mở
#27,264 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
area: @angular-devkit/build-angular devkit/build-angular:i18n freq1: low severity3: broken type: bug/fix
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ả

### Command

extract-i18n

### Description

We're in the process of migrating from webpack to esbuild.
To provide custom esbuild plugins we decided to use custom builder (https://github.com/just-jeb/angular-builders).

It went smooth until we realised that `extract-i18` no longer works. It ends successfully but `messages.xlf` is empty.

It turned out that angular checks `builderName` to choose which bundler to use.

To fix that I decided to implement custom `extract-i18n` builder that will trick `angular/cli` and force using esbuild -
https://github.com/just-jeb/angular-builders/pull/1711

For the record `nrwl/nx` did the same - https://github.com/nrwl/nx/pull/21802

**The issue** is that `angular/cli` will not let us pass any extensions during i18n application compilation.

https://github.com/angular/angular-cli/blob/1034bb155b58a5f18eecf56409a3ff99d2ca4474/packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts#L59

It may lead to inconsistency between build and extract flow, which I suppose may lead to issues with i18n.

### Describe the solution you'd like

We should be able to pass custom extensions as for regular app building.

(bonus) would be really nice if these `if (builderName === ...` are replaced by something that is custom builder friendly 🙏

### Describe alternatives you've considered

Alternatively we could rewrite whole `extract-i18n` builder, but as 95% of the code would be the same - it seems pointless

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start in packages/angular_devkit/build_angular/src/builders/extract-i18n/application-extraction.ts at the linked line and compare how regular application builds receive extensions. Verify that extract-i18n passes custom builder extensions during application compilation and that messages.xlf contains the extracted messages rather than being empty.

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, cli, internationalization
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.