angular / angular-cli

CLI tool for Angular
https://cli.angular.dev
MIT License
26.78k stars 11.98k forks source link

Esbuild builder doesn't copy assets in watch mode #28415

Open PooSham opened 2 months ago

PooSham commented 2 months ago

Command

build

Is this a regression?

The previous version in which this bug was not present was

browser builder (webpack based)

Description

When running ng build --watch with either the build-esbuild or application builder, there is first a build step where everything is copied to the destination folder, including assets, but if a change is made to an asset after the initial bundle, then nothing happens. I'd expect the assets defined in the builders' "assets" option to also be updated during watch mode.

When I try the same in the webpack based "browser" builder, then everything is copied.

Minimal Reproduction

"build": {
    "builder": "@angular-devkit/build-angular:application",
    "options": {
        "assets": ["src/assets"],
        "index": "src/index.html",
        "browser": "src/main.ts",
        "outputPath": "dist",
        "tsConfig": "tsconfig.app.json"
    }
}

Exception or Error

No response

Your Environment

Angular CLI: 18.2.1
Node: 20.12.0
Package Manager: npm 10.5.0
OS: win32 x64

Angular: 18.2.1
... animations, cdk, cli, common, core, elements, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1802.1
@angular-devkit/build-angular   18.2.1
@angular-devkit/core            18.2.1
@angular-devkit/schematics      18.2.1
@schematics/angular             18.2.1
rxjs                            7.8.1
typescript                      5.5.4

Anything else relevant?

I have tried to dive into the Angular CLI source code, and I found that the watcher is given which files to watch here. I think the result comes from here, but it's a bit abstracted away and I can't easily find the source.

PooSham commented 5 days ago

@alan-agius4 Any hope to get this fixed in 19.1, 19.2 or 20? I even pointed to relevant parts of the code under "Anything else relevant", so it should be a pretty quick fix.