Deployment#
The development bundle served by ng serve
is not optimized for production.
To get a production-ready bundle, we use the following command:
$ ng build --prod
The resulting bundle is generated in the ./dist
folder.
It is just a set of static files and can be served by any HTTP server.
Let's say we deploy it on http://example.com and we use Nginx to serve the files.
If we visit http://example.com, we will see our home page, and if we click on News
,
we will obtain http://example.com/news thanks to angular-traversal.
But if decide to refresh the page at this point, we will get a 404, because our Nginx server will search for /news/index.html
which does not exist.
So we need to fix our Nginx VHOST to preserve the client-side routing:
location / {
try_files $uri $uri/ /index.html;
}
This way, any existing file (like index.html
, vendor.xxx.bundle.js
, etc.) is served directly, but for anything else, we just return index.html
so the client-side routing will take over.