Deployment
The following guides are based on some shared assumptions:
- You are placing your Markdown source files inside the
docs
directory of your project; - You are using the default build output location (
.vuepress/dist
); - You are using pnpm as package manager, while npm and yarn are also supported;
- VuePress is installed as a local dependency in your project, and you have setup the following script in
package.json
:
{ "scripts": { "docs:build": "vuepress build docs" } }
GitHub Pages
Set the correct base config.
If you are deploying to
https://<USERNAME>.github.io/
, you can omit this step asbase
defaults to"/"
.If you are deploying to
https://<USERNAME>.github.io/<REPO>/
, for example your repository is athttps://github.com/<USERNAME>/<REPO>
, then setbase
to"/<REPO>/"
.Choose your preferred CI tools. Here we take GitHub Actions as an example.
Create
.github/workflows/docs.yml
to set up the workflow.
Click to expand sample config
name: docs on: # trigger deployment on every push to main branch push: branches: [main] # trigger deployment manually workflow_dispatch: jobs: docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: # fetch all commits to get last updated time or other git log info fetch-depth: 0 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: # choose node.js version to use node-version: 22 # cache deps for pnpm cache: pnpm - name: Install deps run: pnpm install --frozen-lockfile # run build script - name: Build VuePress site run: pnpm docs:build # please check out the docs of the workflow for more details # @see https://github.com/crazy-max/ghaction-github-pages - name: Deploy to GitHub Pages uses: crazy-max/ghaction-github-pages@v4 with: # deploy to gh-pages branch target_branch: gh-pages # deploy the default output dir of VuePress build_dir: docs/.vuepress/dist env: # @see https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Tips
Please refer to GitHub Pages official guide for more details.
GitLab Pages
Set the correct base config.
If you are deploying to
https://<USERNAME>.gitlab.io/
, you can omitbase
as it defaults to"/"
.If you are deploying to
https://<USERNAME>.gitlab.io/<REPO>/
, for example your repository is athttps://gitlab.com/<USERNAME>/<REPO>
, then setbase
to"/<REPO>/"
.Create
.gitlab-ci.yml
to set up GitLab CI workflow.
Click to expand sample config
# choose a docker image to use image: node:18-buster pages: # trigger deployment on every push to main branch only: - main # cache node_modules cache: key: files: - pnpm-lock.yaml paths: - .pnpm-store # Install pnpm before_script: - curl -fsSL https://get.pnpm.io/install.sh | sh - - pnpm config set store-dir .pnpm-store # install dependencies and run build script script: - pnpm i --frozen-lockfile - pnpm docs:build --dest public artifacts: paths: - public
Tips
Please refer to GitLab Pages official guide for more details.
Google Firebase
Make sure you have firebase-tools installed.
Create
firebase.json
and.firebaserc
at the root of your project with the following content:
firebase.json
:
{ "hosting": { "public": "./docs/.vuepress/dist", "ignore": [] } }
.firebaserc
:
{ "projects": { "default": "<YOUR_FIREBASE_ID>" } }
- After running
pnpm docs:build
, deploy using the commandfirebase deploy
.
Tips
Please refer to Firebase CLI official guide for more details.
Heroku
Install Heroku CLI.
Create a Heroku account by signing up.
Run
heroku login
and fill in your Heroku credentials:
heroku login
- Create a file called
static.json
in the root of your project with the below content:
static.json
:
{ "root": "./docs/.vuepress/dist" }
This is the configuration of your site; read more at heroku-buildpack-static.
Kinsta
See Set Up VuePress on Kinsta.
Edgio
See Edgio Documentation > Framework Guides > VuePress.
Netlify
On Netlify, set up a new project from GitHub with the following settings:
- Build Command:
pnpm docs:build
- Publish directory:
docs/.vuepress/dist
- Build Command:
Set Environment variables to choose node version:
NODE_VERSION
: 20
Hit the deploy button.
Note
You should disable Pretty URLs in the "Site Configuration" → "Build & Deploy" → "Post processing".
Vercel
Go to Vercel, set up a new project from GitHub with the following settings:
- FRAMEWORK PRESET:
Other
- BUILD COMMAND:
pnpm docs:build
- OUTPUT DIRECTORY:
docs/.vuepress/dist
- FRAMEWORK PRESET:
Hit the deploy button.