CLI doesn't allow custom builder to pass additional extensions when building app for i18n extractions
- Lingua principale
- TypeScript
- Stelle
- 27k
- Fork
- 11.8k
- Merge medio
- 14h 23m
- PR unite (30g)
- 162
Descrizione
### 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
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- angular, typescript
- Ambito
- build-system, cli, internationalization
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 35/100