Angular

Deploy your Angular app

ng build produces static files either way, but exactly where it puts them changed with Angular 17's new esbuild-based application builder — worth checking before you point the CLI at the wrong folder.

steps
  1. 01

    Build the app

    Run "ng build" (or "npm run build"). Angular compiles and minifies the project into static output — no dev server, no watch mode.

  2. 02

    Check which output layout you have

    Angular 17 and newer (application builder): output lands in "dist/<project-name>/browser". Angular 16 and older: it's directly in "dist/<project-name>". Look for the folder that has an index.html at its top.

  3. 03

    Deploy it

    Run "npx harvis deploy dist/<project-name>/browser" from your project root. No config and no login for this first deploy — you get a live URL immediately, plus a private claim link to attach the site to a free account whenever you're ready.

Deploy Angular with one command

Build your project, then hand the output folder to harvis. No account needed for the first deploy — you'll get a live link and a private claim link to manage it later.

terminal
ng build
npx harvis deploy dist/<project-name>/browser

Prefer dragging files instead of a terminal? Build the project, then drop the output folder here and publish it the same way.

git hook

Deploy Angular on every git push

The command above is one you will run again after every change. A git hook runs it for you: this one already points at dist/<project-name>/browser, the folder Angular builds into.

The folder holding the finished site. "." is the repo root, which is right for hand-written HTML; a static-site generator writes somewhere else.

pre-push fires on every branch and every remote, so a feature branch would publish over your live site. With this on, a push from anywhere else exits early and goes through untouched.

in your repo root
cat > .git/hooks/pre-push <<'EOF'
#!/bin/sh
set -e
ng build
harvis deploy "dist/<project-name>/browser"
EOF
chmod +x .git/hooks/pre-push

The options, the gotchas and how to share a hook with your team are on the git hook page.

Angular deploy questions

The dist folder doesn't have an index.html at the top — what am I missing?

You're on Angular 17+, where the application builder nests browser output one level deeper for the browser bundle. Look inside "dist/<project-name>/browser" instead of "dist/<project-name>" — that's the folder to deploy.

Does Angular routing (RouterModule) work after deploying?

Yes, for the default hash-free routing strategy — harvis falls back to your index.html for paths it doesn't recognize as files, which is what a direct visit to a deep route needs to resolve.

Is deploying a Angular app to harvis actually free?

Yes, no card required. Free limits are 500 files and 50 MB per site, which covers a static Angular build with plenty of room. Published sites don't expire — they stay live until you delete them.

Can I use my own domain with the deployed Angular site?

Every site gets a free harvis.page address, and you can pick your own subdomain from the dashboard after claiming it — my-app.harvis.page instead of a random one. Pointing a domain you already own (like mystore.com) at the site isn't supported yet.

How is this different from deploying Angular to Vercel or Netlify?

Vercel and Netlify are built around connecting a Git repo and running your build on their servers, with a dashboard to configure it. harvis skips all of that: you build locally (or in your own CI), run one CLI command against the output folder, and get a link — no project setup, and no account needed until you want to keep the site.

other frameworks

Deploying something else?

The recipe is the same everywhere — build it, then npx harvis deploy the output.