angular / angular/angular-cli

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

Ouverte
#27,264 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area: @angular-devkit/build-angular devkit/build-angular:i18n freq1: low severity3: broken type: bug/fix
Langage dominant
TypeScript
Étoiles
27k
Forks
11.8k
Merge moyen
14 h 23 min
PR mergées (30 j)
162

Description

### 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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
angular, typescript
Domaine
build-system, cli, internationalization
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.