Deploying a Static Site

The following guides are based on some shared assumptions:

json

{

  "scripts": {

    "build": "vite build",

    "preview": "vite preview"

  }

}

It is important to note that vite preview is intended for previewing the build locally and not meant as a production server.

NOTE

These guides provide instructions for performing a static deployment of your Vite site. Vite also supports Server Side Rendering. SSR refers to front-end frameworks that support running the same application in Node.js, pre-rendering it to HTML, and finally hydrating it on the client. Check out the SSR Guide to learn about this feature. On the other hand, if you are looking for integration with traditional server-side frameworks, check out the Backend Integration guide instead.

   Building the App

You may run npm run build command to build the app.

bash

$ npm run build

By default, the build output will be placed at dist. You may deploy this dist folder to any of your preferred platforms.

   Testing the App Locally

Once you've built the app, you may test it locally by running npm run preview command.

bash

$ npm run preview

The vite preview command will boot up a local static web server that serves the files from dist at http://localhost:4173. It's an easy way to check if the production build looks OK in your local environment.

You may configure the port of the server by passing the --port flag as an argument.

json

{

  "scripts": {

    "preview": "vite preview --port 8080"

  }

}

Now the preview command will launch the server at http://localhost:8080.

   GitHub Pages

# Simple workflow for deploying static content to GitHub Pages

name: Deploy static content to Pages


on:

  # Runs on pushes targeting the default branch

  push:

    branches: ['main']


  # Allows you to run this workflow manually from the Actions tab

  workflow_dispatch:


# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages

permissions:

  contents: read

  pages: write

  id-token: write


# Allow one concurrent deployment

concurrency:

  group: 'pages'

  cancel-in-progress: true


jobs:

  # Single deploy job since we're just deploying

  deploy:

    environment:

      name: github-pages

      url: ${{ steps.deployment.outputs.page_url }}

    runs-on: ubuntu-latest

    steps:

      - name: Checkout

        uses: actions/checkout@v4

      - name: Set up Node

        uses: actions/setup-node@v4

        with:

          node-version: 20

          cache: 'npm'

      - name: Install dependencies

        run: npm ci

      - name: Build

        run: npm run build

      - name: Setup Pages

        uses: actions/configure-pages@v4

      - name: Upload artifact

        uses: actions/upload-pages-artifact@v3

        with:

          # Upload dist folder

          path: './dist'

      - name: Deploy to GitHub Pages

        id: deployment

        uses: actions/deploy-pages@v4

   GitLab Pages and GitLab CI

image: node:16.5.0

pages:

  stage: deploy

  cache:

    key:

      files:

        - package-lock.json

      prefix: npm

    paths:

      - node_modules/

  script:

    - npm install

    - npm run build

    - cp -a dist/. public/

  artifacts:

    paths:

      - public

  rules:

    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

   Netlify

   Netlify CLI

bash

# Install the Netlify CLI

$ npm install -g netlify-cli


# Create a new site in Netlify

$ ntl init


# Deploy to a unique preview URL

$ ntl deploy

The Netlify CLI will share with you a preview URL to inspect. When you are ready to go into production, use the prod flag:

bash

# Deploy the site into production

$ ntl deploy --prod

   Netlify with Git

After your project has been imported and deployed, all subsequent pushes to branches other than the production branch along with pull requests will generate Preview Deployments, and all changes made to the Production Branch (commonly “main”) will result in a Production Deployment.

   Vercel

  Vercel CLI

bash

$ npm i -g vercel

$ vercel init vite

Vercel CLI

> Success! Initialized "vite" example in ~/your-folder.

- To deploy, `cd vite` and run `vercel`.

   Vercel for Git

After your project has been imported and deployed, all subsequent pushes to branches will generate Preview Deployments, and all changes made to the Production Branch (commonly “main”) will result in a Production Deployment.

Learn more about Vercel’s Git Integration.

   Cloudflare Pages

   Cloudflare Pages via Wrangler

bash

# Install Wrangler CLI

$ npm install -g wrangler


# Login to Cloudflare account from CLI

$ wrangler login


# Run your build command

$ npm run build


# Create new deployment

$ npx wrangler pages deploy dist

After your assets are uploaded, Wrangler will give you a preview URL to inspect your site. When you log into the Cloudflare Pages dashboard, you will see your new project.

   Cloudflare Pages with Git

After your project has been imported and deployed, all subsequent pushes to branches will generate Preview Deployments unless specified not to in your branch build controls. All changes to the Production Branch (commonly “main”) will result in a Production Deployment.

You can also add custom domains and handle custom build settings on Pages. Learn more about Cloudflare Pages Git Integration.

   Google Firebase

{

  "hosting": {

    "public": "dist",

    "ignore": [],

    "rewrites": [

      {

        "source": "**",

        "destination": "/index.html"

      }

    ]

  }

}

{

  "projects": {

    "default": "<YOUR_FIREBASE_ID>"

  }

}

   Surge

You can also deploy to a custom domain by adding surge dist yourdomain.com.

   Azure Static Web Apps

You can quickly deploy your Vite app with Microsoft Azure Static Web Apps service. You need:

Install the extension in VS Code and navigate to your app root. Open the Static Web Apps extension, sign in to Azure, and click the '+' sign to create a new Static Web App. You will be prompted to designate which subscription key to use.

Follow the wizard started by the extension to give your app a name, choose a framework preset, and designate the app root (usually /) and built file location /dist. The wizard will run and will create a GitHub action in your repo in a .github folder.

The action will work to deploy your app (watch its progress in your repo's Actions tab) and, when successfully completed, you can view your app in the address provided in the extension's progress window by clicking the 'Browse Website' button that appears when the GitHub action has run.

   Render

You can deploy your Vite app as a Static Site on Render.

By default, any new commit pushed to the specified branch will automatically trigger a new deployment. Auto-Deploy can be configured in the project settings.

You can also add a custom domain to your project.

   Flightcontrol

Deploy your static site using Flightcontrol by following these instructions.

   Kinsta Static Site Hosting

Deploy your static site using Kinsta by following these instructions.