Enabling this may require additional configuration on your hosting platform. For it to work, your server must serve the generated page on requesting the URL (see above table) **without a redirect**.
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:
- 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 scripts in your `package.json`:
```json
{
```json
{
"scripts": {
"docs:build": "vitepress build docs",
"docs:serve": "vitepress serve docs"
}
}
```
}
```
::: tip
## Build and test locally
If your site is to be served at a subdirectory (`https://example.com/subdir/`), then you have to set `'/subdir/'` as the [`base`](../config/app-configs#base) in your `docs/.vitepress/config.js`.
You may run `yarn docs:build` command to build the docs.
:::
```bash
$ yarn docs:build
```
## Build and Test Locally
By default, the build output will be placed at `.vitepress/dist`. You may deploy this `dist` folder to any of your preferred platforms.
- You may run this command to build the docs:
Once you've built the docs, you may test them locally by running `yarn docs:serve` command.
```sh
$ yarn docs:build
```
```bash
$ yarn docs:build
$ yarn docs:serve
```
- Once you've built the docs, you can test them locally by running:
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.
```sh
$ yarn docs:serve
```
You may configure the port of the server by passing `--port` flag as an argument.
The `serve` command will boot up a local static web server that will serve the files from `.vitepress/dist` at `http://localhost:4173`. It's an easy way to check if the production build looks fine in your local environment.
```json
{
- You can configure the port of the server by passing `--port` as an argument.
```json
{
"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:
```bash{13,20,23}
#!/usr/bin/env sh
}
```
# abort on errors
set -e
Now the `docs:serve` method will launch the server at `http://localhost:8080`.
Set up a new project and change these settings using your dashboard:
# if you are deploying to a custom domain
# echo 'www.example.com' > CNAME
- **Build Command:**`yarn docs:build`
- **Output Directory:**`docs/.vitepress/dist`
- **Node Version:**`14` (or above, by default it usually will be 14 or 16, but on Cloudflare Pages the default is still 12, so you may need to [change that](https://developers.cloudflare.com/pages/platform/build-configuration/))
git init
git add -A
git commit -m 'deploy'
::: warning
Don't enable options like _Auto Minify_ for HTML code. It will remove comments from output which have meaning to Vue. You may see hydration mismatch errors if they get removed.
:::
# if you are deploying to https://<USERNAME>.github.io
# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git main
## GitHub Pages
# if you are deploying to https://<USERNAME>.github.io/<REPO>
1. Create a file named `deploy.yml` inside `.github/workflow` directory of your project with the following content:
::: tip
You can also run the above script in your CI setup to enable automatic deployment on each push.
:::
## GitHub Pages and Travis CI
```yaml
name: Deploy
1. Set the correct `base` in `docs/.vitepress/config.js`.
on:
push:
branches:
- main
If you are deploying to `https://<USERNAME or GROUP>.github.io/`, you can omit `base` as it defaults to `'/'`.
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 16
cache: yarn
- run: yarn install --frozen-lockfile
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>/'`.
- name: Build
run: yarn docs:build
2. Create a file named `.travis.yml` in the root of your project.
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/.vitepress/dist
```
3. Run `yarn` or `npm install` locally and commit the generated lockfile (that is `yarn.lock` or `package-lock.json`).
2. Now commit your code and push it to the `main` branch.
4. Use the GitHub Pages deploy provider template, and follow the [Travis CI documentation](https://docs.travis-ci.com/user/deployment/pages).
3. Wait for actions to complete. Then select `gh-pages` branch as GitHub Pages source in your repository settings. Now your docs will automatically deploy each time you push.
```yaml
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
## GitLab Pages and GitLab CI
### Using 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>/'`.
If you are deploying to `https://<USERNAME or GROUP>.gitlab.io/<REPO>/` (your repository is at `https://gitlab.com/<USERNAME>/<REPO>`), then set `base` to `'/<REPO>/'`.
2. Set `outDir` in `.vitepress/config.js` to `../public`.
2. Set `outDir` in `docs/.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:
```yaml
image: node:16
pages:
```yaml
image: node:16
pages:
cache:
paths:
- node_modules/
script:
- yarn install # npm install
- yarn docs:build # npm run docs:build
- yarn install
- yarn docs:build
artifacts:
paths:
- public
only:
- main
```
## Netlify
```
1. On [Netlify](https://www.netlify.com/), setup up a new project from GitHub with the following settings:
## Azure Static Web Apps
- **Build Command:**`vitepress build docs` or `yarn docs:build` or `npm run docs:build`
- **Publish directory:**`docs/.vitepress/dist`
1. Follow the [official documentation](https://docs.microsoft.com/en-us/azure/static-web-apps/build-configuration).
2. Hit the deploy button.
2. Set these values in your configuration file (and remove the ones you don't require, like `api_location`):
## Google Firebase
- **`app_location`**: `/`
- **`output_location`**: `docs/.vitepress/dist`
- **`app_build_command`**: `yarn docs:build`
1. Make sure you have [firebase-tools](https://www.npmjs.com/package/firebase-tools) installed.
## Firebase
2. Create `firebase.json` and `.firebaserc` at the root of your project with the following content:
1. Create `firebase.json` and `.firebaserc` at the root of your project:
`firebase.json`:
`firebase.json`:
```json
{
```json
{
"hosting": {
"public": "./docs/.vitepress/dist",
"public": "docs/.vitepress/dist",
"ignore": []
}
}
```
}
```
`.firebaserc`:
`.firebaserc`:
```js
{
```json
{
"projects": {
"default": "<YOUR_FIREBASE_ID>"
}
}
```
}
```
3. After running `yarn docs:build` or `npm run docs:build`, deploy using the command `firebase deploy`.
2. After running `yarn docs:build`, run this command to deploy:
## Surge
```sh
firebase deploy
```
1. First install [surge](https://www.npmjs.com/package/surge), if you haven’t already.
2. Run `yarn docs:build` or `npm run docs:build`.
## Surge
3. Deploy to surge by typing `surge docs/.vitepress/dist`.
1. After running `yarn docs:build`, run this command to deploy:
You can also deploy to a [custom domain](https://surge.sh/help/adding-a-custom-domain) by adding `surge docs/.vitepress/dist yourdomain.com`.
1. Follow documentation and guide given in [`heroku-buildpack-static`](https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-static).
```bash
# publish site
$ git push heroku main
2. Create a file called `static.json` in the root of your project with the below content:
# opens a browser to view the Dashboard version of Heroku CI
$ heroku open
```
## Vercel
To deploy your VitePress app with a [Vercel for Git](https://vercel.com/docs/concepts/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`
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
```json
{
"root": "docs/.vitepress/dist"
}
```
## Layer0
See [Creating and Deploying a VitePress App with Layer0](https://docs.layer0.co/guides/vitepress).
## Cloudflare Pages
1. Go to [Cloudflare dashboard](https://dash.cloudflare.com/) > 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.
:::
Refer [Creating and Deploying a VitePress App with Layer0](https://docs.layer0.co/guides/vitepress).
@ -388,6 +388,48 @@ You can also use a [VS Code region](https://code.visualstudio.com/docs/editor/co
<!--lint enable strong-marker-->
## Markdown File Inclusion
You can include a markdown file in another markdown file like this:
**Input**
```md
# Docs
## Basics
<!--@include: ./parts/basics.md-->
```
**Part file** (`parts/basics.md`)
```md
Some getting started stuff.
### Configuration
Can be created using `.foorc.json`.
```
**Equivalent code**
```md
# Docs
## Basics
Some getting started stuff.
### Configuration
Can be created using `.foorc.json`.
```
::: warning
Note that this does not throw errors if your file is not present. Hence, when using this feature make sure that the contents are being rendered as expected.
:::
## Advanced Configuration
VitePress uses [markdown-it](https://github.com/markdown-it/markdown-it) as the Markdown renderer. A lot of the extensions above are implemented via custom plugins. You can further customize the `markdown-it` instance using the `markdown` option in `.vitepress/config.js`:
@ -4,7 +4,7 @@ The Nav is the navigation bar displayed on top of the page. It contains the site
## Site Title and Logo
By default, nav shows the title of the site refferencing [`config.title`](../config/app-configs.html#title) value. If you would like to change what's displayed on nav, you may define custom text in `themeConfig.siteTitle` option.
By default, nav shows the title of the site refferencing [`config.title`](../config/app-configs#title) value. If you would like to change what's displayed on nav, you may define custom text in `themeConfig.siteTitle` option.
```js
export default {
@ -114,7 +114,7 @@ export default {
### Customize link's "active" state
Nav menu items will be highlighted when the current page is under the matching path. if you would like to customize the path to be mathced, define `activeMatch` property and regex as a string value.
Nav menu items will be highlighted when the current page is under the matching path. if you would like to customize the path to be matched, define `activeMatch` property and regex as a string value.
@ -60,9 +60,9 @@ The above will display a team member in card looking element. It should display
<VPTeamMemberssize="small":members="members"/>
`<VPTeamMembers>` component comes in 2 different sizes, `small` and `medium`. While it boiles down to your preference, usually `small` size should fit better when used in doc page. Also, you may add more properties to each member such as adding "description" or "sponsor" button. Learn more about it in [`<VPTeamMembers>`](#vpteammembers).
`<VPTeamMembers>` component comes in 2 different sizes, `small` and `medium`. While it boils down to your preference, usually `small` size should fit better when used in doc page. Also, you may add more properties to each member such as adding "description" or "sponsor" button. Learn more about it in [`<VPTeamMembers>`](#vpteammembers).
Embbeding team members in doc page is good for small size team where having dedicated full team page might be too much, or introducing partial members as a refference to documenation context.
Embbeding team members in doc page is good for small size team where having dedicated full team page might be too much, or introducing partial members as a reference to documentation context.
If you have large number of members, or simply would like to have more space to show team members, consider [creating a full team page](#create-a-full-team-page).
@ -217,7 +217,7 @@ interface TeamMember {
## `<VPTeamPage>`
The root component when creating a full team page. It only accepts a single slot. It's will style all passed in team related components.
The root component when creating a full team page. It only accepts a single slot. It will style all passed in team related components.