Skip to main content

VuePress Config

About 1 minCookbookVuePressConfigVuePress

Config File

Without any configuration, the VuePress site is pretty minimal. To customize your site, let's first create a .vuepress directory inside your docs directory. This is where all VuePress-specific files will be placed. Your project structure is probably like this:

├─ docs
│  ├─ .vuepress
│  │  └─ config.js
│  └─
├─ .gitignore
└─ package.json

The essential file for configuring a VuePress site is .vuepress/config.js, while TypeScript config file is also supported. You can use .vuepress/config.ts instead to get better types hint for VuePress config.

A basic config file looks like this:

import { defineUserConfig } from "vuepress";
import { hopeTheme } from "vuepress-theme-hope";

export default defineUserConfig({
  // site config
  lang: "en-US",
  title: "Hello VuePress",
  description: "Just playing around",

  // theme
  theme: hopeTheme({
    // theme config


Check out the Config Referenceopen in new window for a full list of VuePress config.

Config Scopes

Site Config

Site config means that, no matter what theme you are using, these configurations are always valid.

As we know, every site should have its own lang, title, description, etc. Thus, VuePress has built-in support for those options.

Theme Config

Theme config will be processed by VuePress theme, so it depends on the theme you are using.

To use vuepress-theme-hope, you should import hopeTheme from it, passing in your theme options and call it, then assign it to theme option.


If you don't specify the theme option of VuePress config, the default theme will be used.

Client Config File

In most cases, the config file is sufficient to configure your VuePress site. However, sometimes users may want to add some client-side code directly. To help with this, VuePress also supports a client config file:

├─ docs
│  ├─ .vuepress
│  │  ├─ client.js   <--- client config file
│  │  └─ config.js   <--- config file
│  └─
├─ .gitignore
└─ package.json

A basic client config file looks like this:

import { defineClientConfig } from "vuepress/client";

export default defineClientConfig({
  enhance({ app, router, siteData }) {},
  setup() {},
  rootComponents: [],


Unlike config file, client config file could not be specified via CLI options.

To learn more about client config file, see Advanced > Cookbook > Usage of Client Configopen in new window