angular / angular/angular-cli

`deploy-url` is not prepended to imported file url when using `file` loader in `esbuild`

Ouverte
#32,789 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
angular/build:application area: @angular/build freq1: low gemini-triaged 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

build

### Is this a regression?

- [x] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

any webpack-based build

### Description

When using Angular v21 with the new `esbuild` builder, and using a `file` loader configured for certain file types (like SVG) the `--deploy-url` argument passed into the `build` command does not get prepended to the URL returned when importing a file of the said type, and there is no way to configure it to do so.

This was properly working previously with `webpack`, when loading of the SVG assets was configured with a rule like this:
```
{
test: /\.svg$/,
type: 'asset/resource',
generator: {
filename: '[name][hash][ext]',
},
}
```
Looks like with `esbuild` there is no way to achieve the same result, apart from manually adding `deploy-url` to imported URLs in runtime.

### Minimal Reproduction

1. Use `esbuild` application builder
2. Configure angular.json to use `file` loader to import a certain file type:
```
"loader": {
".svg": "file"
},
```
3. Build application using `ng build --deploy-url=/my-deploy-url/`
4. Import some SVG file in the app:
```
import mySvgUrl from './my-image.svg';
```
5. Observe: `mySvgUrl` does not have `/my-deploy-url/` prepended to it

### Exception or Error

No error

### Your Environment

```text
Angular CLI : 21.2.2
Angular : 21.2.4
Node.js : 24.8.0
Package Manager : npm 11.6.0
Operating System : darwin arm64

┌───────────────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────────────┼───────────────────┼───────────────────┤
│ @angular/animations │ 21.2.4 │ 21.2.4 │
│ @angular/build │ 21.2.2 │ 21.2.2 │
│ @angular/cdk │ 21.2.2 │ 21.2.2 │
│ @angular/cli │ 21.2.2 │ 21.2.2 │
│ @angular/common │ 21.2.4 │ 21.2.4 │
│ @angular/compiler │ 21.2.4 │ 21.2.4 │
│ @angular/compiler-cli │ 21.2.4 │ 21.2.4 │
│ @angular/core │ 21.2.4 │ 21.2.4 │
│ @angular/elements │ 21.2.4 │ 21.2.4 │
│ @angular/forms │ 21.2.4 │ 21.2.4 │
│ @angular/localize │ 21.2.4 │ 21.2.4 │
│ @angular/platform-browser │ 21.2.4 │ 21.2.4 │
│ @angular/platform-browser-dynamic │ 21.2.4 │ 21.2.4 │
│ @angular/router │ 21.2.4 │ 21.2.4 │
│ rxjs │ 7.8.2 │ 7.8.2 │
│ typescript │ 5.9.3 │ 5.9.3 │
│ vitest │ 4.0.18 │ 4.0.18 │
│ zone.js │ 0.16.0 │ 0.16.0 │
└───────────────────────────────────┴───────────────────┴───────────────────┘
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par esbuild application builder et sa gestion de file-loader, en utilisant angular.json et la commande reproduite `ng build --deploy-url=/my-deploy-url/` comme points d’entrée. Vérifiez comment une URL SVG importée est générée et comparez-la au comportement attendu de la deploy URL ; le travail est terminé lorsque l’URL du fichier importé inclut la deploy URL configurée sans workarounds à l’exécution.

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

Évaluation

Stack technique
angular, typescript
Domaine
build-system, cli
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

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