VuePress is a minimalistic Vue.js-based documentation generator with component layout system and extensive plugin architecture.
npx @tessl/cli install tessl/npm-vuepress@1.9.0VuePress is a minimalistic Vue.js-based documentation generator that provides comprehensive functionality for building and serving documentation sites. It features Vue component-based layout systems, markdown processing with custom containers, theming, and an extensive plugin architecture for creating rich, interactive documentation.
npm install vuepressconst { createApp, dev, build, eject, version } = require("vuepress");For ES modules:
import { createApp, dev, build, eject, version } from "vuepress";const { createApp, dev, build } = require("vuepress");
// Create a VuePress application
const app = createApp({
sourceDir: "./docs",
plugins: [
["@vuepress/plugin-blog"],
],
themeConfig: {
nav: [
{ text: "Home", link: "/" },
{ text: "Guide", link: "/guide/" },
],
},
});
// Development server
async function startDev() {
await dev({
sourceDir: "./docs",
theme: "@vuepress/theme-default",
});
}
// Production build
async function buildSite() {
await build({
sourceDir: "./docs",
dest: "./dist",
});
}VuePress is built around several key components:
Main entry point functions for creating and operating VuePress applications.
/**
* Creates a VuePress application instance
* @param options - Application configuration options
* @returns App instance
*/
function createApp(options: AppOptions): App;
/**
* Starts development server with hot module replacement
* @param options - Development server configuration
* @returns Promise resolving to App instance
*/
function dev(options: DevOptions): Promise<App>;
/**
* Builds the site for production
* @param options - Build configuration
* @returns Promise resolving to App instance
*/
function build(options: BuildOptions): Promise<App>;
/**
* Ejects default theme files to local project
* @param dir - Target directory for ejected theme
* @returns Promise
*/
function eject(dir: string): Promise<void>;
/** Package version string */
const version: string;App class providing comprehensive site orchestration, configuration management, and build coordination.
class App {
constructor(options: AppOptions);
/** Process configuration, plugins, and prepare for build/dev */
process(): Promise<void>;
/** Launch development server */
dev(): Promise<App>;
/** Build static site */
build(): Promise<App>;
/** Add page to site */
addPage(options: PageOptions): Promise<void>;
/** Get site data for client */
getSiteData(): SiteData;
/** Get file path within core library */
getLibFilePath(relative: string): string;
}Comprehensive plugin architecture with hooks for customizing every aspect of the build process.
class PluginAPI {
/** Register a plugin */
use(pluginRaw: string | Plugin, pluginOptions?: any): PluginAPI;
/** Initialize all registered plugins */
initialize(): void;
/** Apply synchronous plugin option */
applySyncOption(name: string, ...args: any[]): PluginAPI;
/** Apply asynchronous plugin option */
applyAsyncOption(name: string, ...args: any[]): Promise<void>;
}Page class representing individual documents with frontmatter processing, header extraction, and permalink generation.
class Page {
constructor(options: PageOptions, context: App);
/** Process page content and metadata */
process(options: ProcessOptions): Promise<void>;
/** Serialize page metadata for client */
toJson(): object;
/** Page properties */
readonly title: string;
readonly path: string;
readonly frontmatter: object;
readonly headers: Header[];
}DevProcess and BuildProcess classes providing specialized process management for development server and production builds.
class DevProcess {
constructor(context: App);
/** Prepare development server configuration */
process(): Promise<DevProcess>;
/** Create webpack dev server instance */
createServer(): DevProcess;
/** Start the development server */
listen(callback?: () => void): DevProcess;
}
class BuildProcess {
constructor(context: App);
/** Prepare build configuration */
process(): Promise<void>;
/** Compile and render all pages */
render(): Promise<void>;
}Common types and interfaces used throughout the VuePress API.
interface AppOptions {
sourceDir?: string;
plugins?: PluginConfig[];
theme?: string | ThemeConfig;
temp?: string;
dest?: string;
siteConfig?: SiteConfig;
}
interface SiteConfig {
title?: string;
description?: string;
base?: string;
head?: HeadTag[];
themeConfig?: any;
markdown?: MarkdownConfig;
patterns?: string[];
}