Vite & Vue powered static site generator with Vue-based theming and markdown processing
npx @tessl/cli install tessl/npm-vitepress@1.6.0VitePress is a Vite & Vue powered static site generator that combines modern development experience with powerful content authoring capabilities. It provides a fast development server with hot module replacement, static site generation for production, Vue-based theming system, and enhanced markdown processing with Vue component support.
npm install vitepressimport { defineConfig, build, createServer, serve } from "vitepress";For client-side usage:
import { useData, useRoute, useRouter, withBase } from "vitepress/client";For theming:
import DefaultTheme from "vitepress/theme";CommonJS (Node.js APIs only):
const { defineConfig, build, createServer, serve } = require("vitepress");// .vitepress/config.ts
import { defineConfig } from "vitepress";
export default defineConfig({
title: "My Documentation Site",
description: "A VitePress powered documentation site",
themeConfig: {
nav: [
{ text: "Guide", link: "/guide/" },
{ text: "API", link: "/api/" }
],
sidebar: {
"/guide/": [
{
text: "Introduction",
items: [
{ text: "Getting Started", link: "/guide/getting-started" },
{ text: "Configuration", link: "/guide/configuration" }
]
}
]
}
}
});
// Build for production
import { build } from "vitepress";
await build();
// Development server
import { createServer } from "vitepress";
const server = await createServer();
await server.listen();VitePress is built around several key components:
defineConfig helpers supporting themes, markdown options, and site metadataType-safe configuration system with helper functions and comprehensive theme configuration options. Supports extending configurations, multi-locale setups, and Vite integration.
function defineConfig<ThemeConfig = any>(
config: UserConfig<ThemeConfig>
): UserConfig<ThemeConfig>;
function resolveConfig(
root?: string,
command?: "serve" | "build",
mode?: string
): Promise<SiteConfig>;
interface UserConfig<ThemeConfig = any> {
extends?: UserConfig<ThemeConfig>;
base?: string;
title?: string;
description?: string;
themeConfig?: ThemeConfig;
markdown?: MarkdownOptions;
vite?: UserConfig;
locales?: LocaleConfig<ThemeConfig>;
}Build system for production static sites and development server with hot reloading. Includes preview server for testing built sites and various build optimization options.
function build(
root?: string,
buildOptions?: BuildOptions
): Promise<void>;
function createServer(
root?: string,
serverOptions?: ServerOptions
): Promise<ViteDevServer>;
function serve(options?: ServeOptions): Promise<void>;
interface BuildOptions {
base?: string;
outDir?: string;
mpa?: boolean;
}Client-side composables and utilities for accessing VitePress runtime data, navigation, and page information. Essential for custom themes and Vue components in markdown.
function useData<T = any>(): VitePressData<T>;
function useRouter(): Router;
function useRoute(): Route;
function withBase(path: string): string;
interface VitePressData<T> {
site: Ref<SiteData<T>>;
page: Ref<PageData>;
theme: Ref<T>;
frontmatter: Ref<Record<string, any>>;
title: Ref<string>;
description: Ref<string>;
isDark: Ref<boolean>;
}Vue-based theming with default theme components, sidebar and navigation management, and comprehensive customization options. Includes composables for theme state and UI components.
interface Theme {
Layout?: Component;
enhanceApp?: (ctx: EnhanceAppContext) => void;
extends?: Theme;
}
interface EnhanceAppContext {
app: App;
router: Router;
siteData: Ref<SiteData>;
}
// Default theme composables
function useSidebar(): DefaultTheme.DocSidebar;
function useLocalNav(): DefaultTheme.DocLocalNav;Enhanced markdown processing with Vue component support, syntax highlighting, custom containers, and frontmatter parsing. Includes extensible plugin system and custom renderers.
function createMarkdownRenderer(
options?: MarkdownOptions,
base?: string,
logger?: Logger
): MarkdownIt;
interface MarkdownOptions {
lineNumbers?: boolean;
config?: (md: MarkdownIt) => void;
theme?: ThemeOptions;
languages?: LanguageInput[];
externalLinks?: Record<string, string>;
}Complete CLI for project initialization, development, building, and preview. Supports various options for customization and deployment workflows.
// CLI commands
vitepress [dev] [root] // Start development server
vitepress build [root] // Build for production
vitepress preview [root] // Preview built site
vitepress init [root] // Initialize new project
// Programmatic CLI access
function init(root?: string): Promise<void>;
function scaffold(options: ScaffoldOptions): string;interface SiteData<ThemeConfig = any> {
base: string;
lang: string;
title: string;
description: string;
head: HeadConfig[];
themeConfig: ThemeConfig;
locales: LocaleConfig<ThemeConfig>;
appearance: boolean | string | object;
router: { prefetchLinks: boolean };
}
interface PageData {
title: string;
description: string;
relativePath: string;
headers: Header[];
frontmatter: Record<string, any>;
lastUpdated?: number;
}
interface Header {
level: number;
title: string;
slug: string;
link: string;
children: Header[];
}
type HeadConfig =
| [string, Record<string, string>]
| [string, Record<string, string>, string];
type LocaleConfig<ThemeConfig = any> = Record<
string,
LocaleSpecificConfig<ThemeConfig> & {
label: string;
link?: string;
}
>;
type Awaitable<T> = T | PromiseLike<T>;