Angular v11 から HMR(Hot Module Replacement) が利用できるようになった。
ng serve --hmr
とフラッグをつけるだけなので、設定が非常に簡単。
環境ごとに区別したい場合は、npm script を用意したり、新しい環境を用意すればいい。
しかし、Lazy load を利用している場合、アプリケーション全体が再起動してしまう。
Lazy loaded code triggers the whole app reinitialization
(Lazy load したコードはアプリケーション全体の再起動を引き起こす)
Watch Out When Using HMR With Angular | by Colton | The Crazy Coder | Medium
ほとんどの大規模アプリケーションでは、パフォーマンス向上のために Lazyload を利用していると思うので、これはちょっと辛い…。
どうやら、Lazyload 対応を自前で実装しているケースもあるっぽい。
が、コードを見るとちょっと複雑なことをしていそう。
個人的な結論としては、いったん HMR は見送ることにしました。