### Apache Airflow version

main (development)

### What happened

asset compilation background thread is not killed when running `stop_airflow`  or `breeze stop`.

Webpack process takes a lot of memory, each `start-airflow` starts 4-5 of them.

After a few breeze start, we end up with 15+ webpack background processes that takes more than 20G RAM

### What you think should happen instead

`run_compile_www_assets` should stop when running `stop_airflow` from tmux. It looks like it spawn a `compile-www-assets-dev` pre-commit in a subprocess, that doesn't get killed when stopping breeze

### How to reproduce

```
breeze start-airflow --backend postgres --python 3.8 --dev-mode
# Wait for tmux session to start
breeze_stop

breeze start-airflow --backend postgres --python 3.8 --dev-mode
# Wait for tmux session to start
breeze_stop

# do a couple more if needed
```

Open tmux and monitor your memory, and specifically webpack processes.

### Operating System

Ubuntu 20.04.6 LTS

### Versions of Apache Airflow Providers

_No response_

### Deployment

Other

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

run_in_background: bool,
):
    if dev:
        get_console().print("\n[warning] The command below will run forever until you press Ctrl-C[/]\n")
        get_console().print(
            "\n[info]If you want to see output of the compilation command,\n"
            "[info]cancel it, go to airflow/www folder and run 'yarn dev'.\n"
            "[info]However, it requires you to have local yarn installation.\n"
        )
    command_to_execute = [
        sys.executable,
        "-m",
        "pre_commit",
        "run",
        "--hook-stage",
        "manual",
        "compile-www-assets-dev" if dev else "compile-www-assets",
        "--all-files",
        "--verbose",
    ]
    get_console().print(
        "[info]The output of the asset compilation is stored in: [/]"
        f"{WWW_ASSET_OUT_DEV_MODE_FILE if dev else WWW_ASSET_OUT_FILE}\n"
    )
    if run_in_background:
        thread = Thread(daemon=True, target=_run_compile_internally, args=(command_to_execute, dev))
        thread.start()
    else:
        return _run_compile_internally(command_to_execute, dev)