You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vitepress/docs/guide/deploying.md

8.3 KiB

Deploying

The following guides are based on some shared assumptions:

  • You are placing your docs inside the docs directory of your project;
  • You are using the default build output location (.vitepress/dist);
  • VitePress is installed as a local dependency in your project, and you have setup the following npm scripts:
{
  "scripts": {
    "docs:build": "vitepress build docs",
    "docs:serve": "vitepress serve docs"
  }
}

Build and test locally

You may run yarn docs:build command to build the docs.

$ yarn docs:build

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

Once you've built the docs, you may test them locally by running yarn docs:serve command.

$ yarn docs:build
$ yarn docs:serve

The serve command will boot up local static web server that serves the files from .vitepress/dist at http://localhost:5000. 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 --port flag as an argument.

{
  "scripts": {
    "docs:serve": "vitepress serve docs --port 8080"
  }
}

Now the docs:serve method will launch the server at http://localhost:8080.

GitHub Pages

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME>.github.io/, you can omit base as it defaults to '/'.

    If you are deploying to https://<USERNAME>.github.io/<REPO>/, for example your repository is at https://github.com/<USERNAME>/<REPO>, then set base to '/<REPO>/'.

  2. Inside your project, create deploy.sh with the following content (with highlighted lines uncommented appropriately), and run it to deploy:

#!/usr/bin/env sh

# abort on errors
set -e

# build
npm run docs:build

# navigate into the build output directory
cd docs/.vitepress/dist

# if you are deploying to a custom domain
# echo 'www.example.com' > CNAME

git init
git add -A
git commit -m 'deploy'

# if you are deploying to https://<USERNAME>.github.io
# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main

# if you are deploying to https://<USERNAME>.github.io/<REPO>
# git push -f git@github.com:<USERNAME>/<REPO>.git main:gh-pages

cd -

::: tip You can also run the above script in your CI setup to enable automatic deployment on each push. :::

GitHub Pages and Travis CI

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME or GROUP>.github.io/, you can omit base as it defaults to '/'.

    If you are deploying to https://<USERNAME or GROUP>.github.io/<REPO>/, for example your repository is at https://github.com/<USERNAME>/<REPO>, then set base to '/<REPO>/'.

  2. Create a file named .travis.yml in the root of your project.

  3. Run yarn or npm install locally and commit the generated lockfile (that is yarn.lock or package-lock.json).

  4. Use the GitHub Pages deploy provider template, and follow the Travis CI documentation.

language: node_js
node_js:
  - lts/*
install:
  - yarn install # npm ci
script:
  - yarn docs:build # npm run docs:build
deploy:
  provider: pages
  skip_cleanup: true
  local_dir: docs/.vitepress/dist
  # A token generated on GitHub allowing Travis to push code on you repository.
  # Set in the Travis settings page of your repository, as a secure variable.
  github_token: $GITHUB_TOKEN
  keep_history: true
  on:
    branch: main

GitLab Pages and GitLab CI

  1. Set the correct base in docs/.vitepress/config.js.

    If you are deploying to https://<USERNAME or GROUP>.gitlab.io/, you can omit base as it defaults to '/'.

    If you are deploying to https://<USERNAME or GROUP>.gitlab.io/<REPO>/, for example your repository is at https://gitlab.com/<USERNAME>/<REPO>, then set base to '/<REPO>/'.

  2. Set outDir in .vitepress/config.js to ../public.

  3. Create a file called .gitlab-ci.yml in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content:

image: node:16
pages:
  cache:
    paths:
      - node_modules/
  script:
    - yarn install # npm install
    - yarn docs:build # npm run docs:build
  artifacts:
    paths:
      - public
  only:
    - main

Netlify

  1. On Netlify, setup up a new project from GitHub with the following settings:
  • Build Command: vitepress build docs or yarn docs:build or npm run docs:build
  • Publish directory: docs/.vitepress/dist
  1. Hit the deploy button.

Google Firebase

  1. Make sure you have firebase-tools installed.

  2. Create firebase.json and .firebaserc at the root of your project with the following content:

firebase.json:

{
  "hosting": {
    "public": "./docs/.vitepress/dist",
    "ignore": []
  }
}

.firebaserc:

{
 "projects": {
   "default": "<YOUR_FIREBASE_ID>"
 }
}
  1. After running yarn docs:build or npm run docs:build, deploy using the command firebase deploy.

Surge

  1. First install surge, if you havent already.

  2. Run yarn docs:build or npm run docs:build.

  3. Deploy to surge by typing surge docs/.vitepress/dist.

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

Heroku

  1. Install Heroku CLI.

  2. Create a Heroku account by signing up.

  3. Run heroku login and fill in your Heroku credentials:

$ heroku login
  1. Create a file called static.json in the root of your project with the below content:

static.json:

{
  "root": "./docs/.vitepress/dist"
}

This is the configuration of your site; read more at heroku-buildpack-static.

  1. Set up your Heroku git remote:
# version change
$ git init
$ git add .
$ git commit -m "My site ready for deployment."

# creates a new app with a specified name
$ heroku apps:create example

# set buildpack for static sites
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-static.git
  1. Deploy your site:
# publish site
$ git push heroku main

# opens a browser to view the Dashboard version of Heroku CI
$ heroku open

Vercel

To deploy your VitePress app with a Vercel for Git, make sure it has been pushed to a Git repository.

Go to https://vercel.com/new and import the project into Vercel using your Git of choice (GitHub, GitLab or BitBucket). Follow the wizard to select the project root with the project's package.json and override the build step using yarn docs:build or npm run docs:build and the output dir to be ./docs/.vitepress/dist

Override Vercel Configuration

After your project has been imported, 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.

Once deployed, you will get a URL to see your app live, such as the following: https://vitepress.vercel.app

Layer0

See Creating and Deploying a VitePress App with Layer0.

Cloudflare Pages

  1. Go to Cloudflare dashboard > Account Home > Pages and selecting Create a project.
  2. You will see three options, just select first Connect to a git provider.
  3. Click Connect GitHub or Connect GitLab. Then select the repo you want to deploy.
  4. Set up build docs command, like npm run build or npm run docs:build.
  5. Now deploy, you will get a domain like my-project.pages.dev.

::: warning Do not Auto Minify HTML If you want or are using Cloudflare's Auto minify feature, you should not check the html box.

With Auto Minify, Cloudflare will automatically remove the comments in the html file, however, html comments for Vue has meanings. For example, it works as a placeholder for v-if.

If it gets removed, then you will probably see a hydration mismatch error. :::