My approach:
- www/portal_page/* is dist.
- build a “dist” using any JS framework
- place index.html in www/portal_page/
- edit index.html to link appropriate asset files served from public/js public/css
- place js in public/js, place css in public/css
- add a build.json, just a stub to symlink the directory and make assets available
Example repo (example frappe app + angular app)
- serve bench site http://testportalspa.localhost:8000
- serve angular which proxies to bench for seamless development
- run build script to build dist, copy files and does
bench build
- http://testportalspa.localhost:4200/portal_spa/ serves the www/portal_spa
check README for more.