Firebase hosting is the best hosting to use to deploy your angular app or react app.
Kubernetes Installed. Below command helps you to create an Angular application. Now go inside the hello-world directory and run the local server using below command. Run the below command which creates the dist folder in your root directory.
Simple answer. Use the Angular CLI and issue the
ng build
command in the root directory of your project. The site will be created in the dist directory and you can deploy that to any web server.
This will build for test, if you have production settings in your app you should use
ng build --configuration production
This will build the project in the dist
directory and this can be pushed to the server.
Much has happened since I first posted this answer. The CLI is finally at a 1.0.0 so following this guide go upgrade your project should happen before you try to build. https://github.com/angular/angular-cli/wiki/stories-rc-update
You are actually here touching two questions in one.
The first one is How to host your application?.
And as @toskv mentioned its really too broad question to be answered and depends on numerous different things.
The second one is How do you prepare the deployment version of the application?.
You have several options here:
Deploy using special bundling tools, like webpack
or systemjs
builder.
They come with all the possibilities that are lacking in #1.
You can pack all your app code into just a couple of js/css/... files that you reference in your HTML. systemjs
builder even allows you to get rid of the need to include systemjs
as part of your deployment package.
You can use ng deploy
as of Angular 8 to deploy your app from your CLI. ng deploy
will need to be used in conjunction with your platform of choice (such as @angular/fire
). You can check the official docs to see what works best for you here
Yes you will most likely need to deploy systemjs
and bunch of other external libraries as part of your package. And yes you will be able to bundle them into just couple of js files you reference from your HTML page.
You do not have to reference all your compiled js files from the page though - systemjs
as a module loader will take care of that.
I know it sounds muddy - to help get you started with the #2 here are two really good sample applications:
SystemJS builder: angular2 seed
WebPack: angular2 webpack starter
With the Angular CLI it's easy. An example for Heroku:
Create a Heroku account and install the CLI
Move the angular-cli
dep to the dependencies
in package.json
(so that it gets installed when you push to Heroku.
Add a postinstall
script that will run ng build
when the code gets pushed to Heroku. Also add a start command for a Node server that will be created in the following step. This will place the static files for the app in a dist
directory on the server and start the app afterward.
"scripts": {
// ...
"start": "node server.js",
"postinstall": "ng build --aot -prod"
}
// server.js
const express = require('express');
const app = express();
// Run the app by serving the static files
// in the dist directory
app.use(express.static(__dirname + '/dist'));
// Start the app by listening on the default
// Heroku port
app.listen(process.env.PORT || 8080);
heroku create
git add .
git commit -m "first deploy"
git push heroku master
Here's a quick writeup I did that has more detail, including how to force requests to use HTTPS and how to handle PathLocationStrategy
:)
I use with forever:
ng build --prod --output-path ./dist
Create server.js file in your Angular application path:
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(__dirname + '/dist'));
app.get('/*', function(req,res) {
res.sendFile(path.join(__dirname + '/dist/index.html'));
});
app.listen(80);
Start forever forever start server.js
That's all! your application should be running!
If You test app like me on localhost or You will have some problems with blank white page i use this:
ng build --prod --build-optimizer --base-href="http://127.0.0.1/my-app/"
Explanation:
ng build
Build app but in code there is many spaces, tabs and other stuff what makes code able be read by human. For server it isnt important how code looks. This is why i use:
ng build --prod --build-optimizer
This make code out for production and reduce size [--build-optimizer
] allow to reduce more code].
So at end i add --base-href="http://127.0.0.1/my-app/"
to show application where is 'main frame' [in simple words]. With it You can have even multiple angular apps in any folder.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With